Преглед на файлове

增加市民红包审核集合

qinchaoyue преди 4 месеца
родител
ревизия
90b2f25673

+ 26 - 0
src/Hotline.Api/Controllers/Snapshot/RedPackController.cs

@@ -0,0 +1,26 @@
+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;
+
+namespace Hotline.Api.Controllers.Snapshot;
+
+public class RedPackController : BaseController
+{
+    private readonly IRedPackApplication _redPackApplication;
+
+    public RedPackController(IRedPackApplication redPackApplication)
+    {
+        _redPackApplication = redPackApplication;
+    }
+
+    /// <summary>
+    /// 获取市民红包审批列表
+    /// </summary>
+    /// <returns></returns>
+    [HttpGet("audit")]
+    public async Task<PagedDto<SnapshotOrderAuditItemsOutDto>> GetRedPackAuditItemsAsync([FromQuery] SnapshotOrderAuditItemsInDto dto)
+        => (await _redPackApplication.GetRedPackAuditItemsAsync(dto).ToPagedListAsync(dto)).ToPaged();
+}

+ 17 - 0
src/Hotline.Application/Snapshot/IRedPackApplication.cs

@@ -0,0 +1,17 @@
+using Hotline.Share.Dtos.Snapshot;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Hotline.Application.Snapshot;
+public interface IRedPackApplication
+{
+    /// <summary>
+    /// 获取市民红包审批列表
+    /// </summary>
+    /// <returns></returns>
+    ISugarQueryable<SnapshotOrderAuditItemsOutDto> GetRedPackAuditItemsAsync(SnapshotOrderAuditItemsInDto dto);
+}

+ 81 - 0
src/Hotline.Application/Snapshot/RedPackApplication.cs

@@ -0,0 +1,81 @@
+using Hotline.Orders;
+using Hotline.Share.Dtos.Snapshot;
+using Hotline.Share.Enums.Order;
+using Hotline.Share.Tools;
+using Hotline.Snapshot;
+using Hotline.Snapshot.Interfaces;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XF.Domain.Dependency;
+
+namespace Hotline.Application.Snapshot;
+public class RedPackApplication : IRedPackApplication, IScopeDependency
+{
+    private readonly IOrderSnapshotRepository _orderSnapshotRepository;
+
+    public RedPackApplication(IOrderSnapshotRepository orderSnapshotRepository)
+    {
+        _orderSnapshotRepository = orderSnapshotRepository;
+    }
+
+    public ISugarQueryable<SnapshotOrderAuditItemsOutDto> GetRedPackAuditItemsAsync(SnapshotOrderAuditItemsInDto dto)
+    {
+        var query = _orderSnapshotRepository.Queryable()
+            .LeftJoin<Order>((s, o) => s.Id == o.Id)
+            .LeftJoin<RedPackAudit>((s, o, r) => s.Id == r.OrderId)
+            .LeftJoin<RedPackRecord>((s, o, r, j) => s.Id == j.OrderId)
+            .LeftJoin<Industry>((s, o, r, j, i) => s.IndustryId == i.Id)
+            .WhereIF(dto.No.NotNullOrEmpty(), (s, o, r, j) => o.No.Contains(dto.No))
+            .WhereIF(dto.Title.NotNullOrEmpty(), (s, o, r, j) => o.Title.Contains(dto.Title))
+            .WhereIF(dto.FromPhone.NotNullOrEmpty(), (s, o, r, j) => o.FromPhone.Contains(dto.FromPhone))
+            .WhereIF(dto.BeginCreationTime.HasValue && dto.EndCreationTime.HasValue, (s, o, r, j) => o.CreationTime <= dto.EndCreationTime && o.CreationTime >= dto.BeginCreationTime)
+            .WhereIF(dto.IsDeal.HasValue, (s, o, r, j) => s.IsDeal == dto.IsDeal)
+            .WhereIF(dto.IsTruth.HasValue, (s, o, r, j) => s.IsTruth == dto.IsTruth)
+            .WhereIF(dto.BeginAuditTime.HasValue && dto.EndAuditTime.HasValue, (s, o, r, j) => r.AuditTime <= dto.EndAuditTime && r.AuditTime >= dto.BeginAuditTime)
+            .WhereIF(dto.IsIssued.HasValue, (s, o, r, j)=> r.IsIssued == dto.IsIssued)
+            .WhereIF(dto.IndustryId.NotNullOrEmpty(), (s, o, r, j) => s.IndustryId == dto.IndustryId)
+            .WhereIF(dto.ConfigAmount.HasValue, (s, o, r, j, i) => i.CitizenReadPackAmount == dto.ConfigAmount)
+            .WhereIF(dto.AcutalAmount.HasValue, (s, o, r, j) => r.AcutalAmount == dto.AcutalAmount)
+            .WhereIF(dto.ApprovedAmount.HasValue, (s, o, r, j) => r.ApprovedAmount == dto.ApprovedAmount)
+            .WhereIF(dto.IsDanger.HasValue, (s, o, r, j) => s.IsDanger == dto.IsDanger)
+            .Select((s, o, r, j) => new SnapshotOrderAuditItemsOutDto
+            {
+                No = o.No,
+                Title = o.Title,
+                IndustryName = s.IndustryName,
+                IndustryId = s.IndustryId,
+                SourceChannel = o.SourceChannel,
+                SourceChannelCode = o.SourceChannelCode,
+                Status = o.Status,
+                IsDanger = s.IsDanger,
+                FromPhone = o.FromPhone,
+                FromName = o.FromName,
+                AuditTime = r.AuditTime,
+                ApprovedAmount = r.ApprovedAmount,
+                AcutalAmount = r.AcutalAmount,
+                IsIssued = r.IsIssued,
+                RecordRemark = j.Remark,
+                County = o.County,
+                // IsRectify = s.IsRepetition
+                IsDeal = s.IsDeal,
+                NetworkENumber = s.NetworkENumber,
+                IsTruth = s.IsTruth,
+                IsRepetition = s.IsRepetition,
+                CreationTime = o.CreationTime,
+                OrgLevelOneCode = o.OrgLevelOneCode,
+                OrgLevelOneName = o.OrgLevelOneName,
+                AuditId = r.AuditId,
+                AuditName = r.AuditName,
+                AuditOrgId = r.AuditOrgId,
+                AuditOrgName = r.AuditOrgName,
+                AuditRemark = r.AuditRemark,
+                BankCardNo = j.BankCardNo,
+                OpenBank = j.OpenBank,
+            });
+        return query;
+    }
+}

+ 220 - 0
src/Hotline.Share/Dtos/Snapshot/OrderDto.cs

@@ -183,3 +183,223 @@ public class AddSnapshotOrderInDto : Position
         return $"【随手拍】关于{Town}({County})的" + acceptType;
     }
 }
+
+
+/// <summary>
+/// 红包审核入参
+/// </summary>
+/// <param name="No"></param>
+/// <param name="Title"></param>
+/// <param name="FromPhone">来电人电话</param>
+/// <param name="BeginCreationTime">受理开始时间</param>
+/// <param name="EndCreationTime">受理结束时间</param>
+/// <param name="IsDeal">是否办理</param>
+/// <param name="IsTruth">是否属实</param>
+/// <param name="BeginAuditTime">审批开始时间</param>
+/// <param name="EndAuditTime">审批结束时间</param>
+/// <param name="IsIssued">是否发放红包</param>
+/// <param name="IndustryId">行业Id</param>
+/// <param name="ConfigAmount">配置金额</param>
+/// <param name="AcutalAmount">实际发放金额</param>
+/// <param name="ApprovedAmount">审批金额</param>
+/// <param name="IsDanger">是否安全生成</param>
+public record SnapshotOrderAuditItemsInDto(string? No, string? Title,
+    string? FromPhone,
+    DateTime? BeginCreationTime,
+    DateTime? EndCreationTime,
+    bool? IsDeal,
+    bool? IsTruth,
+    DateTime? BeginAuditTime,
+    DateTime? EndAuditTime,
+    bool? IsIssued,
+    string? IndustryId,
+    double? ConfigAmount,
+    double? AcutalAmount,
+    double? ApprovedAmount,
+    bool? IsDanger) : PagedRequest;
+
+public class SnapshotOrderAuditItemsOutDto
+{
+    /// <summary>
+    /// No
+    /// </summary>
+    public string No { get; set; }
+
+    /// <summary>
+    /// 标题
+    /// </summary>
+    public string Title { get; set; }
+
+    /// <summary>
+    /// 行业
+    /// </summary>
+    public string IndustryName { get; set; }
+
+    /// <summary>
+    /// 行业Id
+    /// </summary>
+    public string IndustryId { get; set; }
+
+    /// <summary>
+    /// 来源渠道(电话、网站、APP等)
+    /// </summary>
+    public string? SourceChannel { get; set; }
+
+    /// <summary>
+    /// 来源渠道代码
+    /// </summary>
+    public string? SourceChannelCode { get; set; }
+
+    /// <summary>
+    /// 工单状态
+    /// </summary>
+    public EOrderStatus Status { get; set; }
+
+    /// <summary>
+    /// 状态
+    /// </summary>
+    public string StatusTxt => Status.GetDescription();
+
+    /// <summary>
+    /// 线索分类
+    /// </summary>
+    public string IndustryCase { get; set; }
+
+    /// <summary>
+    /// 线索分类
+    /// </summary>
+    public string IndustryCaseId { get; set; }
+
+    /// <summary>
+    /// 标记为安全生产
+    /// </summary>
+    public bool? IsDanger { get; set; }
+
+    /// <summary>
+    /// 来电号码
+    /// </summary>
+    public string? FromPhone { get; set; }
+
+    /// <summary>
+    /// 来电/信人姓名
+    /// </summary>
+    public string? FromName { get; set; }
+
+    /// <summary>
+    /// 审批时间
+    /// </summary>
+    public DateTime? AuditTime { get; set; }
+
+    /// <summary>
+    /// 审批金额
+    /// </summary>
+    public double? ApprovedAmount { get; set; }
+
+    /// <summary>
+    /// 实发金额
+    /// </summary>
+    public double? AcutalAmount { get; set; }
+
+    /// <summary>
+    /// 补充发放金额
+    /// TODO: 没有逻辑
+    /// </summary>
+    public double? ReplenishAmount { get; set; }
+
+    /// <summary>
+    /// 市民奖励发放结果
+    /// 是否已发放
+    /// </summary>
+    public bool? IsIssued { get; set; }
+
+    /// <summary>
+    /// 市民奖励
+    /// </summary>
+    public string CitizenAward { get; set; }
+
+    /// <summary>
+    /// 市民奖励发放备注
+    /// </summary>
+    public string RecordRemark { get; set; }
+
+    /// <summary>
+    /// 区域
+    /// </summary>
+    public string County { get; set; }
+
+    /// <summary>
+    /// 部门是否整改完成;
+    /// 是否整改
+    /// </summary>
+    public bool IsRectify { get; set; }
+
+    /// <summary>
+    /// 网格员是否办理
+    /// </summary>
+    public bool? IsDeal { get; set; }
+
+    /// <summary>
+    /// 网格E通编号
+    /// </summary>
+    public string? NetworkENumber { get; set; }
+
+    /// <summary>
+    /// 是否属实
+    /// </summary>
+    public bool? IsTruth { get; set; }
+
+    /// <summary>
+    /// 是否重复
+    /// </summary>
+    public bool? IsRepetition { get; set; }
+
+    /// <summary>
+    /// 受理时间
+    /// </summary>
+    public DateTime CreationTime { get; set; }
+
+    /// <summary>
+    /// 一级部门code
+    /// </summary>
+    public string? OrgLevelOneCode { get; set; }
+
+    /// <summary>
+    /// 一级部门名称
+    /// </summary>
+    public string? OrgLevelOneName { get; set; }
+
+    /// <summary>
+    /// 审批人
+    /// </summary>
+    public string? AuditId { get; set; }
+
+    /// <summary>
+    /// 审批人
+    /// </summary>
+    public string? AuditName { get; set; }
+
+    /// <summary>
+    /// 审批部门
+    /// </summary>
+    public string? AuditOrgId { get; set; }
+
+    /// <summary>
+    /// 审批部门名称
+    /// </summary>
+    public string? AuditOrgName { get; set; }
+
+    /// <summary>
+    /// 审批意见
+    /// </summary>
+    public string? AuditRemark { get; set; }
+
+    /// <summary>
+    /// 银行卡号
+    /// </summary>
+    public string BankCardNo { get; set; }
+
+    /// <summary>
+    /// 开户行
+    /// </summary>
+    public string OpenBank { get; set; }
+}

+ 15 - 9
src/Hotline/Snapshot/RedPackAudit.cs

@@ -38,22 +38,22 @@ public class RedPackAudit : CreationSoftDeleteEntity
     public DateTime? AuditTime { get; set; }
 
     /// <summary>
-    /// 配置金额(分)
+    /// 配置金额
     /// </summary>
-    [SugarColumn(ColumnDescription = "配置金额(分)")]
-    public int ShouldAmount { get; set; }
+    [SugarColumn(ColumnDescription = "配置金额")]
+    public double ShouldAmount { get; set; }
 
     /// <summary>
-    /// 审批金额(分)
+    /// 审批金额
     /// </summary>
-    [SugarColumn(ColumnDescription = "审批金额(分)")]
-    public int? ApprovedAmount { get; set; }
+    [SugarColumn(ColumnDescription = "审批金额")]
+    public double? ApprovedAmount { get; set; }
 
     /// <summary>
-    /// 实发金额(分)
+    /// 实发金额
     /// </summary>
-    [SugarColumn(ColumnDescription = "实发金额(分)")]
-    public int? AcutalAmount { get; set; }
+    [SugarColumn(ColumnDescription = "实发金额")]
+    public double? AcutalAmount { get; set; }
 
     /// <summary>
     /// 市民奖励发放结果
@@ -99,4 +99,10 @@ public class RedPackAudit : CreationSoftDeleteEntity
 
     public string? Remark { get; set; }
 
+    /// <summary>
+    /// 是否已发放
+    /// </summary>
+    [SugarColumn(ColumnDescription = "是否已发放")]
+    public bool? IsIssued { get; set; }
+
 }

+ 13 - 0
src/Hotline/Snapshot/RedPackRecord.cs

@@ -78,4 +78,17 @@ public class RedPackRecord : CreationSoftDeleteEntity
     /// </summary>
     [SugarColumn(ColumnDescription = "红包领取时间")]
     public DateTime? ReceiveTime { get; set; }
+
+    /// <summary>
+    /// 银行卡号
+    /// </summary>
+    [SugarColumn(ColumnDescription = "银行卡号")]
+    public string BankCardNo { get; set; }
+
+    /// <summary>
+    /// 开户行
+    /// </summary>
+    [SugarColumn(ColumnDescription = "开户行")]
+    public string OpenBank { get; set; }
+
 }