平安校园

ClassRoomCallApi.cs 7.4 KiB

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