RedPackController.cs 10 KB

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