using Hotline.Application.Snapshot; using Hotline.Share.Dtos; using Hotline.Share.Dtos.Snapshot; using Microsoft.AspNetCore.Mvc; using Hotline.Repository.SqlSugar.Extensions; using Hotline.Share.Tools; using Hotline.Snapshot.Interfaces; using Hotline.Caching.Interfaces; using XF.Utility.EnumExtensions; using Hotline.Share.Enums.Snapshot; using Quartz.Impl.Triggers; namespace Hotline.Api.Controllers.Snapshot; public class RedPackController : BaseController { private readonly IRedPackApplication _redPackApplication; private readonly IIndustryRepository _industryRepository; private readonly ISystemDicDataCacheManager _sysDic; private readonly ISnapshotSMSTemplateRepository _snapshotSMSTemplateRepository; private readonly IOrderSnapshotRepository _orderSnapshotRepository; public RedPackController(IRedPackApplication redPackApplication, IIndustryRepository industryRepository, ISystemDicDataCacheManager sysDic, ISnapshotSMSTemplateRepository snapshotSMSTemplateRepository, IOrderSnapshotRepository orderSnapshotRepository) { _redPackApplication = redPackApplication; _industryRepository = industryRepository; _sysDic = sysDic; _snapshotSMSTemplateRepository = snapshotSMSTemplateRepository; _orderSnapshotRepository = orderSnapshotRepository; } #region 特殊红包 /// /// 特殊红包审批集合 /// /// /// [HttpGet("special")] public async Task> GetRedPackSpecialItems([FromQuery] SnapshotOrderAuditItemsInDto dto) => (await _redPackApplication.GetRedPackSpecialAuditItems(dto).ToPagedListAsync(dto)).ToPaged(); #endregion #region 红包审核 /// /// 获取市民红包审批列表 /// /// [HttpGet("audit")] public async Task> GetRedPackAuditItems([FromQuery] SnapshotOrderAuditItemsInDto dto) => (await _redPackApplication.GetRedPackAuditItems(dto).ToPagedListAsync(dto)).ToPaged(); /// /// 获取网格员红包审批集合(政法委或应急管理局:根据账号登录返回数据) /// /// [HttpGet("audit/guider")] public async Task> GetRedPackGuiderAuditItems([FromQuery] SnapshotOrderGuiderAuditItemsInDto dto) => (await _redPackApplication.GetRedPackGuiderAuditItems(dto).ToPagedListAsync(dto)).ToPaged(); /// /// 获取网格员审核详情 /// /// 工单Id /// [HttpGet("audit/guider/{id}")] public async Task GetRedPackGuiderAuditDetailAsync(string id) => await _redPackApplication.GetRedPackGuiderAuditDetailAsync(id); /// /// 网格员红包审核通过或拒绝 /// /// /// [HttpPut("audit/guider")] public async Task UpdateRedPackGuiderAuditAsync([FromBody] UpdateRedPackGuiderAuditInDto dto) => await _redPackApplication.AuditRedPackGuiderAuditAsync(dto); /// /// 获取审核市民详情 /// /// 工单Id /// [HttpGet("audit/{id}")] public async Task GetRedPackAuditDetailAsync(string id) => await _redPackApplication.GetRedPackAuditDetailAsync(id); /// /// 获取特提(退回)参数 /// /// /// [HttpGet("audit/back/{id}")] public async Task GetAuditBackBaseDataAsync(string id) => await _redPackApplication.GetAuditBackBaseDataAsync(id); /// /// 添加备注 /// /// /// [HttpPut("audit/remark")] public async Task UpdateRedPackAuditRemarkAsync([FromBody] UpdateRedPackAuditRemarkInDto dto) => await _redPackApplication.UpdateRedPackAuditRemarkAsync(dto); /// /// 添加备注页面基础信息 /// /// /// [HttpGet("audit/remark/basedata")] public async Task> UpdateRedPackAuditRemarkBaseDataAsync() { return new Dictionary() { { "failCase", EnumExts.GetDescriptions() } }; } /// /// 添加补充发放信息页面基础信息 /// /// [HttpGet("record/basedata/{id}")] public async Task> UpdateRedPackRecordBaseDataAsync(string id) { var snapshot = await _orderSnapshotRepository.Queryable() .Where(m => m.Id == id) .Select(m => new { m.Id, m.AwardBankCardNo, m.AwardOpenBank, m.AwardName, m.AwardAmount }) .FirstAsync(); var dic = new Dictionary() { { "replenishType", _sysDic.SnapshotReplenishType } }; if (snapshot != null) { dic.Add("bankCardNo", snapshot.AwardBankCardNo); dic.Add("openBank", snapshot.AwardOpenBank); dic.Add("name", snapshot.AwardName); dic.Add("amount", snapshot.AwardAmount); } return dic; } /// /// 添加补充发放信息 /// /// /// [HttpPut("record")] public async Task UpdateRedPackRecordAsync([FromBody] UpdateRedPackRecordInDto dto) => await _redPackApplication.UpdateRedPackRecordAsync(dto); /// /// 补充发放集合基础信息 /// [HttpGet("record/supplement/basedata")] public async Task> GetRedPackRecordSupplementBaseDataAsync() { return new Dictionary() { { "industry", await _industryRepository.GetDataBaseAsync() } }; } /// /// 补充发放集合 /// [HttpGet("record/supplement")] public async Task> GetRedPackRecordSupplementItems([FromQuery] SnapshotRedPackRecordSupplementItemsInDto dto) => (await _redPackApplication.GetRedPackRecordSupplementItems(dto).ToPagedListAsync(dto)).ToPaged(); /// /// 红包审核通过或拒绝 /// /// /// [HttpPut("audit")] public async Task UpdateRedPackAuditAsync([FromBody] UpdateRedPackAuditInDto dto) => await _redPackApplication.AuditRedPackAuditAsync(dto); /// /// 获取审核短信模板 /// /// [HttpGet("audit/sms_template")] public async Task> GetRedPackAuditSMSTemplateAsync([FromQuery] GetRedPackAuditSMSTemplateInDto dto) => await _redPackApplication.GetRedPackAuditSMSTemplateAsync(dto); /// /// 红包审批页面基础数据 /// /// [HttpGet("audit/basedata")] public async Task> GetAuditBaseDataAsync() { var industry = await _industryRepository.GetDataBaseAsync(); var configAmount = await _industryRepository.Queryable() .Select(m => m.CitizenReadPackAmount) .Distinct() .ToListAsync(); var sms = await _snapshotSMSTemplateRepository.Queryable() .ToListAsync(); return new Dictionary { { "industry", industry }, { "configAmount", configAmount }, { "status", EnumExts.GetDescriptions() } }; } #endregion #region 红包发放记录 /// /// 市民红包发放记录 /// /// /// [HttpGet("record")] public async Task> GetRedPackRecordItems([FromQuery] SnapshotRedPackRecordItemsInDto dto) => (await _redPackApplication.GetRedPackRecordItems(dto).ToPagedListAsync(dto)).ToPaged(); /// /// 网格员红包发放记录 /// /// /// [HttpGet("record/guider")] public async Task> GetRedPackRecordGuiderItems([FromQuery] SnapshotRedPackRecordItemsGuiderInDto dto) => (await _redPackApplication.GetRedPackRecordGuiderItems(dto).ToPagedListAsync(dto)).ToPaged(); /// /// 红包发放明细基础数据 /// /// [HttpGet("record/send/database")] public async Task> GetRedPackRecordSendBaseDataAsync() { return new Dictionary() { { "industry", await _industryRepository.Queryable() .Select(m => new { m.Id, m.Name }) .ToListAsync()}, { "sendStatus", EnumExts.GetDescriptions().Where(m => m.Key != 2).ToList() }, { "userType", EnumExts.GetDescriptions() } }; } /// /// 红包发放明细 /// /// [HttpGet("record/send")] public async Task> GetRedPackRecordDetail([FromQuery] SnapshotRedPackRecordSendInDto dto) => (await _redPackApplication.GetRedPackRecordDetail(dto).ToPagedListAsync(dto)).ToPaged(); /// /// 批量发送红包 /// /// /// [HttpPut("record/send_bath")] public async Task BathSendRedPackAsync([FromBody] List ids) { return "ok"; } #endregion }