LearnController.cs 9.2 KB

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