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

Merge branch 'feature/snapshot' into dev

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

+ 1 - 0
src/Hotline.Application.Tests/Application/SnapshotApplicationMockTest.cs

@@ -105,6 +105,7 @@ namespace Hotline.Application.Tests.Snapshot
                 _guiderInfoRepositoryMock.Object,
                 _fileDomainServiceMock.Object,
                 null,
+                null,
                 null
             );
         }

+ 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) : 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)
+    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) : 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)
     {
     }
 }

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

@@ -73,8 +73,9 @@ public abstract class SnapshotApplicationBase
     private readonly IFileDomainService _fileDomainService;
     private readonly ICommunityInfoRepository _communityInfoRepository;
     private readonly IRedPackAuditRepository _redPackAuditRepository;
+    private readonly IOrderVisitRepository _orderVisitRepository;
 
-    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)
+    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)
     {
         _thirdLoginService = thirdLoginService;
         _industryRepository = industryRepository;
@@ -102,6 +103,7 @@ public abstract class SnapshotApplicationBase
         _fileDomainService = fileDomainService;
         _communityInfoRepository = communityInfoRepository;
         _redPackAuditRepository = redPackAuditRepository;
+        _orderVisitRepository = orderVisitRepository;
     }
 
     #region 小程序
@@ -215,7 +217,8 @@ public abstract class SnapshotApplicationBase
             .LeftJoin<Order>((s, o) => s.Id == o.Id)
             .Where((s, o) => s.IndustryId == dto.IndustryId)
             .WhereIF(dto.Keyword.NotNullOrEmpty(), (s, o) => s.No.Contains(dto.Keyword) || s.ArrangeTitle.Contains(dto.Keyword))
-            .Select<OrderPublishOutDto>((s, o) => new OrderPublishOutDto { 
+            .Select<OrderPublishOutDto>((s, o) => new OrderPublishOutDto
+            {
                 Title = s.ArrangeTitle
             }, true)
             .ToFixedListAsync(dto, requestAborted);
@@ -349,6 +352,26 @@ public abstract class SnapshotApplicationBase
                 item.Path = fileServiceUrl + item.Path;
             }
         }
+
+        await _orderVisitRepository.Queryable()
+            .Where(m => m.OrderId == id).FirstAsync(cancellationToken)
+            .Then(orderVisit =>
+            {
+                if (orderVisit.NowEvaluate != null)
+                {
+                    outDto.IsVisit = true;
+                }
+            });
+
+        await _redPackAuditRepository.Queryable()
+            .Where(m => m.OrderId == id)
+            .FirstAsync(cancellationToken)
+            .Then(redPack =>
+            {
+                outDto.AuditRemark = redPack.AuditRemark;
+                outDto.RedPackStatus = redPack.Status;
+            });
+
         var traces = await _workflowTraceRepository.Queryable()
             .Where(m => m.ExternalId == order.Id && m.Status == EWorkflowStepStatus.Handled)
             .OrderBy(m => m.AcceptTime)
@@ -597,7 +620,7 @@ public abstract class SnapshotApplicationBase
             return;
         }
         if (entity.UniqueKey != community.GetUniqueKey())
-        { 
+        {
             await _communityInfoRepository.UpdateAsync(community, cancellationToken);
         }
     }
@@ -724,7 +747,7 @@ public abstract class SnapshotApplicationBase
     {
         var order = await _orderRepository.Queryable()
             .Where(m => m.Id == orderId)
-            .Select(m => new {m.Id, m.Status , m.No})
+            .Select(m => new { m.Id, m.Status, m.No })
             .FirstAsync(cancellationToken) ?? throw new UserFriendlyException($"{orderId} 工单不存在");
         if (order.Status != EOrderStatus.Filed) return $"{order.No} 工单状态非 {EOrderStatus.Filed} 不处理;";
         var redPack = await _redPackAuditRepository.GetByOrderIdAsync(orderId, 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) : 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)
+    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) : 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)
     {
     }
 }

+ 23 - 0
src/Hotline.Share/Dtos/Snapshot/OrderPublishDto.cs

@@ -1,4 +1,5 @@
 using Hotline.Share.Dtos.File;
+using Hotline.Share.Enums.Snapshot;
 using Hotline.Share.Requests;
 using System;
 using System.Collections.Generic;
@@ -6,6 +7,7 @@ using System.ComponentModel.DataAnnotations;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using XF.Utility.EnumExtensions;
 
 namespace Hotline.Share.Dtos.Snapshot;
 internal class OrderPublishDto
@@ -84,10 +86,31 @@ public class OrderPublishDetailOutDto : OrderPublishOutDto
     /// </summary>
     public List<FileJson> FileJson { get; set; } = [];
 
+    /// <summary>
+    /// 市民是否评价
+    /// </summary>
+    public bool IsVisit { get; set; } = false;
+
     /// <summary>
     /// 办理流程
     /// </summary>
     public List<SnapshotWorkflow> Workflow { get; set; }
+
+    /// <summary>
+    /// 审核意见
+    /// </summary>
+    public string? AuditRemark { get; set; }
+
+    /// <summary>
+    /// 奖励审核状态
+    /// </summary>
+    public ERedPackAuditStatus RedPackStatus { get; set; }
+
+    /// <summary>
+    /// 奖励审核状态(中文)
+    /// </summary>
+    public string RedPackStatusTxt => RedPackStatus.GetDescription();
+
 }
 
 public class SnapshotWorkflow

+ 2 - 0
src/Hotline.WeChat/WeChatService.cs

@@ -4,6 +4,7 @@ using Hotline.Users;
 using Microsoft.Extensions.Logging;
 using Senparc.CO2NET.Extensions;
 using Senparc.Weixin;
+using Senparc.Weixin.MP.Containers;
 using Senparc.Weixin.WxOpen.AdvancedAPIs.Sns;
 using Senparc.Weixin.WxOpen.AdvancedAPIs.WxApp;
 using System.Configuration;
@@ -44,6 +45,7 @@ public class WeChatService : IThirdIdentiyService
     /// <returns></returns>
     public async Task<ThirdPhoneOutDto> GetPhoneNumberAsync(ThirdTokenDto dto)
     {
+        await JsApiTicketContainer.RegisterAsync(dto.AppId, dto.Secret);
         _logger.LogInformation($"GetPhoneNumberAsync: {dto.ToJson()}");
         var result = await BusinessApi.GetUserPhoneNumberAsync(dto.AppId, dto.TelCode);
         if (result.errcode != ReturnCode.请求成功)