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; using Hotline.Orders; using XF.Domain.Exceptions; using Mapster; 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; private readonly IOrderRepository _orderRepository; public RedPackController(IRedPackApplication redPackApplication, IIndustryRepository industryRepository, ISystemDicDataCacheManager sysDic, ISnapshotSMSTemplateRepository snapshotSMSTemplateRepository, IOrderSnapshotRepository orderSnapshotRepository, IOrderRepository orderRepository) { _redPackApplication = redPackApplication; _industryRepository = industryRepository; _sysDic = sysDic; _snapshotSMSTemplateRepository = snapshotSMSTemplateRepository; _orderSnapshotRepository = orderSnapshotRepository; _orderRepository = orderRepository; } #region 特殊红包 /// /// 特殊红包审批集合 /// /// /// [HttpGet("special")] public async Task> GetRedPackSpecialAuditItems([FromQuery] SnapshotOrderAuditItemsInDto dto) => (await _redPackApplication.GetRedPackSpecialAuditItems(dto).ToPagedListAsync(dto)).ToPaged(); /// /// 特殊红包审核通过或拒绝 /// /// /// [HttpPut("audit/special")] public async Task UpdateRedPackSpecialAuditAsync([FromBody] UpdateRedPackSpecialAuditInDto dto) => await _redPackApplication.AuditRedPackSpecialAuditAsync(dto); /// /// 特殊红包审核详情信息(OrderId) /// /// [HttpGet("audit/special/{id}")] public async Task GetRedPackSpecialAuditBaseDataAsync(string id) { return await _redPackApplication.GetRedPackSpecialAuditBaseDataAsync(id); } /// /// 撤销特殊红包审批 /// /// /// [HttpPut("audit/special/revocation")] public async Task RevocationRedPackSpecialAuditAsync([FromBody] IList ids) => await _redPackApplication.RevocationRedPackSpecialAuditAsync(ids); #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) { return await _redPackApplication.GetRedPackRecordBaseDataAsync(id); } /// /// 添加补充发放信息 /// /// /// [HttpPut("record")] public async Task UpdateRedPackRecordAsync([FromBody] UpdateRedPackRecordInDto dto) => await _redPackApplication.UpdateRedPackRecordAsync(dto); /// /// 添加补充发放信息(特殊红包) /// /// /// [HttpPut("record/special")] public async Task UpdateRedPackSpecialRecordAsync([FromBody] UpdateRedPackRecordInDto dto) => await _redPackApplication.UpdateRedPackSpecialRecordAsync(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, HttpContext.RequestAborted); /// /// 获取审核短信模板 /// /// [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 }