LearnController.cs 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. using Microsoft.AspNetCore.Mvc;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text.Json;
  5. using System.Threading.Tasks;
  6. using TEAMModelOS.Models.StudentInfo;
  7. using TEAMModelOS.Models.TeacherInfo;
  8. using TEAMModelOS.SDK;
  9. using TEAMModelOS.SDK.Context.Constant.Common;
  10. using TEAMModelOS.SDK.DI;
  11. using TEAMModelOS.SDK.Helper.Common.StringHelper;
  12. using TEAMModelOS.SDK.Helper.Common.ValidateHelper;
  13. namespace TEAMModelOS.Controllers.Learn
  14. {
  15. /// <summary>
  16. /// 学习活动
  17. /// </summary>
  18. [Route("api/[controller]")]
  19. [ApiController]
  20. public class LearnController: BaseController
  21. {
  22. private readonly SnowflakeId _snowflakeId;
  23. private readonly AzureCosmosFactory _azureCosmos;
  24. private readonly AzureServiceBusFactory _serviceBus;
  25. public LearnController(AzureCosmosFactory azureCosmos, AzureServiceBusFactory serviceBus, SnowflakeId snowflakeId)
  26. {
  27. _snowflakeId = snowflakeId;
  28. _serviceBus = serviceBus;
  29. _azureCosmos = azureCosmos;
  30. }
  31. /// <summary>
  32. /// 保存或更新学习任务
  33. /// </summary>
  34. /// <param name="request"></param>
  35. /// <returns></returns>
  36. [HttpPost("upsertTask")]
  37. public async Task<BaseResponse> UpsertTask(LearnTask request)
  38. {
  39. ResponseBuilder builder = ResponseBuilder.custom();
  40. if (request.createTime <= 0) {
  41. request.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
  42. }
  43. if (request.endTime > 0) {
  44. //设定结束时间
  45. string msgEndId = _snowflakeId.NextId()+"";
  46. await _serviceBus.GetServiceBusClient().SendLeamMessage<LearnTask>(Constants.TopicName, request.id, request.code, request.endTime, 300, msgEndId);
  47. }
  48. await _azureCosmos.Save(request);
  49. return builder.Data(request).build();
  50. }
  51. /// <summary>
  52. /// 查询学习任务
  53. /// </summary>
  54. /// <param name="request"></param>
  55. /// <returns></returns>
  56. [HttpPost("findTask")]
  57. public async Task<BaseResponse> FindTask(JsonElement request)
  58. {
  59. ResponseBuilder builder = ResponseBuilder.custom();
  60. if (request.TryGetProperty("id",out _) || request.TryGetProperty("code",out _))
  61. {
  62. List<LearnTask> tasks = await _azureCosmos.FindByDict<LearnTask>(request);
  63. return builder.Data(tasks).build();
  64. }
  65. else {
  66. return builder.Error(ResponseCode.PARAMS_ERROR, "参数异常!").build();
  67. }
  68. }
  69. /// <summary>
  70. /// 删除学习任务
  71. /// </summary>
  72. /// <param name="request"></param>
  73. /// <returns></returns>
  74. [HttpPost("deleteTask")]
  75. public async Task<BaseResponse> DeleteTask(IdPk request)
  76. {
  77. ResponseBuilder builder = ResponseBuilder.custom();
  78. return builder.Data(await _azureCosmos.DeleteAsync<LearnTask>(request)).build();
  79. }
  80. /// <summary>
  81. /// 保存或更新学习单元单元
  82. /// </summary>
  83. /// <param name="request"></param>
  84. /// <returns></returns>
  85. [HttpPost("upsertUnit")]
  86. public async Task<BaseResponse> UpsertUnit(LearnUnit request)
  87. {
  88. ResponseBuilder builder = ResponseBuilder.custom();
  89. if (string.IsNullOrEmpty(request.id))
  90. {
  91. request.id = _snowflakeId.NextId() + "";
  92. request.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
  93. await _azureCosmos.Save(request);
  94. }
  95. else
  96. {
  97. await _azureCosmos.Update(request);
  98. }
  99. return builder.Data(request).build();
  100. }
  101. /// <summary>
  102. /// 查询学习单元
  103. /// </summary>
  104. /// <param name="request"></param>
  105. /// <returns></returns>
  106. [HttpPost("findUnit")]
  107. public async Task<BaseResponse> FindUnit(JsonElement request)
  108. {
  109. ResponseBuilder builder = ResponseBuilder.custom();
  110. if (StringHelper.getKeyCount(request) > 0)
  111. {
  112. return builder.Data(await _azureCosmos.FindByDict<LearnUnit>(request)).build();
  113. }
  114. else {
  115. return builder.build();
  116. }
  117. }
  118. /// <summary>
  119. /// 删除学习单元
  120. /// </summary>
  121. /// <param name="request"></param>
  122. /// <returns></returns>
  123. [HttpPost("deleteUnit")]
  124. public async Task<BaseResponse> DeleteUnit(IdPk request)
  125. {
  126. ResponseBuilder builder = ResponseBuilder.custom();
  127. return builder.Data(await _azureCosmos.DeleteAsync<LearnUnit>(request)).build();
  128. }
  129. /// <summary>
  130. /// 保存或新增编序学习活动
  131. /// </summary>
  132. /// <param name="request"></param>
  133. /// <returns></returns>
  134. [HttpPost("upsertProcess")]
  135. public async Task<BaseResponse> UpsertProcess(LearnProcess request) {
  136. ResponseBuilder builder = ResponseBuilder.custom();
  137. if (string.IsNullOrEmpty(request.id))
  138. {
  139. request.id = _snowflakeId.NextId() + "";
  140. request.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
  141. await _azureCosmos.Save<LearnProcess>(request);
  142. }
  143. else {
  144. await _azureCosmos.Update<LearnProcess>(request);
  145. }
  146. return builder.Data(request).build();
  147. }
  148. /// <summary>
  149. /// 查询编序学习活动
  150. /// </summary>
  151. /// <param name="request"></param>
  152. /// <returns></returns>
  153. [HttpPost("findProcess")]
  154. public async Task<BaseResponse> FindProcess(JsonElement request)
  155. {
  156. ResponseBuilder builder = ResponseBuilder.custom();
  157. if (StringHelper.getKeyCount(request) > 0) {
  158. builder.Data(await _azureCosmos.FindByDict<LearnProcess>(request));
  159. }
  160. return builder.build();
  161. }
  162. /// <summary>
  163. /// 删除编序学习活动
  164. /// </summary>
  165. /// <param name="request"></param>
  166. /// <returns></returns>
  167. [HttpPost("deleteProcess")]
  168. public async Task<BaseResponse> DeleteProcess(IdPk request)
  169. {
  170. ResponseBuilder builder = ResponseBuilder.custom();
  171. if (request != null)
  172. {
  173. builder.Data(await _azureCosmos.DeleteAsync<LearnProcess>(request));
  174. }
  175. return builder.build();
  176. }
  177. /// <summary>
  178. /// 保存或新增作答记录
  179. /// </summary>
  180. /// <param name="request"></param>
  181. /// <returns></returns>
  182. [HttpPost("upsertRecord")]
  183. public async Task<BaseResponse> UpsertRecord(List<LearnRecord> request)
  184. {
  185. ResponseBuilder builder = ResponseBuilder.custom();
  186. if (ValidateHelper.IsValid(request))
  187. {
  188. request.ForEach(x =>
  189. {
  190. if (string.IsNullOrEmpty(x.id))
  191. {
  192. }
  193. });
  194. List<LearnRecord> leanProcesses = await _azureCosmos.SaveOrUpdateAll<LearnRecord>(request);
  195. builder.Data(leanProcesses);
  196. }
  197. return builder.build();
  198. }
  199. /// <summary>
  200. /// 查询编序作答记录
  201. /// </summary>
  202. /// <param name="request"></param>
  203. /// <returns></returns>
  204. [HttpPost("findRecord")]
  205. public async Task<BaseResponse> FindRecord(JsonElement request)
  206. {
  207. ResponseBuilder builder = ResponseBuilder.custom();
  208. if (StringHelper.getKeyCount(request) > 0)
  209. {
  210. builder.Data(await _azureCosmos.FindByDict<LearnRecord>(request));
  211. }
  212. return builder.build();
  213. }
  214. /// <summary>
  215. /// 删除作答记录
  216. /// </summary>
  217. /// <param name="request"></param>
  218. /// <returns></returns>
  219. [HttpPost("deleteRecord")]
  220. public async Task<BaseResponse> DeleteRecord(IdPk request)
  221. {
  222. ResponseBuilder builder = ResponseBuilder.custom();
  223. if (request != null)
  224. {
  225. builder.Data(await _azureCosmos.DeleteAsync<LearnRecord>(request));
  226. }
  227. return builder.build();
  228. }
  229. }
  230. }