PaperController.cs 3.8 KB

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