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
}