Bläddra i källkod

Merge branch 'test' of http://110.188.24.182:10023/Fengwo/hotline into test

田爽 3 månader sedan
förälder
incheckning
ad9f907df2

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

@@ -188,6 +188,14 @@ public class RedPackController : BaseController
     public async Task<PagedDto<SnapshotRedPackRecordItemsGuiderOutDto>> GetRedPackRecordGuiderItemsAsync([FromQuery] SnapshotRedPackRecordItemsGuiderInDto dto)
         => (await _redPackApplication.GetRedPackRecordGuiderItemsAsync(dto).ToPagedListAsync(dto)).ToPaged();
 
+    /// <summary>
+    /// 红包发放明细
+    /// </summary>
+    /// <returns></returns>
+    [HttpGet("record/send")]
+    public async Task<PagedDto<SnapshotRedPackRecordSendOutDto>> GetRedPackRecordDetailAsync([FromQuery] SnapshotRedPackRecordSendInDto dto)
+        => (await _redPackApplication.GetRedPackRecordDetailAsync(dto).ToPagedListAsync(dto)).ToPaged();
+
     /// <summary>
     /// 批量发送红包
     /// </summary>

+ 23 - 1
src/Hotline.Api/Controllers/Snapshot/SnapshotOrderController.cs

@@ -1,5 +1,6 @@
 using Amazon.Runtime.Internal.Transform;
 using Hotline.Application.FlowEngine;
+using Hotline.Application.Orders;
 using Hotline.Application.Snapshot;
 using Hotline.Caching.Interfaces;
 using Hotline.Caching.Services;
@@ -43,8 +44,9 @@ public class SnapshotOrderController : BaseController
     private readonly IOrderRepository _orderRepository;
     private readonly IWorkflowApplication _workflowApplication;
     private readonly IRepository<WorkflowDefinition> _workflowDefinitionRepository;
+    private readonly IOrderApplication _orderApplication;
 
-    public SnapshotOrderController(IOrderSnapshotRepository orderSnapshotRepository, IOrderSnapshotApplication orderSnapshotApplication, ISystemAreaDomainService systemAreaDomainService, ISystemDicDataCacheManager systemDicDataCacheManager, IIndustryRepository industryRepository, ISessionContext sessionContext, IWorkflowDomainService workflowDomainService, IOrderRepository orderRepository, IWorkflowApplication workflowApplication, IRepository<WorkflowDefinition> workflowDefinitionRepository)
+    public SnapshotOrderController(IOrderSnapshotRepository orderSnapshotRepository, IOrderSnapshotApplication orderSnapshotApplication, ISystemAreaDomainService systemAreaDomainService, ISystemDicDataCacheManager systemDicDataCacheManager, IIndustryRepository industryRepository, ISessionContext sessionContext, IWorkflowDomainService workflowDomainService, IOrderRepository orderRepository, IWorkflowApplication workflowApplication, IRepository<WorkflowDefinition> workflowDefinitionRepository, IOrderApplication orderApplication)
     {
         _orderSnapshotRepository = orderSnapshotRepository;
         _orderSnapshotApplication = orderSnapshotApplication;
@@ -56,6 +58,7 @@ public class SnapshotOrderController : BaseController
         _orderRepository = orderRepository;
         _workflowApplication = workflowApplication;
         _workflowDefinitionRepository = workflowDefinitionRepository;
+        _orderApplication = orderApplication;
     }
 
     /// <summary>
@@ -116,6 +119,15 @@ public class SnapshotOrderController : BaseController
     public async Task<PagedDto<SignOrderSnapshotItemsOutDto>> GetSignOrderSnapshotItemsAsync([FromQuery] SignOrderSnapshotItemsInDto dto)
         => (await _orderSnapshotApplication.GetSignOrderSnapshotItemsAsync(dto).ToPagedListAsync(dto)).ToPaged();
 
+    /// <summary>
+    /// 获取工单已经标记集合
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    [HttpGet("signed")]
+    public async Task<PagedDto<SignedOrderSnapshotItemsOutDto>> GetSignedOrderSnapshotItemsAsync([FromQuery] SignedOrderSnapshotItemsInDto dto)
+        => (await _orderSnapshotApplication.GetSignedOrderSnapshotItemsAsync(dto).ToPagedListAsync(dto)).ToPaged();
+
     /// <summary>
     /// 标记详情
     /// </summary>
@@ -230,4 +242,14 @@ public class SnapshotOrderController : BaseController
         };
     }
 
+    /// <summary>
+    /// 网格员超时未回复, 处理工单
+    /// </summary>
+    /// <param name="id">工单Id</param>
+    /// <returns></returns>
+    [HttpPut("guider/timeout/{id}")]
+    public async Task HandleFromWanggeyuanToMaskAsync(string id)
+    {
+        await _orderApplication.HandleFromWanggeyuanToMaskAsync(id, HttpContext.RequestAborted);
+    }
 }

+ 4 - 0
src/Hotline.Application.Tests/Application/OrderSnapshotApplicationTest.cs

@@ -39,6 +39,7 @@ public class OrderSnapshotApplicationTest : TestBase
     /// <summary>
     /// 随手拍办理流程
     /// 工单标注 : 验证数据是否保存正确
+    /// 获取已标注集合: 验证是否有已标注的数据
     /// </summary>
     /// <returns></returns>
     [Fact]
@@ -67,6 +68,9 @@ public class OrderSnapshotApplicationTest : TestBase
         var labelLog = await _orderSnapshotApplication.GetSignOrderSnapshotLogItemsAsync(new SignOrderSnapshotLogItemsInDto()).ToPagedListAsync(new PagedRequest());
         labelLog.Items.Any(m => m.Title.IsNullOrEmpty()).ShouldBe(false);
         labelLog.Items.Any(m => m.SourceChannel.IsNullOrEmpty()).ShouldBe(false);
+
+        var sigedItems = await _orderSnapshotApplication.GetSignedOrderSnapshotItemsAsync(new SignedOrderSnapshotItemsInDto()).ToListAsync();
+        sigedItems.Any(m => m.OrderId == order.Id).ShouldBe(true);
     }
 }
 

+ 2 - 2
src/Hotline.Application.Tests/Application/SnapshotApplicationMockTest.cs

@@ -26,7 +26,7 @@ namespace Hotline.Application.Tests.Snapshot
     public class SnapshotApplicationTest
     {
         private readonly Mock<IThirdIdentiyService> _thirdLoginServiceMock;
-        private readonly Mock<IRepository<Industry>> _industryRepositoryMock;
+        private readonly Mock<IIndustryRepository> _industryRepositoryMock;
         private readonly Mock<ISnapshotBulletinRepository> _bulletinRepositoryMock;
         private readonly Mock<ISessionContext> _sessionContextMock;
         private readonly Mock<IRepository<RedPackRecord>> _redPackRecordRepositoryMock;
@@ -55,7 +55,7 @@ namespace Hotline.Application.Tests.Snapshot
         public SnapshotApplicationTest()
         {
             _thirdLoginServiceMock = new Mock<IThirdIdentiyService>();
-            _industryRepositoryMock = new Mock<IRepository<Industry>>();
+            _industryRepositoryMock = new Mock<IIndustryRepository>();
             _bulletinRepositoryMock = new Mock<ISnapshotBulletinRepository>();
             _sessionContextMock = new Mock<ISessionContext>();
             _redPackRecordRepositoryMock = new Mock<IRepository<RedPackRecord>>();

+ 6 - 5
src/Hotline.Application/Orders/Handles/SnapshotHandler/GuiderSystemTimeoutHandler.cs

@@ -26,14 +26,17 @@ namespace Hotline.Application.Orders.Handles.Snapshot
     {
         private readonly ISystemSettingCacheManager _systemSettingCacheManager;
         private readonly IOrderApplication _orderApplication;
+        private readonly ISystemLogRepository _systemLogRepository;
 
         public GuiderSystemTimeoutHandler(
             ISystemSettingCacheManager systemSettingCacheManager,
             IOrderApplication orderApplication
-            )
+,
+            ISystemLogRepository systemLogRepository)
         {
             _systemSettingCacheManager = systemSettingCacheManager;
             _orderApplication = orderApplication;
+            _systemLogRepository = systemLogRepository;
         }
 
         /// <summary>Handles a notification</summary>
@@ -41,10 +44,8 @@ namespace Hotline.Application.Orders.Handles.Snapshot
         /// <param name="cancellationToken">Cancellation token</param>
         public async Task Handle(GuiderSystemTimeOutBackNotification notification, CancellationToken cancellationToken)
         {
-            bool.TryParse(
-                _systemSettingCacheManager.GetSetting(SettingConstants.Snapshot)?.SettingValue[0],
-                out bool isSnapshotEnable);
-            if (isSnapshotEnable)
+            _systemLogRepository.Add("网格员超时未回复", notification.OrderId, "收到事件", "", 1);
+            if (_systemSettingCacheManager.Snapshot)
             {
                 await _orderApplication.HandleFromWanggeyuanToMaskAsync(notification.OrderId, cancellationToken);
             }

+ 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, 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)
+    public DefaultSnapshotApplication(IThirdIdentiyService thirdLoginService, IIndustryRepository 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)
     {
     }
 }

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

@@ -110,4 +110,11 @@ public interface IOrderSnapshotApplication
     /// <param name="dto"></param>
     /// <returns></returns>
     ISugarQueryable<OrderSnapshotItemsOutDto> GetOrderSnapshotItemsAsync(OrderSnapshotItemsInDto dto);
+
+    /// <summary>
+    /// 获取工单已经标记集合
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    ISugarQueryable<SignedOrderSnapshotItemsOutDto> GetSignedOrderSnapshotItemsAsync(SignedOrderSnapshotItemsInDto dto);
 }

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

@@ -64,6 +64,12 @@ public interface IRedPackApplication
     /// <returns></returns>
     ISugarQueryable<SnapshotOrderGuiderAuditItemsOutDto> GetRedPackGuiderAuditItemsAsync(SnapshotOrderGuiderAuditItemsInDto dto);
 
+    /// <summary>
+    /// 红包发放明细
+    /// </summary>
+    /// <returns></returns>
+    ISugarQueryable<SnapshotRedPackRecordSendOutDto> GetRedPackRecordDetailAsync(SnapshotRedPackRecordSendInDto dto);
+
     /// <summary>
     /// 网格员红包发放记录
     /// </summary>

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

@@ -422,6 +422,9 @@ public class OrderSnapshotApplication : IOrderSnapshotApplication, IScopeDepende
     {
         var query = _orderSnapshotRepository.Queryable()
             .LeftJoin<Order>((snapshot, order) => snapshot.Id == order.Id)
+            .WhereIF(dto.No.NotNullOrEmpty(), (snapshot, order) => order.No.Contains(dto.No))
+            .WhereIF(dto.Title.NotNullOrEmpty(), (snapshot, order) => order.Title.Contains(dto.Title))
+            .WhereIF(dto.ActualHandleOrgName.NotNullOrEmpty(), (snapshot, order) => order.ActualHandleOrgName.Contains(dto.ActualHandleOrgName))
             .Select((snapshot, order) => new OrderSnapshotItemsOutDto 
             {
                 CreationTime = order.CreationTime
@@ -429,4 +432,34 @@ public class OrderSnapshotApplication : IOrderSnapshotApplication, IScopeDepende
              , true);
         return query;
     }
+
+    /// <summary>
+    /// 获取工单已经标记集合
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    public ISugarQueryable<SignedOrderSnapshotItemsOutDto> GetSignedOrderSnapshotItemsAsync(SignedOrderSnapshotItemsInDto dto)
+    {
+        var query = _orderSnapshotRepository.Queryable()
+            .LeftJoin<Order>((snapshot, order) => order.Id == snapshot.Id)
+            .Where((snapshot, order) => order.Status >= EOrderStatus.Published)
+            .WhereIF(dto.No.NotNullOrEmpty(), (snapshot, order) => order.No.Contains(dto.No))
+            .WhereIF(dto.Title.NotNullOrEmpty(), (snapshot, order) => order.Title.Contains(dto.Title))
+            .WhereIF(dto.FromName.NotNullOrEmpty(), (snapshot, order) => order.FromName.Contains(dto.FromName))
+            .WhereIF(dto.FromPhone.NotNullOrEmpty(), (snapshot, order) => order.FromPhone.Contains(dto.FromPhone))
+            .WhereIF(dto.Label.NotNullOrEmpty(), (snapshot, order) => snapshot.LabelName.Contains(dto.Label))
+            .WhereIF(dto.BeginSignTime.HasValue && dto.EndSignTime.HasValue, (snapshot, order) => snapshot.SignTime >= dto.BeginSignTime && snapshot.SignTime <= dto.EndSignTime)
+            .OrderByDescending((snapshot, order) => snapshot.CreationTime)
+            .Select((snapshot, order) => new SignedOrderSnapshotItemsOutDto
+            { 
+                LabelName = snapshot.LabelName,
+                OrderId = order.Id,
+                SignTime = snapshot.SignTime,
+                SignUserName = snapshot.SignUserName,
+                SourceChannel = order.SourceChannel,
+            }, true);
+
+        return query;
+    }
+
 }

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

@@ -464,6 +464,11 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
         return query;
     }
 
+    public ISugarQueryable<SnapshotRedPackRecordSendOutDto> GetRedPackRecordDetailAsync(SnapshotRedPackRecordSendInDto dto)
+    {
+        throw new NotImplementedException();
+    }
+
 
     #endregion
 }

+ 4 - 3
src/Hotline.Application/Snapshot/SnapshotApplicationBase.cs

@@ -51,7 +51,7 @@ public abstract class SnapshotApplicationBase
     /// <summary>
     /// 行业
     /// </summary>
-    private readonly IRepository<Industry> _industryRepository;
+    private readonly IIndustryRepository _industryRepository;
     private readonly IThirdIdentiyService _thirdLoginService;
     private readonly ISessionContext _sessionContext;
     private readonly IRepository<RedPackRecord> _redPackRecordRepository;
@@ -78,7 +78,7 @@ public abstract class SnapshotApplicationBase
     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, IRedPackGuiderAuditRepository redPackGuiderAuditRepository)
+    public SnapshotApplicationBase(IThirdIdentiyService thirdLoginService, IIndustryRepository 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;
@@ -564,7 +564,8 @@ public abstract class SnapshotApplicationBase
         _systemLog.Add(LogName, $"OrderNo: {order.No}", status: 1);
         if (result.Code == 0)
         {
-            await _capPublisher.PublishAsync(EventNames.GuiderSystemReplyDelay, new PostGuiderSystemDelayed(order.Id));
+            int intervalTime = await _industryRepository.GetIntervalTimeAsync(orderSnapshot.IndustryId, _sysSetting.OvertimeBack, cancellationToken);
+            await _capPublisher.PublishDelayAsync(TimeSpan.FromHours(intervalTime), EventNames.GuiderSystemReplyDelay, new PostGuiderSystemDelayed(order.Id), cancellationToken: cancellationToken);
         }
     }
 

+ 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, 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)
+    public ZiGongSnapshotApplication(IThirdIdentiyService thirdLoginService, IIndustryRepository 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)
     {
     }
 }

+ 8 - 0
src/Hotline.Repository.SqlSugar/Snapshot/IndustryRepository.cs

@@ -16,4 +16,12 @@ public class IndustryRepository : BaseRepository<Industry>, IIndustryRepository,
     public IndustryRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder) : base(uow, dataPermissionFilterBuilder)
     {
     }
+
+    public async Task<int> GetIntervalTimeAsync(string industryId, int defaultValue,  CancellationToken cancellationToken)
+    {
+        var time = await Queryable().Where(m => m.Id == industryId).Select(m => m.IntervalTime).FirstAsync(cancellationToken);
+        if (time <= 0)
+            return defaultValue;
+        return time;
+    }
 }

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

@@ -981,6 +981,118 @@ public class GuiderReplyItemsOutDto
     public string? NetworkENumber { get; set; }
 }
 
+public record SignedOrderSnapshotItemsInDto : PagedRequest
+{
+    /// <summary>
+    /// 受理编号
+    /// </summary>
+    public string? No { get; set; }
+
+    /// <summary>
+    /// 标题
+    /// </summary>
+    public string? Title { get; set; }
+
+    /// <summary>
+    /// 来电人
+    /// </summary>
+    public string? FromName { get; set; }
+
+    /// <summary>
+    /// 来电人电话
+    /// </summary>
+    public string? FromPhone { get; set; }
+
+    /// <summary>
+    /// 标注类型
+    /// </summary>
+    public string? Label { get; set; }
+
+    /// <summary>
+    /// 标注开始时间
+    /// </summary>
+    public DateTime? BeginSignTime { get; set; }
+
+    /// <summary>
+    /// 标注结束时间
+    /// </summary>
+    public DateTime? EndSignTime { get; set; }
+}
+
+
+public class SignedOrderSnapshotItemsOutDto
+{
+    /// <summary>
+    /// Id
+    /// </summary>
+    public string OrderId { get; set; }
+
+    /// <summary>
+    /// 受理编号
+    /// </summary>
+    public string No { get; set; }
+
+    /// <summary>
+    /// 信件状态
+    /// </summary>
+    public EOrderStatus Status { get; set; }
+
+    /// <summary>
+    /// 信件状态
+    /// </summary>
+    public string StatusTxt => Status.GetDescription();
+
+    /// <summary>
+    /// 来源
+    /// </summary>
+    public string SourceChannel { get; set; }
+
+    /// <summary>
+    /// 标题
+    /// </summary>
+    public string Title { get; set; }
+
+    /// <summary>
+    /// 来电人姓名
+    /// </summary>
+    public string FromName { get; set; }
+
+    /// <summary>
+    /// 来电人电话
+    /// </summary>
+    public string FromPhone { get; set; }
+
+    /// <summary>
+    /// 区域
+    /// </summary>
+    public string County { get; set; }
+
+    /// <summary>
+    /// 行业
+    /// </summary>
+    public string IndustryName { get; set; }
+
+    /// <summary>
+    /// 受理时间
+    /// </summary>
+    public DateTime CreationTime { get; set; }
+
+    /// <summary>
+    /// 标注人
+    /// </summary>
+    public string? SignUserName { get; set; }
+
+    /// <summary>
+    /// 标注类型
+    /// </summary>
+    public string LabelName { get; set; }
+
+    /// <summary>
+    /// 标记时间
+    /// </summary>
+    public DateTime? SignTime { get; set; }
+}
+
 public record SignOrderSnapshotItemsInDto : PagedRequest
 {
     /// <summary>

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

@@ -12,6 +12,57 @@ internal class RedPackRecordDto
 {
 }
 
+public class SnapshotRedPackRecordSendOutDto
+{ }
+
+public record SnapshotRedPackRecordSendInDto : PagedRequest
+{
+    /// <summary>
+    /// 状态;
+    /// 0: 全部;
+    /// 1: 已领取;
+    /// 2: 已退款;
+    /// 3: 发放失败;
+    /// 4: 待领取;
+    /// </summary>
+    public int Status { get; set; }
+
+    /// <summary>
+    /// 行业
+    /// </summary>
+    public string? IndustryId { get; set; }
+
+    /// <summary>
+    /// 编号
+    /// </summary>
+    public string? No { get; set; }
+
+    /// <summary>
+    /// 发放用户类型
+    /// </summary>
+    public EReadPackUserType? UserType { get; set; }
+
+    /// <summary>
+    /// 用户OpenId
+    /// </summary>
+    public string? OpenId { get; set; }
+
+    /// <summary>
+    /// 发送状态
+    /// </summary>
+    public EReadPackSendStatus? SendStatus { get; set; }
+
+    /// <summary>
+    /// 是否领取
+    /// </summary>
+    public bool? IsReceive { get; set; }
+
+    /// <summary>
+    /// 是否补领
+    /// </summary>
+    public bool? IsReplace { get; set; }
+}
+
 public record SnapshotRedPackRecordItemsGuiderInDto : SnapshotRedPackRecordItemsInDto
 {
     /// <summary>

+ 1 - 0
src/Hotline/Snapshot/Interfaces/IIndustryRepository.cs

@@ -9,4 +9,5 @@ using XF.Domain.Repository;
 namespace Hotline.Snapshot.Interfaces;
 public interface IIndustryRepository : IRepository<Industry>
 {
+    Task<int> GetIntervalTimeAsync(string industryId, int defaultValue, CancellationToken cancellationToken);
 }