Selaa lähdekoodia

新增网格员回复记录集合接口

qinchaoyue 4 kuukautta sitten
vanhempi
commit
984eaeebab

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

@@ -36,6 +36,14 @@ public class RedPackController : BaseController
     public async Task<PagedDto<SnapshotOrderAuditItemsOutDto>> GetRedPackAuditItemsAsync([FromQuery] SnapshotOrderAuditItemsInDto dto)
         => (await _redPackApplication.GetRedPackAuditItemsAsync(dto).ToPagedListAsync(dto)).ToPaged();
 
+    /// <summary>
+    /// 获取网格员红包审批集合-政法委
+    /// </summary>
+    /// <returns></returns>
+    [HttpGet("audit/guider/zhengfawei")]
+    public async Task<PagedDto<SnapshotOrderGuiderAuditItemsOutDto>> GetRedPackGuiderAuditItemsAsync([FromQuery] SnapshotOrderGuiderAuditItemsInDto dto)
+        => (await _redPackApplication.GetRedPackGuiderAuditItemsAsync(dto).ToPagedListAsync(dto)).ToPaged();
+
     /// <summary>
     /// 获取审核详情
     /// </summary>
@@ -45,6 +53,11 @@ public class RedPackController : BaseController
     public async Task<SnapshotOrderAuditDetailOutDto> GetRedPackAuditDetailAsync(string id)
         => await _redPackApplication.GetRedPackAuditDetailAsync(id);
 
+    /// <summary>
+    /// 获取特提(退回)参数
+    /// </summary>
+    /// <param name="id"></param>
+    /// <returns></returns>
     [HttpGet("audit/back/{id}")]
     public async Task<GetAuditBackBaseDataOutDto> GetAuditBackBaseDataAsync(string id)
         => await _redPackApplication.GetAuditBackBaseDataAsync(id);

+ 35 - 0
src/Hotline.Api/Controllers/Snapshot/SnapshotOrderController.cs

@@ -0,0 +1,35 @@
+using Hotline.Application.Snapshot;
+using Hotline.Repository.SqlSugar.Extensions;
+using Hotline.Share.Dtos;
+using Hotline.Share.Dtos.Snapshot;
+using Hotline.Share.Tools;
+using Hotline.Snapshot.Interfaces;
+using Microsoft.AspNetCore.Mvc;
+using System.ComponentModel;
+
+namespace Hotline.Api.Controllers.Snapshot;
+
+/// <summary>
+/// 随手拍工单
+/// </summary>
+[Description("随手拍工单")]
+public class SnapshotOrderController : BaseController
+{
+    private readonly IOrderSnapshotRepository _orderSnapshotRepository;
+    private readonly IOrderSnapshotApplication _orderSnapshotApplication;
+
+    public SnapshotOrderController(IOrderSnapshotRepository orderSnapshotRepository, IOrderSnapshotApplication orderSnapshotApplication)
+    {
+        _orderSnapshotRepository = orderSnapshotRepository;
+        _orderSnapshotApplication = orderSnapshotApplication;
+    }
+
+    /// <summary>
+    /// 获取网格员回复集合
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    [HttpGet("guider/reply")]
+    public async Task<PagedDto<GuiderReplyItemsOutDto>> GetGuiderReplyItemsAsync([FromQuery] GuiderReplyItemsInDto dto)
+        => (await _orderSnapshotApplication.GetGuiderReplyItemsAsync(dto).ToPagedListAsync(dto)).ToPaged();
+}

+ 1 - 1
src/Hotline.Application/Snapshot/DefaultSnapshotApplication.cs

@@ -25,7 +25,7 @@ namespace Hotline.Application.Snapshot;
 public class DefaultSnapshotApplication : SnapshotApplicationBase
     , ISnapshotApplication, IScopeDependency
 {
-    public DefaultSnapshotApplication(IThirdIdentiyService thirdLoginService, IRepository<Industry> industryRepository, ISnapshotBulletinRepository bulletinRepository, ISessionContext sessionContext, IRepository<RedPackRecord> redPackRecordRepository, IRepository<Order> orderRepository, IThirdAccountRepository thirdAccountRepository, IOrderSnapshotRepository orderSnapshotRepository, ISystemSettingCacheManager systemSettingCacheManager, ISystemAreaDomainService systemAreaDomainService, IFileRepository fileRepository, ISystemDicDataCacheManager systemDicDataCacheManager, ISnapshotOrderPublishRepository snapshotOrderPublishRepository, IRepository<WorkflowTrace> workflowTraceRepository, IPractitionerRepository practitionerRepository, IRepository<SystemArea> systemAreaRepository, IVolunteerRepository volunteerRepository, IVolunteerReportRepository volunteerReportRepository, ISystemLogRepository systemLog, IGuiderSystemService guiderSystemService, ICapPublisher capPublisher, Publisher publisher, IGuiderInfoRepository guiderInfoRepository, IFileDomainService fileDomainService, ICommunityInfoRepository communityInfoRepository, IRedPackAuditRepository redPackAuditRepository, IOrderVisitRepository orderVisitRepository, IOrderVisitDetailRepository orderVisitDetailRepository) : base(thirdLoginService, industryRepository, bulletinRepository, sessionContext, redPackRecordRepository, orderRepository, thirdAccountRepository, orderSnapshotRepository, systemSettingCacheManager, systemAreaDomainService, fileRepository, systemDicDataCacheManager, snapshotOrderPublishRepository, workflowTraceRepository, practitionerRepository, systemAreaRepository, volunteerRepository, volunteerReportRepository, systemLog, guiderSystemService, capPublisher, publisher, guiderInfoRepository, fileDomainService, communityInfoRepository, redPackAuditRepository, orderVisitRepository, orderVisitDetailRepository)
+    public DefaultSnapshotApplication(IThirdIdentiyService thirdLoginService, IRepository<Industry> industryRepository, ISnapshotBulletinRepository bulletinRepository, ISessionContext sessionContext, IRepository<RedPackRecord> redPackRecordRepository, IRepository<Order> orderRepository, IThirdAccountRepository thirdAccountRepository, IOrderSnapshotRepository orderSnapshotRepository, ISystemSettingCacheManager systemSettingCacheManager, ISystemAreaDomainService systemAreaDomainService, IFileRepository fileRepository, ISystemDicDataCacheManager systemDicDataCacheManager, ISnapshotOrderPublishRepository snapshotOrderPublishRepository, IRepository<WorkflowTrace> workflowTraceRepository, IPractitionerRepository practitionerRepository, IRepository<SystemArea> systemAreaRepository, IVolunteerRepository volunteerRepository, IVolunteerReportRepository volunteerReportRepository, ISystemLogRepository systemLog, IGuiderSystemService guiderSystemService, ICapPublisher capPublisher, Publisher publisher, IGuiderInfoRepository guiderInfoRepository, IFileDomainService fileDomainService, ICommunityInfoRepository communityInfoRepository, IRedPackAuditRepository redPackAuditRepository, IOrderVisitRepository orderVisitRepository, IOrderVisitDetailRepository orderVisitDetailRepository, IRedPackGuiderAuditRepository redPackGuiderAuditRepository) : base(thirdLoginService, industryRepository, bulletinRepository, sessionContext, redPackRecordRepository, orderRepository, thirdAccountRepository, orderSnapshotRepository, systemSettingCacheManager, systemAreaDomainService, fileRepository, systemDicDataCacheManager, snapshotOrderPublishRepository, workflowTraceRepository, practitionerRepository, systemAreaRepository, volunteerRepository, volunteerReportRepository, systemLog, guiderSystemService, capPublisher, publisher, guiderInfoRepository, fileDomainService, communityInfoRepository, redPackAuditRepository, orderVisitRepository, orderVisitDetailRepository, redPackGuiderAuditRepository)
     {
     }
 }

+ 18 - 0
src/Hotline.Application/Snapshot/IOrderSnapshotApplication.cs

@@ -0,0 +1,18 @@
+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 IOrderSnapshotApplication
+{
+    /// <summary>
+    /// 获取网格员回复集合
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    ISugarQueryable<GuiderReplyItemsOutDto> GetGuiderReplyItemsAsync(GuiderReplyItemsInDto dto);
+}

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

@@ -43,6 +43,13 @@ public interface IRedPackApplication
     /// <returns></returns>
     Task<IList<GetRedPackAuditSMSTemplateOutDto>> GetRedPackAuditSMSTemplateAsync(GetRedPackAuditSMSTemplateInDto dto);
 
+    /// <summary>
+    /// 网格员红包审核集合
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    ISugarQueryable<SnapshotOrderGuiderAuditItemsOutDto> GetRedPackGuiderAuditItemsAsync(SnapshotOrderGuiderAuditItemsInDto dto);
+
     /// <summary>
     /// 市民红包发放记录
     /// </summary>

+ 45 - 0
src/Hotline.Application/Snapshot/OrderSnapshotApplication.cs

@@ -0,0 +1,45 @@
+using Hotline.Orders;
+using Hotline.Share.Dtos.Snapshot;
+using Hotline.Share.Enums.Snapshot;
+using Hotline.Share.Tools;
+using Hotline.Snapshot.Interfaces;
+using Novacode.NETCorePort;
+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 OrderSnapshotApplication : IOrderSnapshotApplication, IScopeDependency
+{
+    private readonly IOrderSnapshotRepository _orderSnapshotRepository;
+
+    public OrderSnapshotApplication(IOrderSnapshotRepository orderSnapshotRepository)
+    {
+        _orderSnapshotRepository = orderSnapshotRepository;
+    }
+
+    public ISugarQueryable<GuiderReplyItemsOutDto> GetGuiderReplyItemsAsync(GuiderReplyItemsInDto dto)
+    {
+        var query = _orderSnapshotRepository.Queryable()
+            .LeftJoin<Order>((snapshot, order) => snapshot.Id == order.Id)
+            .Where((snapshot, order) => snapshot.ReplyResultType != null)
+            .WhereIF(dto.No.NotNullOrEmpty(), (snapshot, order) => order.No.Contains(dto.No))
+            .WhereIF(dto.Title.NotNullOrEmpty(), (snapshot, order) => order.Title.Contains(dto.Title))
+            .WhereIF(dto.GuiderName.NotNullOrEmpty(), (snapshot, order) => snapshot.MemberName.Contains(dto.GuiderName))
+            .WhereIF(dto.GuiderPhoneNumber.NotNullOrEmpty(), (snapshot, order) => snapshot.MemberMobile.Contains(dto.GuiderPhoneNumber))
+            .WhereIF(dto.NewtorkENumber.NotNullOrEmpty(), (snapshot, order) => snapshot.NetworkENumber.Contains(dto.NewtorkENumber))
+            .WhereIF(dto.Satus.HasValue, (snapshot, order) => snapshot.ReplyResultType == dto.Satus)
+            .WhereIF(dto.BeginCreationTime.HasValue && dto.EndCreationTime.HasValue, (snapshot, order) => order.CreationTime >= dto.BeginCreationTime && order.CreationTime <= dto.EndCreationTime)
+            .Select((snapshot, order) => new GuiderReplyItemsOutDto 
+            {
+                No = order.No,
+                Title = order.Title
+            }, true);
+
+        return query;
+    }
+}

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

@@ -7,8 +7,10 @@ using Hotline.Snapshot;
 using Hotline.Snapshot.Interfaces;
 using Mapster;
 using NPOI.SS.Formula.Functions;
+using Senparc.Weixin.MP;
 using SqlSugar;
 using SqlSugar.Extensions;
+using XF.Domain.Authentications;
 using XF.Domain.Dependency;
 using XF.Domain.Exceptions;
 using XF.Domain.Repository;
@@ -24,8 +26,10 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
     private readonly IRedPackAuditRepository _redPackAuditRepository;
     private readonly IRedPackRecordRepository _redPackRecordRepository;
     private readonly IRepository<OrderSpecial> _orderSpecialRepository;
+    private readonly ISessionContext _sessionContext;
+    private readonly IRedPackGuiderAuditRepository _redPackGuiderAuditRepository;
 
-    public RedPackApplication(IOrderSnapshotRepository orderSnapshotRepository, ISnapshotSMSTemplateRepository snapshotSMSTemplateRepository, IOrderRepository orderRepository, IIndustryRepository industryRepository, IRedPackAuditRepository redPackAuditRepository, IRedPackRecordRepository redPackRecordRepository, IRepository<OrderSpecial> orderSpecialRepository)
+    public RedPackApplication(IOrderSnapshotRepository orderSnapshotRepository, ISnapshotSMSTemplateRepository snapshotSMSTemplateRepository, IOrderRepository orderRepository, IIndustryRepository industryRepository, IRedPackAuditRepository redPackAuditRepository, IRedPackRecordRepository redPackRecordRepository, IRepository<OrderSpecial> orderSpecialRepository, ISessionContext sessionContext, IRedPackGuiderAuditRepository redPackGuiderAuditRepository)
     {
         _orderSnapshotRepository = orderSnapshotRepository;
         _snapshotSMSTemplateRepository = snapshotSMSTemplateRepository;
@@ -34,6 +38,8 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
         _redPackAuditRepository = redPackAuditRepository;
         _redPackRecordRepository = redPackRecordRepository;
         _orderSpecialRepository = orderSpecialRepository;
+        _sessionContext = sessionContext;
+        _redPackGuiderAuditRepository = redPackGuiderAuditRepository;
     }
 
     /// <summary>
@@ -106,6 +112,11 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
         return outDto;
     }
 
+    /// <summary>
+    /// 红包审核集合
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
     public ISugarQueryable<SnapshotOrderAuditItemsOutDto> GetRedPackAuditItemsAsync(SnapshotOrderAuditItemsInDto dto)
     {
         ERedPackAuditStatus? status = null;
@@ -281,5 +292,74 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
         return order;
     }
 
+    public ISugarQueryable<SnapshotOrderGuiderAuditItemsOutDto> GetRedPackGuiderAuditItemsAsync(SnapshotOrderGuiderAuditItemsInDto dto)
+    {
+        var areaCode = _sessionContext.OrgAreaCode;
+        ERedPackAuditStatus? status = null;
+        if (dto.Status != -1 && Enum.TryParse<ERedPackAuditStatus>(dto.Status.ToString(), out var statusParse))
+        {
+            status = statusParse;
+        }
+
+        var query = _redPackGuiderAuditRepository.Queryable(includeDeleted: true)
+            .LeftJoin<Order>((redPackAudit, order) => redPackAudit.OrderId == order.Id)
+            .LeftJoin<OrderSnapshot>((redPackAudit, order, snapshot) => redPackAudit.OrderId == snapshot.Id)
+            .LeftJoin<RedPackRecord>((redPackAudit, order, snapshot, record) => redPackAudit.Id == record.OrderId)
+            .LeftJoin<Industry>((redPackAudit, order, snapshot, record, industry) => snapshot.IndustryId == industry.Id)
+            .Where((redPackAudit, order, snapshot, record, industry) => order.Status == EOrderStatus.Filed)
+            .WhereIF(dto.No.NotNullOrEmpty(), (redPackAudit, order, snapshot, record, industry) => order.No.Contains(dto.No))
+            .WhereIF(dto.Title.NotNullOrEmpty(), (redPackAudit, order, snapshot, record, industry) => order.Title.Contains(dto.Title))
+            .WhereIF(dto.FromPhone.NotNullOrEmpty(), (redPackAudit, order, snapshot, record, industry) => order.FromPhone.Contains(dto.FromPhone))
+            .WhereIF(dto.BeginCreationTime.HasValue && dto.EndCreationTime.HasValue, (redPackAudit, order, snapshot, record, industry) => order.CreationTime <= dto.EndCreationTime && order.CreationTime >= dto.BeginCreationTime)
+            .WhereIF(dto.BeginFiledTime.HasValue && dto.EndFiledTime.HasValue, (redPackAudit, order, snapshot, record, industry) => order.FiledTime <= dto.EndFiledTime && order.FiledTime >= dto.BeginFiledTime)
+            .WhereIF(dto.IsDeal.HasValue, (redPackAudit, order, snapshot, record, industry) => snapshot.IsDeal == dto.IsDeal)
+            .WhereIF(dto.IsTruth.HasValue, (redPackAudit, order, snapshot, record, industry) => snapshot.IsTruth == dto.IsTruth)
+            .WhereIF(dto.IsTruthDepartment.HasValue, (redPackAudit, order, snapshot, record, industry) => snapshot.IsTruthDepartment == dto.IsTruthDepartment)
+            .WhereIF(dto.BeginAuditTime.HasValue && dto.EndAuditTime.HasValue, (redPackAudit, order, snapshot, record, industry) => redPackAudit.LevelOneAuditTime <= dto.EndAuditTime && redPackAudit.LevelOneAuditTime >= dto.BeginAuditTime)
+            .WhereIF(dto.IsIssued.HasValue, (redPackAudit, order, snapshot, record, industry) => redPackAudit.IsIssued == dto.IsIssued)
+            .WhereIF(dto.IndustryId.NotNullOrEmpty(), (redPackAudit, order, snapshot, record, industry) => snapshot.IndustryId == dto.IndustryId)
+            .WhereIF(dto.ConfigAmount.HasValue, (redPackAudit, order, snapshot, record, industry) => industry.CitizenReadPackAmount == dto.ConfigAmount)
+            .WhereIF(dto.AcutalAmount.HasValue, (redPackAudit, order, snapshot, record, industry) => redPackAudit.AcutalAmount == dto.AcutalAmount)
+            .WhereIF(dto.ApprovedAmount.HasValue, (redPackAudit, order, snapshot, record, industry) => redPackAudit.ApprovedAmount == dto.ApprovedAmount)
+            .WhereIF(dto.IsDanger.HasValue, (redPackAudit, order, snapshot, record, industry) => snapshot.IsDanger == dto.IsDanger)
+            .WhereIF(status.HasValue, (redPackAudit, order, snapshot, record, industry) => redPackAudit.LevelOneStatus == status)
+            .Where((redPackAudit, order, snapshot, record, industry) => order.AreaCode == areaCode)
+            .Select((redPackAudit, order, snapshot, record, industry) => new SnapshotOrderGuiderAuditItemsOutDto
+            {
+                Id = redPackAudit.Id,
+                RedPackAuditId = redPackAudit.Id,
+                OrderId = order.Id,
+                No = order.No,
+                Title = order.Title,
+                SourceChannel = order.SourceChannel,
+                SourceChannelCode = order.SourceChannelCode,
+                Status = order.Status,
+                FromPhone = order.FromPhone,
+                FromName = order.FromName,
+                AuditTime = redPackAudit.LevelOneAuditTime,
+                ApprovedAmount = redPackAudit.ApprovedAmount,
+                IsIssued = redPackAudit.IsIssued,
+                County = order.County,
+                // IsRectify = s.IsRepetition
+                IsDeal = snapshot.IsDeal,
+                NetworkENumber = snapshot.NetworkENumber,
+                IsTruth = snapshot.IsTruth,
+                IsTruthDepartment = snapshot.IsTruthDepartment,
+                IsRepetition = snapshot.IsRepetition,
+                CreationTime = order.CreationTime,
+                OrgLevelOneCode = order.OrgLevelOneCode,
+                OrgLevelOneName = order.OrgLevelOneName,
+                AuditId = redPackAudit.AuditId,
+                AuditName = redPackAudit.AuditName,
+                AuditOrgId = redPackAudit.AuditOrgId,
+                AuditOrgName = redPackAudit.AuditOrgName,
+                AuditRemark = redPackAudit.AuditRemark,
+                BankCardNo = record.BankCardNo,
+                OpenBank = record.OpenBank,
+            });
+        return query;
+
+    }
+
     #endregion
 }

+ 7 - 1
src/Hotline.Application/Snapshot/SnapshotApplicationBase.cs

@@ -74,10 +74,11 @@ public abstract class SnapshotApplicationBase
     private readonly IFileDomainService _fileDomainService;
     private readonly ICommunityInfoRepository _communityInfoRepository;
     private readonly IRedPackAuditRepository _redPackAuditRepository;
+    private readonly IRedPackGuiderAuditRepository _redPackGuiderAuditRepository;
     private readonly IOrderVisitRepository _orderVisitRepository;
     private readonly IOrderVisitDetailRepository _orderVisitDetailRepository;
 
-    public SnapshotApplicationBase(IThirdIdentiyService thirdLoginService, IRepository<Industry> industryRepository, ISnapshotBulletinRepository bulletinRepository, ISessionContext sessionContext, IRepository<RedPackRecord> redPackRecordRepository, IRepository<Order> orderRepository, IThirdAccountRepository thirdAccountRepository, IOrderSnapshotRepository orderSnapshotRepository, ISystemSettingCacheManager systemSettingCacheManager, ISystemAreaDomainService systemAreaDomainService, IFileRepository fileRepository, ISystemDicDataCacheManager systemDicDataCacheManager, ISnapshotOrderPublishRepository snapshotOrderPublishRepository, IRepository<WorkflowTrace> workflowTraceRepository, IPractitionerRepository practitionerRepository, IRepository<SystemArea> systemAreaRepository, IVolunteerRepository volunteerRepository, IVolunteerReportRepository volunteerReportRepository, ISystemLogRepository systemLog, IGuiderSystemService guiderSystemService, ICapPublisher capPublisher, Publisher publisher, IGuiderInfoRepository guiderInfoRepository, IFileDomainService fileDomainService, ICommunityInfoRepository communityInfoRepository, IRedPackAuditRepository redPackAuditRepository, IOrderVisitRepository orderVisitRepository, IOrderVisitDetailRepository orderVisitDetailRepository)
+    public SnapshotApplicationBase(IThirdIdentiyService thirdLoginService, IRepository<Industry> industryRepository, ISnapshotBulletinRepository bulletinRepository, ISessionContext sessionContext, IRepository<RedPackRecord> redPackRecordRepository, IRepository<Order> orderRepository, IThirdAccountRepository thirdAccountRepository, IOrderSnapshotRepository orderSnapshotRepository, ISystemSettingCacheManager systemSettingCacheManager, ISystemAreaDomainService systemAreaDomainService, IFileRepository fileRepository, ISystemDicDataCacheManager systemDicDataCacheManager, ISnapshotOrderPublishRepository snapshotOrderPublishRepository, IRepository<WorkflowTrace> workflowTraceRepository, IPractitionerRepository practitionerRepository, IRepository<SystemArea> systemAreaRepository, IVolunteerRepository volunteerRepository, IVolunteerReportRepository volunteerReportRepository, ISystemLogRepository systemLog, IGuiderSystemService guiderSystemService, ICapPublisher capPublisher, Publisher publisher, IGuiderInfoRepository guiderInfoRepository, IFileDomainService fileDomainService, ICommunityInfoRepository communityInfoRepository, IRedPackAuditRepository redPackAuditRepository, IOrderVisitRepository orderVisitRepository, IOrderVisitDetailRepository orderVisitDetailRepository, IRedPackGuiderAuditRepository redPackGuiderAuditRepository)
     {
         _thirdLoginService = thirdLoginService;
         _industryRepository = industryRepository;
@@ -107,6 +108,7 @@ public abstract class SnapshotApplicationBase
         _redPackAuditRepository = redPackAuditRepository;
         _orderVisitRepository = orderVisitRepository;
         _orderVisitDetailRepository = orderVisitDetailRepository;
+        _redPackGuiderAuditRepository = redPackGuiderAuditRepository;
     }
 
     #region 小程序
@@ -802,6 +804,10 @@ public abstract class SnapshotApplicationBase
             IsSend = false,
         };
         await _redPackAuditRepository.AddAsync(entity, cancellationToken);
+        var guiderAudit = entity.Adapt<RedPackGuiderAudit>();
+        guiderAudit.ShouldAmount = industry.GuiderReadPackAmount;
+        guiderAudit.PhoneNumber = snapshot.MemberMobile;
+        await _redPackGuiderAuditRepository.AddAsync(guiderAudit, cancellationToken);
         return "ok";
     }
     #endregion

+ 1 - 1
src/Hotline.Application/Snapshot/ZiGongSnapshotApplication.cs

@@ -24,7 +24,7 @@ namespace Hotline.Application.Snapshot;
 [Injection(AppScopes = EAppScope.ZiGong)]
 public class ZiGongSnapshotApplication : SnapshotApplicationBase, ISnapshotApplication, IScopeDependency
 {
-    public ZiGongSnapshotApplication(IThirdIdentiyService thirdLoginService, IRepository<Industry> industryRepository, ISnapshotBulletinRepository bulletinRepository, ISessionContext sessionContext, IRepository<RedPackRecord> redPackRecordRepository, IRepository<Order> orderRepository, IThirdAccountRepository thirdAccountRepository, IOrderSnapshotRepository orderSnapshotRepository, ISystemSettingCacheManager systemSettingCacheManager, ISystemAreaDomainService systemAreaDomainService, IFileRepository fileRepository, ISystemDicDataCacheManager systemDicDataCacheManager, ISnapshotOrderPublishRepository snapshotOrderPublishRepository, IRepository<WorkflowTrace> workflowTraceRepository, IPractitionerRepository practitionerRepository, IRepository<SystemArea> systemAreaRepository, IVolunteerRepository volunteerRepository, IVolunteerReportRepository volunteerReportRepository, ISystemLogRepository systemLog, IGuiderSystemService guiderSystemService, ICapPublisher capPublisher, Publisher publisher, IGuiderInfoRepository guiderInfoRepository, IFileDomainService fileDomainService, ICommunityInfoRepository communityInfoRepository, IRedPackAuditRepository redPackAuditRepository, IOrderVisitRepository orderVisitRepository, IOrderVisitDetailRepository orderVisitDetailRepository) : base(thirdLoginService, industryRepository, bulletinRepository, sessionContext, redPackRecordRepository, orderRepository, thirdAccountRepository, orderSnapshotRepository, systemSettingCacheManager, systemAreaDomainService, fileRepository, systemDicDataCacheManager, snapshotOrderPublishRepository, workflowTraceRepository, practitionerRepository, systemAreaRepository, volunteerRepository, volunteerReportRepository, systemLog, guiderSystemService, capPublisher, publisher, guiderInfoRepository, fileDomainService, communityInfoRepository, redPackAuditRepository, orderVisitRepository, orderVisitDetailRepository)
+    public ZiGongSnapshotApplication(IThirdIdentiyService thirdLoginService, IRepository<Industry> industryRepository, ISnapshotBulletinRepository bulletinRepository, ISessionContext sessionContext, IRepository<RedPackRecord> redPackRecordRepository, IRepository<Order> orderRepository, IThirdAccountRepository thirdAccountRepository, IOrderSnapshotRepository orderSnapshotRepository, ISystemSettingCacheManager systemSettingCacheManager, ISystemAreaDomainService systemAreaDomainService, IFileRepository fileRepository, ISystemDicDataCacheManager systemDicDataCacheManager, ISnapshotOrderPublishRepository snapshotOrderPublishRepository, IRepository<WorkflowTrace> workflowTraceRepository, IPractitionerRepository practitionerRepository, IRepository<SystemArea> systemAreaRepository, IVolunteerRepository volunteerRepository, IVolunteerReportRepository volunteerReportRepository, ISystemLogRepository systemLog, IGuiderSystemService guiderSystemService, ICapPublisher capPublisher, Publisher publisher, IGuiderInfoRepository guiderInfoRepository, IFileDomainService fileDomainService, ICommunityInfoRepository communityInfoRepository, IRedPackAuditRepository redPackAuditRepository, IOrderVisitRepository orderVisitRepository, IOrderVisitDetailRepository orderVisitDetailRepository, IRedPackGuiderAuditRepository redPackGuiderAuditRepository) : base(thirdLoginService, industryRepository, bulletinRepository, sessionContext, redPackRecordRepository, orderRepository, thirdAccountRepository, orderSnapshotRepository, systemSettingCacheManager, systemAreaDomainService, fileRepository, systemDicDataCacheManager, snapshotOrderPublishRepository, workflowTraceRepository, practitionerRepository, systemAreaRepository, volunteerRepository, volunteerReportRepository, systemLog, guiderSystemService, capPublisher, publisher, guiderInfoRepository, fileDomainService, communityInfoRepository, redPackAuditRepository, orderVisitRepository, orderVisitDetailRepository, redPackGuiderAuditRepository)
     {
     }
 }

+ 18 - 0
src/Hotline.Repository.SqlSugar/Snapshot/RedPackGuiderAuditRepository.cs

@@ -0,0 +1,18 @@
+using Hotline.Repository.SqlSugar.DataPermissions;
+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.Repository.SqlSugar.Snapshot;
+public class RedPackGuiderAuditRepository : BaseRepository<RedPackGuiderAudit>, IRedPackGuiderAuditRepository, IScopeDependency
+{
+    public RedPackGuiderAuditRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder) : base(uow, dataPermissionFilterBuilder)
+    {
+    }
+}

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

@@ -441,6 +441,221 @@ public class SnapshotOrderAuditItemsOutDto
     public string AuditStatusTxt => AuditStatus.GetDescription();
 }
 
+/// <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="IsTruthDepartment">部门是否属实</param>
+/// <param name="BeginAuditTime">审批开始时间</param>
+/// <param name="EndAuditTime">审批结束时间</param>
+/// <param name="BeginFiledTime">办结开始时间</param>
+/// <param name="EndFiledTime">办结结束时间</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>
+/// <param name="Status">审核状态: -1: 全部; 0: 待审批; 1: 同意; 2: 拒绝;</param>
+public record SnapshotOrderGuiderAuditItemsInDto(string? No, string? Title,
+    string? FromPhone,
+    DateTime? BeginCreationTime,
+    DateTime? EndCreationTime,
+    bool? IsDeal,
+    bool? IsTruth,
+    bool? IsTruthDepartment,
+    DateTime? BeginAuditTime,
+    DateTime? EndAuditTime,
+    DateTime? BeginFiledTime,
+    DateTime? EndFiledTime,
+    bool? IsIssued,
+    string? IndustryId,
+    double? ConfigAmount,
+    double? AcutalAmount,
+    double? ApprovedAmount,
+    bool? IsDanger,
+    int? Status) : PagedRequest;
+
+public class SnapshotOrderGuiderAuditItemsOutDto
+{
+    /// <summary>
+    /// 红包审核Id
+    /// </summary>
+    public string Id { get; set; }
+
+    /// <summary>
+    /// 红包审核Id
+    /// </summary>
+    public string RedPackAuditId { get; set; }
+
+    /// <summary>
+    /// OrderId
+    /// </summary>
+    public string OrderId { get; set; }
+
+    /// <summary>
+    /// No
+    /// </summary>
+    public string No { get; set; }
+
+    /// <summary>
+    /// 标题
+    /// </summary>
+    public string Title { 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? 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 bool? IsIssued { get; set; }
+
+    /// <summary>
+    /// 市民奖励
+    /// </summary>
+    public string CitizenAward { get; set; }
+
+    /// <summary>
+    /// 区域
+    /// </summary>
+    public string County { get; set; }
+
+    /// <summary>
+    /// 部门是否整改完成;
+    /// 是否整改
+    /// </summary>
+    public bool IsRectify { get; set; }
+
+    /// <summary>
+    /// 部门是否属实
+    /// </summary>
+    public bool? IsTruthDepartment { get; set; }
+
+    /// <summary>
+    /// 网格员是否属实
+    /// </summary>
+    public bool? IsTruth { get; set; }
+
+    /// <summary>
+    /// 网格员是否办理
+    /// </summary>
+    public bool? IsDeal { get; set; }
+
+    /// <summary>
+    /// 网格E通编号
+    /// </summary>
+    public string? NetworkENumber { 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; }
+
+    /// <summary>
+    /// 红包审核状态
+    /// </summary>
+    public ERedPackAuditStatus AuditStatus { get; set; }
+
+    /// <summary>
+    /// 红包审核状态
+    /// </summary>
+    public string AuditStatusTxt => AuditStatus.GetDescription();
+}
+
 public class GetRedPackAuditSMSTemplateOutDto
 {
     /// <summary>
@@ -674,3 +889,110 @@ public class GetAuditBackBaseDataOutDto
     /// </summary>
     public string AcceptTypeCode { get; set; }
 }
+
+public record GuiderReplyItemsInDto : PagedRequest
+{
+    /// <summary>
+    /// No
+    /// </summary>
+    public string? No { get; set; }
+
+    /// <summary>
+    /// 标题
+    /// </summary>
+    public string? Title { get; set; }
+
+    /// <summary>
+    /// 网格员姓名
+    /// </summary>
+    public string? GuiderName { get; set; }
+
+    /// <summary>
+    /// 网格员电话
+    /// </summary>
+    public string? GuiderPhoneNumber { get; set; }
+
+    /// <summary>
+    /// E网通编号
+    /// </summary>
+    public string? NewtorkENumber { get; set; }
+
+    /// <summary>
+    /// 状态
+    /// </summary>
+    public EGuiderSystemReplyType? Satus { get; set; }
+
+    /// <summary>
+    /// 受理时间开始
+    /// </summary>
+    public DateTime? BeginCreationTime { get; set; }
+
+    /// <summary>
+    /// 受理时间结束
+    /// </summary>
+    public DateTime? EndCreationTime { get; set; }
+}
+
+public class GuiderReplyItemsOutDto
+{
+    /// <summary>
+    /// OrderId
+    /// </summary>
+    public string Id { get; set; }
+
+    /// <summary>
+    /// 受理编号
+    /// </summary>
+    public string No { get; set; }
+
+    /// <summary>
+    /// 标题
+    /// </summary>
+    public string Title { get; set; }
+
+    /// <summary>
+    /// 受理时间
+    /// </summary>
+    public DateTime CreationTime { get; set; }
+
+    /// <summary>
+    /// 区域
+    /// </summary>
+    public string County { get; set; }
+
+    /// <summary>
+    /// 状态
+    /// </summary>
+    public string ReplyResultTypeTxt  => ReplyResultType.
+        GetDescription();
+
+    /// <summary>
+    /// 办理状态 1,7:流转 2:办结 3:退回 4:网格员签收 5:消息推送 6: 超时自动退单
+    /// </summary>
+    public EGuiderSystemReplyType? ReplyResultType { get; set; }
+
+    /// <summary>
+    /// 网格员回复内容
+    /// </summary>
+    public string? NetworkRemark { get; set; }
+
+    /// <summary>
+    /// 网格员回复时间
+    /// </summary>
+    public DateTime? ReplyDate { get; set; }
+
+    /// <summary>
+    /// 网格员姓名
+    /// </summary>
+    public string? MemberName { get; set; }
+
+    /// <summary>
+    /// 网格员电话
+    /// </summary>
+    public string? MemberMobile { get; set; }
+
+    /// <summary>
+    /// 编号
+    /// </summary>
+    public string? NetworkENumber { get; set; }
+}

+ 5 - 0
src/Hotline.Share/Dtos/Snapshot/RedPackRecordDto.cs

@@ -50,6 +50,11 @@ public class SnapshotRedPackRecordItemsOutDto
     /// </summary>
     public string Id { get; set; }
 
+    /// <summary>
+    /// 工单Id
+    /// </summary>
+    public string OrderId { get; set; }
+
     /// <summary>
     /// No
     /// </summary>

+ 11 - 0
src/Hotline/Snapshot/Interfaces/IRedPackGuiderAuditRepository.cs

@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XF.Domain.Repository;
+
+namespace Hotline.Snapshot.Interfaces;
+public interface IRedPackGuiderAuditRepository : IRepository<RedPackGuiderAudit>
+{
+}

+ 167 - 0
src/Hotline/Snapshot/RedPackGuiderAudit.cs

@@ -0,0 +1,167 @@
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XF.Domain.Repository;
+using Hotline.Orders;
+using Hotline.Share.Enums.Snapshot;
+
+namespace Hotline.Snapshot;
+
+/// <summary>
+/// 网格员红包审核
+/// 先生成审核, 再生成红包发放记录
+/// </summary>
+[Description("网格员红包审核")]
+public class RedPackGuiderAudit : CreationSoftDeleteEntity
+{
+    /// <summary>
+    /// 关联工单编号
+    /// <inheritdoc cref="Order"/>表的Id字段
+    /// </summary>    
+    [SugarColumn(ColumnDescription = "关联工单编号")]
+    public string OrderId { get; set; }
+
+    /// <summary>
+    /// 领取手机号码
+    /// </summary>
+    [SugarColumn(ColumnDescription = "领取红包手机号码")]
+    public string? PhoneNumber { get; set; }
+
+    /// <summary>
+    /// 一级审核状态
+    /// </summary>
+    [SugarColumn(ColumnDescription = "一级审核状态")]
+    public ERedPackAuditStatus LevelOneStatus { get; set; }
+
+    /// <summary>
+    /// 二级审核状态
+    /// </summary>
+    [SugarColumn(ColumnDescription = "二级审核状态")]
+    public ERedPackAuditStatus? LevelTwoStatus { get; set; }
+
+    /// <summary>
+    /// 一级审批时间
+    /// </summary>
+    [SugarColumn(ColumnDescription = "审批时间")]
+    public DateTime? LevelOneAuditTime { get; set; }
+
+    /// <summary>
+    /// 二级审批时间
+    /// </summary>
+    [SugarColumn(ColumnDescription = "审批时间")]
+    public DateTime? LevelTwoAuditTime { get; set; }
+
+    /// <summary>
+    /// 配置金额
+    /// </summary>
+    [SugarColumn(ColumnDescription = "配置金额")]
+    public double ShouldAmount { get; set; }
+
+    /// <summary>
+    /// 审批金额
+    /// </summary>
+    [SugarColumn(ColumnDescription = "审批金额")]
+    public double? ApprovedAmount { get; set; }
+
+    /// <summary>
+    /// 实发金额
+    /// </summary>
+    [SugarColumn(ColumnDescription = "实发金额")]
+    public double? AcutalAmount { get; set; }
+
+    /// <summary>
+    /// 补充发放金额
+    /// </summary>
+    [SugarColumn(ColumnDescription = "补充发放金额")]
+    public double? ReplenishAmount { get; set; }
+
+    /// <summary>
+    /// 补充发放时间
+    /// </summary>
+    [SugarColumn(ColumnDescription = "补充发放时间")]
+    public DateTime? ReplenishTime { get; set; }
+
+    /// <summary>
+    /// 补充发放备注
+    /// </summary>
+    [SugarColumn(ColumnDescription = "补充发放备注")]
+    public string? ReplenishRemark { get; set; }
+
+    /// <summary>
+    /// 补充发放类型
+    /// </summary>
+    [SugarColumn(ColumnDescription = "补充发放类型")]
+    public string? ReplenishType { get; set; }
+
+    /// <summary>
+    /// 补充发放类型Id
+    /// </summary>
+    [SugarColumn(ColumnDescription = "补充发放类型Id")]
+    public string? ReplenishTypeId { get; set; }
+
+    /// <summary>
+    /// 网格员奖励发放结果
+    /// </summary>
+    [SugarColumn(ColumnDescription = "网格员奖励发放结果")]
+    public bool IsSend { get; set; }
+
+    /// <summary>
+    /// 网格员奖励发放备注
+    /// </summary>
+    [SugarColumn(ColumnDescription = "网格员奖励发放备注")]
+    public string? SendRemarks { get; set; }
+
+    /// <summary>
+    /// 操作人
+    /// </summary>
+    [SugarColumn(ColumnDescription = "操作人")]
+    public string? AuditId { get; set; }
+
+    /// <summary>
+    /// 操作人
+    /// </summary>
+    [SugarColumn(ColumnDescription = "操作人")]
+    public string? AuditName { get; set; }
+
+    /// <summary>
+    /// 审批部门
+    /// </summary>
+    [SugarColumn(ColumnDescription = "审批部门")]
+    public string? AuditOrgId { get; set; }
+
+    /// <summary>
+    /// 审批部门名称
+    /// </summary>
+    [SugarColumn(ColumnDescription = "审批部门名称")]
+    public string? AuditOrgName { get; set; }
+
+    /// <summary>
+    /// 审批意见
+    /// </summary>
+    [SugarColumn(ColumnDescription = "审批意见")]
+    public string? AuditRemark { get; set; }
+
+    public string? Remark { get; set; }
+
+    /// <summary>
+    /// 是否已发放
+    /// </summary>
+    [SugarColumn(ColumnDescription = "是否已发放")]
+    public bool? IsIssued { get; set; }
+
+    /// <summary>
+    /// 短信Id
+    /// </summary>
+    [SugarColumn(ColumnDescription = "短信Id")]
+    public string? SMSTemplateId { get; set; }
+
+    /// <summary>
+    /// 是否发送短信
+    /// </summary>
+    [SugarColumn(ColumnDescription = "是否发送短信")]
+    public bool? IsSendSMS { get; set; }
+}