平安校园
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

177 lines
6.2 KiB

  1. using MoYu.FriendlyException;
  2. using MoYu.RemoteRequest.Extensions;
  3. using Newtonsoft.Json.Linq;
  4. using SafeCampus.Application.Manager.DeepelephManager;
  5. using SafeCampus.Application.Services.Business.ClassRoomCallService;
  6. using SafeCampus.Application.Services.Business.ClassRoomCallTaskService;
  7. namespace SafeCampus.Web.Core.Controllers.Application.Business;
  8. /// <summary>
  9. /// 教室点名接口
  10. /// </summary>
  11. [Route("/business/[controller]")]
  12. [ApiDescriptionSettings(ApiGroupConsts.SYSTEM_Business, Order = 95,Tag = "教室点名管理")]
  13. public class ClassRoomCallApi : IDynamicApiController
  14. {
  15. private readonly IClassRoomCallTaskService _classRoomCallTaskService;
  16. private readonly IClassRoomCallService _classRoomCallService;
  17. private readonly IDeepelephManager _deepelephManager;
  18. public ClassRoomCallApi(IDeepelephManager deepelephManager, IClassRoomCallTaskService classRoomCallTaskService, IClassRoomCallService classRoomCallService)
  19. {
  20. _deepelephManager = deepelephManager;
  21. _classRoomCallTaskService = classRoomCallTaskService;
  22. _classRoomCallService = classRoomCallService;
  23. }
  24. /// <summary>
  25. /// 点名事件查询
  26. /// </summary>
  27. /// <param name="search">查询参数</param>
  28. /// <returns></returns>
  29. [Obsolete]
  30. public async Task<dynamic> GetRoomCall(ClassRoomCallTaskSearchRequest search)
  31. {
  32. var appSettings = App.GetOptionsMonitor<AppInfoOptions>();
  33. var str = await $"{appSettings.SXAPIURL}/dfield-api/ecology/class-room-call/data/query"
  34. .SetBody(new
  35. {
  36. token = _deepelephManager.GetToken(),
  37. tenantCode = appSettings.TenantCode,
  38. poiId = appSettings.PoiId,
  39. beginTime = new DateTimeOffset(search.startTime).ToUnixTimeMilliseconds(),
  40. endTime = new DateTimeOffset(search.endTime).ToUnixTimeMilliseconds(),
  41. cameraId = search.cameraId,
  42. search.taskId,
  43. pageIndex = search.PageNum,
  44. pageSize = search.PageSize,
  45. })
  46. .SetContentType("application/json")
  47. .PostAsAsync<string>();
  48. var model = JsonConvert.DeserializeObject<JObject>(str);
  49. if (!(bool)model["success"]) throw Oops.Oh(model["message"].ToString());
  50. if (model["data"] != null)
  51. {
  52. return new
  53. {
  54. pageNum = search.PageNum,
  55. pageSize = model["data"]["size"],
  56. total = model["data"]["total"],
  57. pages = model["data"]["pages"],
  58. list = model["data"]["items"]
  59. };
  60. }
  61. return new
  62. {
  63. pageNum = search.PageNum,
  64. pageSize = 0,
  65. total = 0,
  66. pages = 0,
  67. list = new List<string>()
  68. };
  69. }
  70. /// <summary>
  71. /// 点名任务下发
  72. /// </summary>
  73. /// <returns></returns>
  74. public async Task<bool> TaskSubmit(ClassRoomCallTaskAdd input)
  75. {
  76. var taskId = DateTime.Now.ToString("yyyyMMddHHmmssss");// Guid.NewGuid().ToString("N");
  77. var appSettings = App.GetOptionsMonitor<AppInfoOptions>();
  78. var str = await $"{appSettings.SXAPIURL}/dfield-api/ecology/class-room-call/task/submit"
  79. .SetBody(new
  80. {
  81. token = _deepelephManager.GetToken(),
  82. tenantCode = appSettings.TenantCode,
  83. poiId = appSettings.PoiId,
  84. taskId,
  85. continueTime = input.ContinueTime,
  86. cameraId = input.CameraId,
  87. personSetId = input.PersonSetId,
  88. similarity = input.Similarity
  89. })
  90. .SetContentType("application/json")
  91. .PostAsAsync<string>();
  92. var model = JsonConvert.DeserializeObject<JObject>(str);
  93. if (!(bool)model["success"]) throw Oops.Oh(model["message"].ToString());
  94. await _classRoomCallTaskService.Add(new ClassRoomCallTaskDto
  95. {
  96. CameraId = input.CameraId,
  97. CreateTime = DateTime.Now,
  98. ContinueTime = input.ContinueTime,
  99. EndTime = DateTime.Now.AddMinutes(input.ContinueTime),
  100. PersonSetId = input.PersonSetId,
  101. Similarity = input.Similarity,
  102. TaskId = taskId,
  103. });
  104. return true;
  105. }
  106. /// <summary>
  107. /// 删除点名任务,删除关联点名数据
  108. /// </summary>
  109. /// <param name="id"></param>
  110. /// <returns></returns>
  111. public async Task<bool> Delete(long id)
  112. {
  113. return await _classRoomCallTaskService.Remove(id);
  114. }
  115. /// <summary>
  116. /// 获取点名任务列表
  117. /// </summary>
  118. /// <param name="search"></param>
  119. /// <returns></returns>
  120. public async Task<SqlSugarPagedList<ClassRoomCallTaskDto>> GetTaskPageList(ClassRoomCallTaskSearch search)
  121. {
  122. return await _classRoomCallTaskService.GetPageList(search);
  123. }
  124. /// <summary>
  125. /// 添加点名记录
  126. /// </summary>
  127. /// <param name="input"></param>
  128. /// <returns></returns>
  129. [Obsolete]
  130. public async Task<bool> Add(ClassRoomCallDto input)
  131. {
  132. return await _classRoomCallService.Add(input);
  133. }
  134. /// <summary>
  135. /// 修改点名信息,人工处理
  136. /// </summary>
  137. /// <param name="input"></param>
  138. /// <returns></returns>
  139. public async Task<bool> Update(ClassRoomCallUpdate input)
  140. {
  141. return await _classRoomCallService.Update(input);
  142. }
  143. /// <summary>
  144. /// 删除点名记录(只可删除待处理的记录)
  145. /// </summary>
  146. /// <param name="id"></param>
  147. /// <returns></returns>
  148. public async Task<bool> Remove(long id)
  149. {
  150. return await _classRoomCallService.Remove(id);
  151. }
  152. /// <summary>
  153. /// 分页获取列表
  154. /// </summary>
  155. /// <returns></returns>
  156. public async Task<SqlSugarPagedList<ClassRoomCallList>> GetPageList(ClassRoomCallSearch search)
  157. {
  158. return await _classRoomCallService.GetPageList(search);
  159. }
  160. /// <summary>
  161. /// 不分页获取列表
  162. /// </summary>
  163. /// <param name="search"></param>
  164. /// <returns></returns>
  165. public async Task<List<ClassRoomCallList>> GetNoPageList(ClassRoomCallSearch search)
  166. {
  167. return await _classRoomCallService.GetNoPageList(search);
  168. }
  169. }