RedPackController.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. using Hotline.Application.Snapshot;
  2. using Hotline.Share.Dtos;
  3. using Hotline.Share.Dtos.Snapshot;
  4. using Microsoft.AspNetCore.Mvc;
  5. using Hotline.Repository.SqlSugar.Extensions;
  6. using Hotline.Share.Tools;
  7. using Hotline.Snapshot.Interfaces;
  8. using Hotline.Caching.Interfaces;
  9. using XF.Utility.EnumExtensions;
  10. using Hotline.Share.Enums.Snapshot;
  11. using Quartz.Impl.Triggers;
  12. using Hotline.Orders;
  13. using XF.Domain.Exceptions;
  14. using Mapster;
  15. namespace Hotline.Api.Controllers.Snapshot;
  16. public class RedPackController : BaseController
  17. {
  18. private readonly IRedPackApplication _redPackApplication;
  19. private readonly IIndustryRepository _industryRepository;
  20. private readonly ISystemDicDataCacheManager _sysDic;
  21. private readonly ISnapshotSMSTemplateRepository _snapshotSMSTemplateRepository;
  22. private readonly IOrderSnapshotRepository _orderSnapshotRepository;
  23. private readonly IOrderRepository _orderRepository;
  24. public RedPackController(IRedPackApplication redPackApplication, IIndustryRepository industryRepository, ISystemDicDataCacheManager sysDic, ISnapshotSMSTemplateRepository snapshotSMSTemplateRepository, IOrderSnapshotRepository orderSnapshotRepository, IOrderRepository orderRepository)
  25. {
  26. _redPackApplication = redPackApplication;
  27. _industryRepository = industryRepository;
  28. _sysDic = sysDic;
  29. _snapshotSMSTemplateRepository = snapshotSMSTemplateRepository;
  30. _orderSnapshotRepository = orderSnapshotRepository;
  31. _orderRepository = orderRepository;
  32. }
  33. #region 特殊红包
  34. /// <summary>
  35. /// 特殊红包审批集合
  36. /// </summary>
  37. /// <param name="dto"></param>
  38. /// <returns></returns>
  39. [HttpGet("special")]
  40. public async Task<PagedDto<SnapshotOrderAuditItemsOutDto>> GetRedPackSpecialAuditItems([FromQuery] SnapshotOrderAuditItemsInDto dto)
  41. => (await _redPackApplication.GetRedPackSpecialAuditItems(dto).ToPagedListAsync(dto)).ToPaged();
  42. /// <summary>
  43. /// 特殊红包审核通过或拒绝
  44. /// </summary>
  45. /// <param name="dto"></param>
  46. /// <returns></returns>
  47. [HttpPut("audit/special")]
  48. public async Task UpdateRedPackSpecialAuditAsync([FromBody] UpdateRedPackSpecialAuditInDto dto)
  49. => await _redPackApplication.AuditRedPackSpecialAuditAsync(dto);
  50. /// <summary>
  51. /// 特殊红包审核详情信息(OrderId)
  52. /// </summary>
  53. /// <returns></returns>
  54. [HttpGet("audit/special/{id}")]
  55. public async Task<SnapshotOrderAuditSpecialDetailOutDto> GetRedPackSpecialAuditBaseDataAsync(string id)
  56. {
  57. return await _redPackApplication.GetRedPackSpecialAuditBaseDataAsync(id);
  58. }
  59. /// <summary>
  60. /// 撤销特殊红包审批
  61. /// </summary>
  62. /// <param name="dto"></param>
  63. /// <returns></returns>
  64. [HttpPut("audit/special/revocation")]
  65. public async Task RevocationRedPackSpecialAuditAsync([FromBody] IList<string> ids)
  66. => await _redPackApplication.RevocationRedPackSpecialAuditAsync(ids);
  67. #endregion
  68. #region 红包审核
  69. /// <summary>
  70. /// 获取市民红包审批列表
  71. /// </summary>
  72. /// <returns></returns>
  73. [HttpGet("audit")]
  74. public async Task<PagedDto<SnapshotOrderAuditItemsOutDto>> GetRedPackAuditItems([FromQuery] SnapshotOrderAuditItemsInDto dto)
  75. => (await _redPackApplication.GetRedPackAuditItems(dto).ToPagedListAsync(dto)).ToPaged();
  76. /// <summary>
  77. /// 获取网格员红包审批集合(政法委或应急管理局:根据账号登录返回数据)
  78. /// </summary>
  79. /// <returns></returns>
  80. [HttpGet("audit/guider")]
  81. public async Task<PagedDto<SnapshotOrderGuiderAuditItemsOutDto>> GetRedPackGuiderAuditItems([FromQuery] SnapshotOrderGuiderAuditItemsInDto dto)
  82. => (await _redPackApplication.GetRedPackGuiderAuditItems(dto).ToPagedListAsync(dto)).ToPaged();
  83. /// <summary>
  84. /// 获取网格员审核详情
  85. /// </summary>
  86. /// <param name="id">工单Id</param>
  87. /// <returns></returns>
  88. [HttpGet("audit/guider/{id}")]
  89. public async Task<SnapshotOrderAuditDetailOutDto> GetRedPackGuiderAuditDetailAsync(string id)
  90. => await _redPackApplication.GetRedPackGuiderAuditDetailAsync(id);
  91. /// <summary>
  92. /// 网格员红包审核通过或拒绝
  93. /// </summary>
  94. /// <param name="dto"></param>
  95. /// <returns></returns>
  96. [HttpPut("audit/guider")]
  97. public async Task UpdateRedPackGuiderAuditAsync([FromBody] UpdateRedPackGuiderAuditInDto dto)
  98. => await _redPackApplication.AuditRedPackGuiderAuditAsync(dto);
  99. /// <summary>
  100. /// 获取审核市民详情
  101. /// </summary>
  102. /// <param name="id">工单Id</param>
  103. /// <returns></returns>
  104. [HttpGet("audit/{id}")]
  105. public async Task<SnapshotOrderAuditDetailOutDto> GetRedPackAuditDetailAsync(string id)
  106. => await _redPackApplication.GetRedPackAuditDetailAsync(id);
  107. /// <summary>
  108. /// 获取特提(退回)参数
  109. /// </summary>
  110. /// <param name="id"></param>
  111. /// <returns></returns>
  112. [HttpGet("audit/back/{id}")]
  113. public async Task<GetAuditBackBaseDataOutDto> GetAuditBackBaseDataAsync(string id)
  114. => await _redPackApplication.GetAuditBackBaseDataAsync(id);
  115. /// <summary>
  116. /// 添加备注
  117. /// </summary>
  118. /// <param name="dto"></param>
  119. /// <returns></returns>
  120. [HttpPut("audit/remark")]
  121. public async Task UpdateRedPackAuditRemarkAsync([FromBody] UpdateRedPackAuditRemarkInDto dto)
  122. => await _redPackApplication.UpdateRedPackAuditRemarkAsync(dto);
  123. /// <summary>
  124. /// 添加备注页面基础信息
  125. /// </summary>
  126. /// <returns></returns>
  127. [HttpGet("audit/remark/basedata")]
  128. public async Task<Dictionary<string, object>> UpdateRedPackAuditRemarkBaseDataAsync()
  129. {
  130. return new Dictionary<string, object>()
  131. {
  132. { "failCase", EnumExts.GetDescriptions<ERedPackPickupFailCase>() }
  133. };
  134. }
  135. /// <summary>
  136. /// 添加补充发放信息页面基础信息
  137. /// </summary>
  138. /// <returns></returns>
  139. [HttpGet("record/basedata/{id}")]
  140. public async Task<GetRedPackRecordBaseDataOutDto> UpdateRedPackRecordBaseDataAsync(string id)
  141. {
  142. return await _redPackApplication.GetRedPackRecordBaseDataAsync(id);
  143. }
  144. /// <summary>
  145. /// 添加补充发放信息
  146. /// </summary>
  147. /// <param name="dto"></param>
  148. /// <returns></returns>
  149. [HttpPut("record")]
  150. public async Task UpdateRedPackRecordAsync([FromBody] UpdateRedPackRecordInDto dto)
  151. => await _redPackApplication.UpdateRedPackRecordAsync(dto);
  152. /// <summary>
  153. /// 添加补充发放信息(特殊红包)
  154. /// </summary>
  155. /// <param name="dto"></param>
  156. /// <returns></returns>
  157. [HttpPut("record/special")]
  158. public async Task UpdateRedPackSpecialRecordAsync([FromBody] UpdateRedPackRecordInDto dto)
  159. => await _redPackApplication.UpdateRedPackSpecialRecordAsync(dto);
  160. /// <summary>
  161. /// 补充发放集合基础信息
  162. /// </summary>
  163. [HttpGet("record/supplement/basedata")]
  164. public async Task<Dictionary<string, object>> GetRedPackRecordSupplementBaseDataAsync()
  165. {
  166. return new Dictionary<string, object>()
  167. {
  168. { "industry", await _industryRepository.GetDataBaseAsync() }
  169. };
  170. }
  171. /// <summary>
  172. /// 补充发放集合
  173. /// </summary>
  174. [HttpGet("record/supplement")]
  175. public async Task<PagedDto<SnapshotRedPackRecordSupplementItemsOutDto>> GetRedPackRecordSupplementItems([FromQuery] SnapshotRedPackRecordSupplementItemsInDto dto)
  176. => (await _redPackApplication.GetRedPackRecordSupplementItems(dto).ToPagedListAsync(dto)).ToPaged();
  177. /// <summary>
  178. /// 红包审核通过或拒绝
  179. /// </summary>
  180. /// <param name="dto"></param>
  181. /// <returns></returns>
  182. [HttpPut("audit")]
  183. public async Task UpdateRedPackAuditAsync([FromBody] UpdateRedPackAuditInDto dto)
  184. => await _redPackApplication.AuditRedPackAuditAsync(dto, HttpContext.RequestAborted);
  185. /// <summary>
  186. /// 获取审核短信模板
  187. /// </summary>
  188. /// <returns></returns>
  189. [HttpGet("audit/sms_template")]
  190. public async Task<IList<GetRedPackAuditSMSTemplateOutDto>> GetRedPackAuditSMSTemplateAsync([FromQuery] GetRedPackAuditSMSTemplateInDto dto)
  191. => await _redPackApplication.GetRedPackAuditSMSTemplateAsync(dto);
  192. /// <summary>
  193. /// 红包审批页面基础数据
  194. /// </summary>
  195. /// <returns></returns>
  196. [HttpGet("audit/basedata")]
  197. public async Task<Dictionary<string, object>> GetAuditBaseDataAsync()
  198. {
  199. var industry = await _industryRepository.GetDataBaseAsync();
  200. var configAmount = await _industryRepository.Queryable()
  201. .Select(m => m.CitizenReadPackAmount)
  202. .Distinct()
  203. .ToListAsync();
  204. var sms = await _snapshotSMSTemplateRepository.Queryable()
  205. .ToListAsync();
  206. return new Dictionary<string, object>
  207. {
  208. { "industry", industry },
  209. { "configAmount", configAmount },
  210. { "status", EnumExts.GetDescriptions<ERedPackAuditStatus>() }
  211. };
  212. }
  213. #endregion
  214. #region 红包发放记录
  215. /// <summary>
  216. /// 市民红包发放记录
  217. /// </summary>
  218. /// <param name="dto"></param>
  219. /// <returns></returns>
  220. [HttpGet("record")]
  221. public async Task<PagedDto<SnapshotRedPackRecordItemsOutDto>> GetRedPackRecordItems([FromQuery] SnapshotRedPackRecordItemsInDto dto)
  222. => (await _redPackApplication.GetRedPackRecordItems(dto).ToPagedListAsync(dto)).ToPaged();
  223. /// <summary>
  224. /// 网格员红包发放记录
  225. /// </summary>
  226. /// <param name="dto"></param>
  227. /// <returns></returns>
  228. [HttpGet("record/guider")]
  229. public async Task<PagedDto<SnapshotRedPackRecordItemsGuiderOutDto>> GetRedPackRecordGuiderItems([FromQuery] SnapshotRedPackRecordItemsGuiderInDto dto)
  230. => (await _redPackApplication.GetRedPackRecordGuiderItems(dto).ToPagedListAsync(dto)).ToPaged();
  231. /// <summary>
  232. /// 红包发放明细基础数据
  233. /// </summary>
  234. /// <returns></returns>
  235. [HttpGet("record/send/database")]
  236. public async Task<Dictionary<string, object>> GetRedPackRecordSendBaseDataAsync()
  237. {
  238. return new Dictionary<string, object>()
  239. {
  240. { "industry", await _industryRepository.Queryable()
  241. .Select(m => new { m.Id, m.Name })
  242. .ToListAsync()},
  243. { "sendStatus", EnumExts.GetDescriptions<EReadPackSendStatus>().Where(m => m.Key != 2).ToList() },
  244. { "userType", EnumExts.GetDescriptions<EReadPackUserType>() }
  245. };
  246. }
  247. /// <summary>
  248. /// 红包发放明细
  249. /// </summary>
  250. /// <returns></returns>
  251. [HttpGet("record/send")]
  252. public async Task<PagedDto<SnapshotRedPackRecordSendOutDto>> GetRedPackRecordDetail([FromQuery] SnapshotRedPackRecordSendInDto dto)
  253. => (await _redPackApplication.GetRedPackRecordDetail(dto).ToPagedListAsync(dto)).ToPaged();
  254. /// <summary>
  255. /// 批量发送红包
  256. /// </summary>
  257. /// <param name="ids"></param>
  258. /// <returns></returns>
  259. [HttpPut("record/send_bath")]
  260. public async Task<string> BathSendRedPackAsync([FromBody] List<string> ids)
  261. {
  262. return "ok";
  263. }
  264. #endregion
  265. }