VolumeController.cs 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. using Microsoft.AspNetCore.Mvc;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using TEAMModelOS.Service.Models.Core;
  8. using TEAMModelOS.Service.Models.Syllabus;
  9. using TEAMModelOS.SDK.Context.Exception;
  10. using TEAMModelOS.SDK.Extension.DataResult.JsonRpcRequest;
  11. using TEAMModelOS.SDK.Extension.DataResult.JsonRpcResponse;
  12. using TEAMModelOS.SDK.Extension.SnowFlake;
  13. using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
  14. using TEAMModelOS.SDK.Helper.Security.ShaHash;
  15. using TEAMModelOS.SDK.Module.AzureCosmosDB.Interfaces;
  16. using TEAMModelOS.Controllers;
  17. using TEAMModelOS.SDK;
  18. using TEAMModelOS.SDK.Module.AzureCosmosDBV3;
  19. namespace TEAMModelOS.Controllers.Syllabus
  20. {
  21. [Route("api/[controller]")]
  22. [ApiController]
  23. public class VolumeController : BaseController
  24. {
  25. private readonly IAzureCosmosDBV3Repository azureCosmosDBRepository;
  26. public VolumeController(IAzureCosmosDBV3Repository _azureCosmosDBRepository)
  27. {
  28. azureCosmosDBRepository = _azureCosmosDBRepository;
  29. }
  30. /// <summary>
  31. /// 新增册别
  32. /// </summary>
  33. /// <param name="request"></param>
  34. /// <returns></returns>
  35. [HttpPost("SaveOrUpdate")]
  36. public async Task<BaseJosnRPCResponse> SaveOrUpdate(JosnRPCRequest<SyllabusVolume> request)
  37. {
  38. JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
  39. if (request.@params.editors != null && request.@params.editors.Length > 5)
  40. {
  41. throw new BizException("共编人数大于5人!");
  42. }
  43. if (string.IsNullOrEmpty(request.@params.id))
  44. {
  45. if (request.@params.type == 0)
  46. {
  47. List<SyllabusVolume> volumesFind = await azureCosmosDBRepository.FindByDict<SyllabusVolume>(new Dictionary<string, object>() {
  48. { "schoolCode",request.@params.schoolCode},{ "periodCode", request.@params.periodCode},
  49. { "subjectCode", request.@params.subjectCode},{ "gradeCode", request.@params.gradeCode},
  50. { "semesterCode",request.@params.semesterCode},{ "volumeName",request.@params.volumeName} ,
  51. { "status",1} ,{ "type",0} });
  52. if (volumesFind.IsNotEmpty())
  53. {
  54. throw new BizException("已存在!", ResponseCode.DATA_EXIST);
  55. }
  56. ///校本课纲
  57. string key = request.@params.schoolCode + IdWorker.getInstance().NextId();
  58. request.@params.id = key;
  59. request.@params.volumeCode = key;
  60. }
  61. else if (request.@params.type == 1)
  62. {
  63. List<SyllabusVolume> volumesFind = await azureCosmosDBRepository.FindByDict<SyllabusVolume>(new Dictionary<string, object>() {
  64. { "schoolCode",request.@params.schoolCode},{ "periodCode", request.@params.periodCode},
  65. { "subjectCode", request.@params.subjectCode},{ "gradeCode", request.@params.gradeCode},
  66. { "semesterCode",request.@params.semesterCode},{ "volumeName",request.@params.volumeName},
  67. { "TEAMModelId",request.@params.TEAMModelId}, { "status",1} ,{ "type",1} });
  68. if (volumesFind.IsNotEmpty())
  69. {
  70. throw new BizException("已存在!", ResponseCode.DATA_EXIST);
  71. }
  72. ///个人课纲
  73. string key = "dynamic" + request.@params.TEAMModelId.Replace("#", "") + IdWorker.getInstance().NextId();
  74. request.@params.id = key;
  75. request.@params.volumeCode = key;
  76. }
  77. else if (request.@params.type == 2)
  78. {
  79. ///系统课纲
  80. string key = "system" + IdWorker.getInstance().NextId();
  81. request.@params.schoolCode = "system";
  82. request.@params.id = key;
  83. request.@params.volumeCode = key;
  84. }
  85. }
  86. else {
  87. if (request.@params.type == 0)
  88. {
  89. List<SyllabusVolume> volumesFind = await azureCosmosDBRepository.FindByDict<SyllabusVolume>(new Dictionary<string, object>() {
  90. { "schoolCode",request.@params.schoolCode},{ "periodCode", request.@params.periodCode},
  91. { "subjectCode", request.@params.subjectCode},{ "gradeCode", request.@params.gradeCode},
  92. { "semesterCode",request.@params.semesterCode},{ "volumeName",request.@params.volumeName} ,
  93. { "status",1} ,{ "type",0} });
  94. if (volumesFind.IsNotEmpty())
  95. {
  96. if (!volumesFind[0].id.Equals(request.@params.id)) {
  97. throw new BizException("已存在!", ResponseCode.DATA_EXIST);
  98. }
  99. }
  100. }
  101. else if (request.@params.type == 1)
  102. {
  103. List<SyllabusVolume> volumesFind = await azureCosmosDBRepository.FindByDict<SyllabusVolume>(new Dictionary<string, object>() {
  104. { "schoolCode",request.@params.schoolCode},{ "periodCode", request.@params.periodCode},
  105. { "subjectCode", request.@params.subjectCode},{ "gradeCode", request.@params.gradeCode},
  106. { "semesterCode",request.@params.semesterCode},{ "volumeName",request.@params.volumeName},
  107. { "TEAMModelId",request.@params.TEAMModelId}, { "status",1} ,{ "type",1} });
  108. if (volumesFind.IsNotEmpty())
  109. {
  110. if (!volumesFind[0].id.Equals(request.@params.id))
  111. {
  112. throw new BizException("已存在!", ResponseCode.DATA_EXIST);
  113. }
  114. }
  115. }
  116. else if (request.@params.type == 2)
  117. {
  118. }
  119. }
  120. List<SyllabusVolume> volumes = new List<SyllabusVolume>
  121. {
  122. request.@params
  123. };
  124. List<SyllabusVolume> volume = await azureCosmosDBRepository.SaveOrUpdateAll<SyllabusVolume>(volumes);
  125. return builder.Data(volume.IsEmpty() ? null : volume[0]).build();
  126. }
  127. /// <summary>
  128. /// 删除册别
  129. /// </summary>
  130. /// <param name="request"></param>
  131. /// <returns></returns>
  132. [HttpPost("Delete")]
  133. public async Task<BaseJosnRPCResponse> Delete(JosnRPCRequest<SyllabusVolume> request)
  134. {
  135. JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
  136. bool flag = false;
  137. if (!string.IsNullOrEmpty(request.@params.id))
  138. {
  139. //if (request.@params.type == 0)
  140. //{
  141. request.@params.status = 0;
  142. List<SyllabusVolume> volumes = new List<SyllabusVolume>
  143. {
  144. request.@params
  145. };
  146. await azureCosmosDBRepository.SaveOrUpdateAll<SyllabusVolume>(volumes);
  147. flag = true;
  148. //}
  149. //else
  150. //{
  151. // await azureCosmosDBRepository.DeleteAsync<Volume>(request.@params.id, request.@params.schoolCode);
  152. // await azureCosmosDBRepository.DeleteAll<SyllabusNode>(new Dictionary<string, object>() { { "volumeCode", request.@params.id } });
  153. // flag = true;
  154. //}
  155. }
  156. return builder.Data(flag).build();
  157. }
  158. /// <summary>
  159. /// 查找册别
  160. /// </summary>
  161. /// <param name="request"></param>
  162. /// <returns></returns>
  163. [HttpPost("Find")]
  164. public async Task<BaseJosnRPCResponse> Find(JosnRPCRequest<Dictionary<string, object>> request)
  165. {
  166. JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
  167. List<SyllabusVolume> volumes ;
  168. if (request.@params.TryGetValue("schoolCode", out _))
  169. {
  170. volumes = await azureCosmosDBRepository.FindByDict<SyllabusVolume>(request.@params);
  171. }
  172. else
  173. {
  174. throw new BizException("schoolCode is null!");
  175. }
  176. return builder.Data(volumes).build();
  177. }
  178. }
  179. }