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
}