PaperController.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. using Microsoft.AspNetCore.Mvc;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text.Json;
  6. using System.Threading.Tasks;
  7. using TEAMModelOS.SDK;
  8. using TEAMModelOS.SDK.DI;
  9. using TEAMModelOS.Service.Models;
  10. namespace TEAMModelOS.Controllers
  11. {
  12. [Route("api/[controller]")]
  13. [ApiController]
  14. public class PaperController: BaseController
  15. {
  16. private readonly SnowflakeId _snowflakeId;
  17. private readonly AzureCosmosFactory _azureCosmos;
  18. public PaperController(AzureCosmosFactory azureCosmos, SnowflakeId snowflakeId)
  19. {
  20. _azureCosmos = azureCosmos;
  21. _snowflakeId = snowflakeId;
  22. }
  23. /// <summary>
  24. /// 删除
  25. /// </summary>
  26. /// <param name="request"></param>
  27. /// <returns></returns>
  28. [HttpPost("delete")]
  29. public async Task<BaseResponse> Delete(IdPk request)
  30. {
  31. ResponseBuilder builder = ResponseBuilder.custom();
  32. IdPk items = await _azureCosmos.DeleteAsync<Paper>(request.id, request.pk);
  33. return builder.Data(items).build();
  34. }
  35. /// <summary>
  36. /// 查询试卷摘要信息
  37. /// </summary>
  38. /// <param name="request"></param>
  39. /// <returns></returns>
  40. [HttpPost("findSummary")]
  41. public async Task<BaseResponse> findSummary(JsonElement request)
  42. {
  43. ResponseBuilder builder = ResponseBuilder.custom();
  44. //Dictionary<string, object> dict = new Dictionary<string, object>();
  45. int keys = 0;
  46. var emobj = request.EnumerateObject();
  47. while (emobj.MoveNext())
  48. {
  49. keys++;
  50. //dict[emobj.Current.Name] = emobj.Current.Value;
  51. }
  52. List<string> props = new List<string> {
  53. "subjectCode", "id", "code", "periodCode",
  54. "name","itemCount","level","pointItem","pointScore","score", "gradeCode"
  55. };
  56. if (keys > 0)
  57. {
  58. return builder.Data(await _azureCosmos.FindByDict<Paper>(request, propertys: props)).build();
  59. }
  60. else {
  61. return builder.build();
  62. }
  63. }
  64. /// <summary>
  65. /// 查询试卷
  66. /// </summary>
  67. /// <param name="request"></param>
  68. /// <returns></returns>
  69. [HttpPost("find")]
  70. public async Task<BaseResponse> Find(JsonElement request)
  71. {
  72. ResponseBuilder builder = ResponseBuilder.custom();
  73. //Dictionary<string, object> dict = new Dictionary<string, object>();
  74. var emobj = request.EnumerateObject();
  75. int keys = 0;
  76. while (emobj.MoveNext())
  77. {
  78. keys++;
  79. //dict[emobj.Current.Name] = emobj.Current.Value;
  80. }
  81. if (keys > 0) {
  82. return builder.Data(await _azureCosmos.FindByDict<Paper>(request)).build();
  83. }
  84. else
  85. {
  86. return builder.build();
  87. }
  88. }
  89. /// <summary>
  90. /// 保存试卷
  91. /// </summary>
  92. /// <param name="request"></param>
  93. /// <returns></returns>
  94. [HttpPost("upsert")]
  95. public async Task<BaseResponse> Upsert(Paper request)
  96. {
  97. ResponseBuilder builder = ResponseBuilder.custom();
  98. if (string.IsNullOrEmpty(request.id))
  99. {
  100. request.id = _snowflakeId.NextId() + "";
  101. request.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
  102. await _azureCosmos.SaveOrUpdate(request);
  103. }
  104. else
  105. {
  106. await _azureCosmos.SaveOrUpdate(request);
  107. }
  108. return builder.Data(request).build();
  109. }
  110. }
  111. }