平安校园
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.
 
 
 
 
 
 

194 lines
6.8 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.ClassTeacherService;
  6. using SafeCampus.Application.Services.Business.PersonSetInfoService;
  7. namespace SafeCampus.Web.Core.Controllers.Application.Business;
  8. /// <summary>
  9. /// 人员底库管理接口
  10. /// </summary>
  11. [Route("/business/[controller]")]
  12. [ApiDescriptionSettings(ApiGroupConsts.SYSTEM_Business, Order = 99,Tag = "人员底库管理")]
  13. public class DfieldApi : IDynamicApiController
  14. {
  15. private readonly IDeepelephManager _deepelephManager;
  16. private readonly IClassTeacherService _classTeacherService;
  17. private readonly IPersonSetInfoService _personSetInfoService;
  18. public DfieldApi(IDeepelephManager deepelephManager, IClassTeacherService classTeacherService, IPersonSetInfoService personSetInfoService)
  19. {
  20. _deepelephManager = deepelephManager;
  21. _classTeacherService = classTeacherService;
  22. _personSetInfoService = personSetInfoService;
  23. }
  24. /// <summary>
  25. /// 创建底库
  26. /// </summary>
  27. /// <returns></returns>
  28. public async Task<dynamic> CreateDfieldA(ControllersNameInput input)
  29. {
  30. var personSetId = Guid.NewGuid().ToString("N");
  31. var appSettings = App.GetOptionsMonitor<AppInfoOptions>();
  32. var str = await $"{appSettings.SXAPIURL}/dfield-api/ecology/person/set/create"
  33. .SetBody(new
  34. {
  35. token = _deepelephManager.GetToken(),
  36. tenantCode = appSettings.TenantCode,
  37. poiId = appSettings.PoiId,
  38. personSetId,
  39. personSetName = input.Name,
  40. })
  41. .SetContentType("application/json")
  42. .PostAsAsync<string>();
  43. var model = JsonConvert.DeserializeObject<JObject>(str);
  44. if ((bool)model["success"])
  45. {
  46. await _personSetInfoService.Add(new PersonSetInfoDto{PersonSetId = personSetId ,PersonSetName = input.Name});
  47. return model["data"];
  48. }
  49. throw Oops.Oh(model["message"].ToString());
  50. }
  51. /// <summary>
  52. /// 查询底库列表
  53. /// </summary>
  54. /// <returns></returns>
  55. public async Task<dynamic> QueryAll()
  56. {
  57. return await _personSetInfoService.GetPageList();
  58. var appSettings = App.GetOptionsMonitor<AppInfoOptions>();
  59. var str = await $"{appSettings.SXAPIURL}/dfield-api/ecology/person/set/queryAll"
  60. .SetBody(new
  61. {
  62. token = _deepelephManager.GetToken(),
  63. tenantCode = appSettings.TenantCode,
  64. poiId = appSettings.PoiId,
  65. })
  66. .SetContentType("application/json")
  67. .PostAsAsync<string>();
  68. var model = JsonConvert.DeserializeObject<JObject>(str);
  69. if ((bool)model["success"])
  70. {
  71. var list = model["data"];
  72. for (int i = 0; i < list.Count(); i++)
  73. {
  74. var models = await _classTeacherService.GetInfo(list[i]["personSetId"].ToString());
  75. if (models!=null)
  76. {
  77. list[i]["userId"]= models.UserId;
  78. list[i]["userName"]= models.Name;
  79. list[i]["id"]= models.Id;
  80. }
  81. else
  82. {
  83. list[i]["userId"] = null;
  84. list[i]["userName"] =null;
  85. }
  86. }
  87. return list;
  88. }
  89. throw Oops.Oh(model["message"].ToString());
  90. }
  91. /// <summary>
  92. /// 删除底库
  93. /// </summary>
  94. /// <param name="id">底库id</param>
  95. /// <returns></returns>
  96. public async Task<dynamic> DeleteDfieldD(string id)
  97. {
  98. var appSettings = App.GetOptionsMonitor<AppInfoOptions>();
  99. var str = await $"{appSettings.SXAPIURL}/dfield-api/ecology/person/set/delete"
  100. .SetBody(new
  101. {
  102. token = _deepelephManager.GetToken(),
  103. tenantCode = appSettings.TenantCode,
  104. poiId = appSettings.PoiId,
  105. personSetId= id
  106. })
  107. .SetContentType("application/json")
  108. .PostAsAsync<string>();
  109. var model = JsonConvert.DeserializeObject<JObject>(str);
  110. if ((bool)model["success"])
  111. {
  112. var isOk = model["data"].ToString() == id;
  113. if (isOk)
  114. {
  115. await _personSetInfoService.Delete(id);
  116. }
  117. return isOk;
  118. }
  119. throw Oops.Oh(model["message"].ToString());
  120. }
  121. /// <summary>
  122. /// 更新底库
  123. /// </summary>
  124. /// <param name="input"></param>
  125. /// <returns></returns>
  126. public async Task<dynamic> UpdateDfieldU(DfieldInput input)
  127. {
  128. var appSettings = App.GetOptionsMonitor<AppInfoOptions>();
  129. var str = await $"{appSettings.SXAPIURL}/dfield-api/ecology/person/set/update"
  130. .SetBody(new
  131. {
  132. token = _deepelephManager.GetToken(),
  133. tenantCode = appSettings.TenantCode,
  134. poiId = appSettings.PoiId,
  135. personSetId=input.Id,
  136. personSetName=input.Name
  137. })
  138. .SetContentType("application/json")
  139. .PostAsAsync<string>();
  140. var model = JsonConvert.DeserializeObject<JObject>(str);
  141. if ((bool)model["success"])
  142. {
  143. var isOk = model["data"].ToString() == input.Id;
  144. if (isOk)
  145. {
  146. await _personSetInfoService.Update(new PersonSetInfoDto
  147. {
  148. PersonSetId = input.Id,
  149. PersonSetName = input.Name
  150. });
  151. }
  152. return isOk;
  153. }
  154. throw Oops.Oh(model["message"].ToString());
  155. }
  156. /// <summary>
  157. /// 同步班级数据
  158. /// </summary>
  159. /// <returns></returns>
  160. public async Task<bool> SyncData()
  161. {
  162. var appSettings = App.GetOptionsMonitor<AppInfoOptions>();
  163. var str = await $"{appSettings.SXAPIURL}/dfield-api/ecology/person/set/queryAll"
  164. .SetBody(new
  165. {
  166. token = _deepelephManager.GetToken(),
  167. tenantCode = appSettings.TenantCode,
  168. poiId = appSettings.PoiId,
  169. })
  170. .SetContentType("application/json")
  171. .PostAsAsync<string>();
  172. var model = JsonConvert.DeserializeObject<JObject>(str);
  173. if ((bool)model["success"])
  174. {
  175. var list = model["data"];
  176. foreach (var item in list)
  177. {
  178. await _personSetInfoService.Add(new PersonSetInfoDto
  179. {
  180. PersonSetId = item["personSetId"].ToString(),
  181. PersonSetName = item["personSetName"].ToString(),
  182. });
  183. }
  184. }
  185. return true;
  186. }
  187. }