Bläddra i källkod

Merge branch 'feature/snapshot' into dev

qinchaoyue 5 månader sedan
förälder
incheckning
4c23ee6e95

+ 2 - 2
src/Hotline.Api/Controllers/Snapshot/SnapshotController.cs

@@ -159,8 +159,8 @@ public class SnapshotController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpGet("order")]
-    public virtual async Task<PagedDto<OrderOutDto>> QueryOrderListAsync([FromQuery] OrderInDto dto)
-        => await _snapshotApplication.GetSnapshotOrdersAsync(dto);
+    public virtual async Task<IList<OrderOutDto>> QueryOrderListAsync([FromQuery] OrderInDto dto)
+        => await _snapshotApplication.GetSnapshotOrdersAsync(dto, HttpContext.RequestAborted);
 
     /// <summary>
     /// 获取我提交的线索详情

+ 2 - 1
src/Hotline.Application.Tests/Application/DefaultCallApplicationTest.cs

@@ -8,6 +8,7 @@ using Hotline.Orders;
 using Hotline.Share.Dtos.CallCenter;
 using Hotline.Share.Dtos.Order;
 using Hotline.Share.Enums.CallCenter;
+using Hotline.Snapshot.Interfaces;
 using Hotline.Users;
 using Microsoft.AspNetCore.Http;
 using Microsoft.Extensions.DependencyInjection;
@@ -24,7 +25,7 @@ public class DefaultCallApplicationTest : TestBase
     public readonly IFixture _fixture;
     private readonly IOrderRepository _orderRepository;
 
-    public DefaultCallApplicationTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor, XingTangCallApplication defaultCallApplication, IOrderVisitRepository orderVisitRepository, IRepository<CallNative> callNativeRepository, IOrderRepository orderRepository, IThirdIdentiyService thirdService) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdService)
+    public DefaultCallApplicationTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor, XingTangCallApplication defaultCallApplication, IOrderVisitRepository orderVisitRepository, IRepository<CallNative> callNativeRepository, IOrderRepository orderRepository, IThirdIdentiyService thirdService, IThirdAccountRepository thirdAccount) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdService, thirdAccount)
     {
         _fixture = new Fixture();
         _defaultCallApplication = defaultCallApplication;

+ 2 - 1
src/Hotline.Application.Tests/Application/KnowApplicationTest.cs

@@ -6,6 +6,7 @@ using Hotline.KnowledgeBase;
 using Hotline.KnowledgeBase.Notifies;
 using Hotline.Share.Dtos.Knowledge;
 using Hotline.Share.Tools;
+using Hotline.Snapshot.Interfaces;
 using Hotline.Users;
 using Mapster;
 using MediatR;
@@ -31,7 +32,7 @@ public class KnowApplicationTest : TestBase
     private readonly IRepository<KnowledgeWord> _knowledgeWordRepository;
     private readonly IRepository<KnowledgeHotWord> _knowledgeHotWordRepository;
 
-    public KnowApplicationTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor, IKnowApplication knowApplication, IRepository<KnowledgeRelationType> knowledgeRelationTypeRepository, IMediator mediator, IRepository<KnowledgeBase.Knowledge> knowledgeRepository, IKnowledgeDomainService knowledgeDomainService, IRepository<KnowledgeWord> knowledgeWordRepository, IRepository<KnowledgeHotWord> knowledgeHotWordRepository, IThirdIdentiyService thirdService) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdService)
+    public KnowApplicationTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor, IKnowApplication knowApplication, IRepository<KnowledgeRelationType> knowledgeRelationTypeRepository, IMediator mediator, IRepository<KnowledgeBase.Knowledge> knowledgeRepository, IKnowledgeDomainService knowledgeDomainService, IRepository<KnowledgeWord> knowledgeWordRepository, IRepository<KnowledgeHotWord> knowledgeHotWordRepository, IThirdIdentiyService thirdService, IThirdAccountRepository thirdAccount) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdService, thirdAccount)
     {
         _knowApplication = knowApplication;
         _knowledgeRelationTypeRepository = knowledgeRelationTypeRepository;

+ 15 - 22
src/Hotline.Application.Tests/Application/SnapshotApplicationTest.cs

@@ -18,6 +18,7 @@ using Hotline.Users;
 using Microsoft.AspNetCore.Http;
 using Microsoft.Extensions.DependencyInjection;
 using Shouldly;
+using System;
 using XF.Domain.Repository;
 using XF.Utility.EnumExtensions;
 
@@ -34,7 +35,7 @@ public class SnapshotApplicationTest : TestBase
     private readonly IOrderRepository _orderRepository;
     private readonly IOrderSnapshotRepository _orderSnapshotRepository;
 
-    public SnapshotApplicationTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor, ISnapshotApplication snapshotApplication, IIdentityAppService identityAppService, IRepository<RedPackRecord> redPackRecordRepository, IIndustryApplication industryApplication, IIndustryRepository industryRepository, IFileRepository fileRepository, OrderServiceMock orderServiceMock, IOrderRepository orderRepository, IOrderSnapshotRepository orderSnapshotRepository, IThirdIdentiyService thirdService) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdService)
+    public SnapshotApplicationTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor, ISnapshotApplication snapshotApplication, IIdentityAppService identityAppService, IRepository<RedPackRecord> redPackRecordRepository, IIndustryApplication industryApplication, IIndustryRepository industryRepository, IFileRepository fileRepository, OrderServiceMock orderServiceMock, IOrderRepository orderRepository, IOrderSnapshotRepository orderSnapshotRepository, IThirdIdentiyService thirdService, IThirdAccountRepository thirdAccount) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdService, thirdAccount)
     {
         _snapshotApplication = snapshotApplication;
         _identityAppService = identityAppService;
@@ -102,11 +103,12 @@ public class SnapshotApplicationTest : TestBase
             .OrderBy(m => m.DisplayOrder)
             .FirstAsync();
 
-        SetZuoXi();
+        SetWeiXin();
         var order = _orderServiceMock.CreateSnapshotOrder()
-            .办理到派单员()
+            .办理到派单员(SetZuoXi)
             .办理到归档(SetPaiDanYuan)
             .GetCreateResult();
+        SetWeiXin();
         var orderEntity = await _orderRepository.GetAsync(order.Id);
         var orderSnapshot = await _orderSnapshotRepository.GetAsync(order.Id);
         var inDto = new AddSnapshotOrderPublishInDto
@@ -169,12 +171,12 @@ public class SnapshotApplicationTest : TestBase
     {
         var dto = new OrderInDto();
         dto.KeyWords = key;
-        var page = await _snapshotApplication.GetSnapshotOrdersAsync(dto);
-        page.Total.ShouldNotBe(0);
-        page.Items.FirstOrDefault()?.IndustryName.ShouldNotBeNullOrEmpty();
-        page.Items.FirstOrDefault()?.OrderNo.ShouldNotBeNullOrEmpty();
-        page.Items.FirstOrDefault()?.StatusText.ShouldNotBeNullOrEmpty();
-        page.Items.FirstOrDefault()?.Area.ShouldNotBeNullOrEmpty();
+        var page = await _snapshotApplication.GetSnapshotOrdersAsync(dto, CancellationToken.None);
+        page.Count.ShouldNotBe(0);
+        page.FirstOrDefault()?.IndustryName.ShouldNotBeNullOrEmpty();
+        page.FirstOrDefault()?.OrderNo.ShouldNotBeNullOrEmpty();
+        page.FirstOrDefault()?.StatusText.ShouldNotBeNullOrEmpty();
+        page.FirstOrDefault()?.Area.ShouldNotBeNullOrEmpty();
     }
 
     [Theory]
@@ -185,24 +187,15 @@ public class SnapshotApplicationTest : TestBase
     public async Task SnapshotOrderStatus_Test(EOrderQueryStatus status, int count)
     {
         var dto = new OrderInDto { Status = status };
-        var page = await _snapshotApplication.GetSnapshotOrdersAsync(dto);
-        page.Total.ShouldNotBe(0, $"状态:{status.GetDescription()} 数据为空");
-        page.Total.ShouldBe(count, $"状态:{status.GetDescription()} 数据条数错误");
-        page.Items.FirstOrDefault()?.IndustryName.ShouldNotBeNullOrEmpty();
-        page.Items.FirstOrDefault()?.OrderNo.ShouldNotBeNullOrEmpty();
-        page.Items.FirstOrDefault()?.StatusText.ShouldNotBeNullOrEmpty();
-        page.Items.FirstOrDefault()?.Area.ShouldNotBeNullOrEmpty();
-
-        dto.PageIndex = 2;
-        page = await _snapshotApplication.GetSnapshotOrdersAsync(dto);
-        page.Items.Count.ShouldBe(0);
+        var page = await _snapshotApplication.GetSnapshotOrdersAsync(dto, CancellationToken.None);
+        page.Count.ShouldNotBe(0, $"状态:{status.GetDescription()} 数据为空");
     }
 
     [Fact]
     public async Task GetSnapshotOrderDetail_Test()
     {
-        var page = await _snapshotApplication.GetSnapshotOrdersAsync(new OrderInDto());
-        var id = page.Items.First().Id;
+        var page = await _snapshotApplication.GetSnapshotOrdersAsync(new OrderInDto(), CancellationToken.None);
+        var id = page.First().Id;
         var detail = await _snapshotApplication.GetSnapshotOrderDetailAsync(id);
         detail.Id.ShouldBe(id);
         detail.IndustryName.ShouldNotBeNull();

+ 2 - 1
src/Hotline.Application.Tests/Application/SystemSettingCacheManagerTest.cs

@@ -4,6 +4,7 @@ using Hotline.Caching.Services;
 using Hotline.Identity.Accounts;
 using Hotline.Identity.Roles;
 using Hotline.Settings;
+using Hotline.Snapshot.Interfaces;
 using Hotline.Users;
 using Microsoft.AspNetCore.Http;
 using Microsoft.Extensions.DependencyInjection;
@@ -22,7 +23,7 @@ public class SystemSettingCacheManagerTest : TestBase
     private readonly ISystemDicDataCacheManager _systemDicDataCacheManager;
     private readonly IRepository<SystemSetting> _systemSettingRepository;
 
-    public SystemSettingCacheManagerTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor, ISystemSettingCacheManager systemSettingCacheManager, ISystemDicDataCacheManager systemDicDataCacheManager, IRepository<SystemSetting> systemSettingRepository, IThirdIdentiyService thirdService) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdService)
+    public SystemSettingCacheManagerTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor, ISystemSettingCacheManager systemSettingCacheManager, ISystemDicDataCacheManager systemDicDataCacheManager, IRepository<SystemSetting> systemSettingRepository, IThirdIdentiyService thirdService, IThirdAccountRepository thirdAccount) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdService, thirdAccount)
     {
         _systemSettingCacheManager = systemSettingCacheManager;
         _systemDicDataCacheManager = systemDicDataCacheManager;

+ 2 - 1
src/Hotline.Application.Tests/Controller/KnowledgeControllerTest.cs

@@ -8,6 +8,7 @@ using Hotline.Share.Dtos.FlowEngine;
 using Hotline.Share.Dtos.Knowledge;
 using Hotline.Share.Enums.FlowEngine;
 using Hotline.Share.Enums.KnowledgeBase;
+using Hotline.Snapshot.Interfaces;
 using Hotline.Users;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
@@ -27,7 +28,7 @@ public class KnowledgeControllerTest : TestBase
     private readonly KnowledgeController _knowledgeController;
     private readonly IRepository<KnowledgeBase.Knowledge> _knowledgeRepository;
 
-    public KnowledgeControllerTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, KnowledgeServiceMock knowledgeServiceMock, KnowledgeController knowledgeController, IRepository<KnowledgeBase.Knowledge> knowledgeRepository, IHttpContextAccessor httpContextAccessor, IThirdIdentiyService thirdService) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdService)
+    public KnowledgeControllerTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, KnowledgeServiceMock knowledgeServiceMock, KnowledgeController knowledgeController, IRepository<KnowledgeBase.Knowledge> knowledgeRepository, IHttpContextAccessor httpContextAccessor, IThirdIdentiyService thirdService, IThirdAccountRepository thirdAccount) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdService, thirdAccount)
     {
         _knowledgeServiceMock = knowledgeServiceMock;
         _knowledgeController = knowledgeController;

+ 2 - 1
src/Hotline.Application.Tests/Controller/OrderControllerTest.cs

@@ -28,6 +28,7 @@ using Hotline.Share.Enums.FlowEngine;
 using Hotline.Share.Enums.Order;
 using Hotline.Share.Enums.Settings;
 using Hotline.Share.Tools;
+using Hotline.Snapshot.Interfaces;
 using Hotline.Users;
 using MediatR;
 using Microsoft.AspNetCore.Http;
@@ -64,7 +65,7 @@ public class OrderControllerTest : TestBase
     private readonly XingTangCallApplication _defaultCallApplication;
     private readonly ISqlSugarClient _capSqlClient;
 
-    public OrderControllerTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IRepository<Hotspot> hotspotRepository, OrderController orderController, IOrderRepository orderRepository, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, OrderServiceMock orderServiceMock, IRepository<OrderPublish> orderPublishRepository, INotificationHandler<EndWorkflowNotify> orderPublishEndWorkflowHandler, IOrderVisitRepository orderVisitRepository, IRepository<SystemSetting> systemSettingRepository, ISystemSettingCacheManager systemSettingCacheManager, IRepository<CallNative> callNativeRepository, IRepository<CallidRelation> callIdRelationRepository, XingTangCallApplication defaultCallApplication, ISugarUnitOfWork<CapDbContext> capDbContext, IHttpContextAccessor httpContextAccessor, IThirdIdentiyService thirdService) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdService)
+    public OrderControllerTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IRepository<Hotspot> hotspotRepository, OrderController orderController, IOrderRepository orderRepository, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, OrderServiceMock orderServiceMock, IRepository<OrderPublish> orderPublishRepository, INotificationHandler<EndWorkflowNotify> orderPublishEndWorkflowHandler, IOrderVisitRepository orderVisitRepository, IRepository<SystemSetting> systemSettingRepository, ISystemSettingCacheManager systemSettingCacheManager, IRepository<CallNative> callNativeRepository, IRepository<CallidRelation> callIdRelationRepository, XingTangCallApplication defaultCallApplication, ISugarUnitOfWork<CapDbContext> capDbContext, IHttpContextAccessor httpContextAccessor, IThirdIdentiyService thirdService, IThirdAccountRepository thirdAccount) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdService, thirdAccount)
     {
         _hotspotRepository = hotspotRepository;
         _orderController = orderController;

+ 1 - 1
src/Hotline.Application.Tests/Controller/SnapshotControllerTest.cs

@@ -27,7 +27,7 @@ public class SnapshotControllerTest : TestBase
     private readonly IOrderRepository _orderRepository;
     private readonly IOrderSnapshotRepository _orderSnapshotRepository;
     private readonly IIndustryRepository _industryRepository;
-    public SnapshotControllerTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor, SnapshotController snapshotController, IOrderRepository orderRepository, IOrderSnapshotRepository orderSnapshotRepository, IIndustryRepository industryRepository, IThirdIdentiyService thirdService) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdService)
+    public SnapshotControllerTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor, SnapshotController snapshotController, IOrderRepository orderRepository, IOrderSnapshotRepository orderSnapshotRepository, IIndustryRepository industryRepository, IThirdIdentiyService thirdService, IThirdAccountRepository thirdAccount) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdService, thirdAccount)
     {
         _snapshotController = snapshotController;
         _snapshotController.ControllerContext = new ControllerContext

+ 2 - 1
src/Hotline.Application.Tests/Domain/OrderVisitDomainServiceTest.cs

@@ -11,6 +11,7 @@ using Hotline.Share.Dtos.Push;
 using Hotline.Share.Enums.Order;
 using Hotline.Share.Enums.Push;
 using Hotline.Share.Tools;
+using Hotline.Snapshot.Interfaces;
 using Hotline.Users;
 using Mapster;
 using Microsoft.AspNetCore.Http;
@@ -28,7 +29,7 @@ public class OrderVisitDomainServiceTest : TestBase
     private readonly IOrderRepository _orderRepository;
     private readonly OrderServiceMock _orderServiceMock;
 
-    public OrderVisitDomainServiceTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IOrderVisitDomainService orderVisitDomainService, IOrderVisitRepository orderVisitRepository, IRepository<OrderVisitDetail> orderVisitDetailRepository, Publisher publisher, IOrderRepository orderRepository, OrderServiceMock orderServiceMock, IHttpContextAccessor httpContextAccessor, IThirdIdentiyService thirdService) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdService)
+    public OrderVisitDomainServiceTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IOrderVisitDomainService orderVisitDomainService, IOrderVisitRepository orderVisitRepository, IRepository<OrderVisitDetail> orderVisitDetailRepository, Publisher publisher, IOrderRepository orderRepository, OrderServiceMock orderServiceMock, IHttpContextAccessor httpContextAccessor, IThirdIdentiyService thirdService, IThirdAccountRepository thirdAccount) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdService, thirdAccount)
     {
         _orderVisitDomainService = orderVisitDomainService;
         _orderVisitRepository = orderVisitRepository;

+ 1 - 0
src/Hotline.Application.Tests/Infrastructure/TestSettingConstants.cs

@@ -7,6 +7,7 @@ using System.Threading.Tasks;
 namespace Hotline.Application.Tests.Infrastructure;
 public static class TestSettingConstants
 {
+    public const string WeiXinAccountName = "UnitTestWeiXin";
     public const string ZuoXiAccountName = "UnitTestZuoXi";
     public const string PaiDanYuanAccountName = "UnitTestPDY";
     public const string FirstOrgAccountName = "cs";

+ 8 - 3
src/Hotline.Application.Tests/Mock/OrderServiceMock.cs

@@ -18,6 +18,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using XF.Domain.Authentications;
 using XF.Domain.Repository;
 
 namespace Hotline.Application.Tests.Mock;
@@ -30,8 +31,9 @@ public class OrderServiceMock
     private readonly IOrderVisitRepository _orderVisitRepository;
     private readonly SnapshotController _snapshotController;
     public readonly IFixture _fixture;
+    public readonly ISessionContext _sessionContext;
 
-    public OrderServiceMock(OrderController orderController, IRepository<Order> orderRepository, IOrderVisitRepository orderVisitRepository, SnapshotController snapshotController)
+    public OrderServiceMock(OrderController orderController, IRepository<Order> orderRepository, IOrderVisitRepository orderVisitRepository, SnapshotController snapshotController, ISessionContext sessionContext)
     {
         _orderController = orderController;
         _orderController.ControllerContext = new ControllerContext
@@ -46,6 +48,7 @@ public class OrderServiceMock
             HttpContext = new DefaultHttpContext()
         };
         _fixture = new Fixture();
+        _sessionContext = sessionContext;
     }
 
     public OrderServiceMock CreateSnapshotOrder()
@@ -61,6 +64,7 @@ public class OrderServiceMock
         inDto.County = "沿滩区";
         inDto.Description = "单元测试添加的时间描述";
         inDto.IsSecret = false;
+        inDto.PhoneNumber = _sessionContext.Phone;
         //inDto.JobType = 
         foreach (var item in inDto.Files)
         {
@@ -90,8 +94,9 @@ public class OrderServiceMock
         return CreateOrderOutDto;
     }
 
-    public OrderServiceMock 办理到派单员()
-    { 
+    public OrderServiceMock 办理到派单员(Action action = null)
+    {
+        action?.Invoke();
         var stepNextInfo = _orderController.GetFlowStartOptions(CreateOrderOutDto.Id).GetAwaiter().GetResult().ToJson().FromJson<NextStepsDto<NextStepOption>>();
         var stepInfo = stepNextInfo.Steps.FirstOrDefault(m => m.Value == "派单组");
         var stepOrg = stepInfo.Items.FirstOrDefault(m => m.Username == "单元测试派单员");

+ 1 - 1
src/Hotline.Application.Tests/Mock/ThirdTestService.cs

@@ -9,7 +9,7 @@ public class ThirdTestService : IThirdIdentiyService, IScopeDependency
     {
         return new ThirdPhoneOutDto
         {
-            PhoneNumber = "13800138000"
+            PhoneNumber = "138001389877"
         };
     }
 

+ 28 - 18
src/Hotline.Application.Tests/TestBase.cs

@@ -7,6 +7,7 @@ using Hotline.Settings;
 using Hotline.Share.Dtos.Users;
 using Hotline.Share.Enums.Order;
 using Hotline.Share.Enums.User;
+using Hotline.Snapshot.Interfaces;
 using Hotline.Users;
 using IdentityModel;
 using Microsoft.AspNetCore.Http;
@@ -27,9 +28,12 @@ public class TestBase
     private readonly IServiceScopeFactory _scopeFactory;
     public readonly IHttpContextAccessor _httpContextAccessor;
     public readonly IThirdIdentiyService _thirdIdentiyService;
+    public readonly IThirdAccountRepository _thirdAccountRepository;
 
-    public TestBase(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor, IThirdIdentiyService thirdIdentiyService)
+
+    public TestBase(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor, IThirdIdentiyService thirdIdentiyService, IThirdAccountRepository thirdAccountRepository)
     {
+        _thirdAccountRepository = thirdAccountRepository;
         _thirdIdentiyService = thirdIdentiyService;
         _fixture = new Fixture();
         _accountRepository = accountRepository;
@@ -76,18 +80,24 @@ public class TestBase
         SetOperator("坐席", "市民热线服务中心", "单元测试坐席", "001", "13408389849", EUserType.Seat, TestSettingConstants.ZuoXiAccountName);
     }
 
+    public void SetWeiXin()
+    {
+        SetOperator("微信用户", "", "", "", "138001389877", EUserType.Normal, TestSettingConstants.WeiXinAccountName);
+    }
+
     private void SetOperator(string displayName, string fullOrgName, string name, string orgId, string phoneNo, EUserType userType, string userName)
     {
         var account = _accountRepository.GetExtAsync(
             d => d.UserName == userName,
             d => d.Includes(x => x.Roles)).GetAwaiter().GetResult();
 
-        if (account == null)
+        var roleId = _roleRepository.Queryable()
+                       .Where(m => m.DisplayName == displayName)
+                       .Select(m => m.Id)
+                       .First();
+
+        if (account == null && roleId != null)
         {
-            var roleId = _roleRepository.Queryable()
-                .Where(m => m.DisplayName == displayName)
-                .Select(m => m.Id)
-                .First();
             var newUser = new AddUserDto
             {
                 FullOrgName = fullOrgName,
@@ -100,27 +110,27 @@ public class TestBase
                 UserName = userName
             };
             var accountId = _userController.Add(newUser).GetAwaiter().GetResult();
-            // TestSessionConstants.UserId = accountId;
             account = _accountRepository.GetExtAsync(
                 d => d.UserName == userName,
                 d => d.Includes(x => x.Roles)).GetAwaiter().GetResult();
         }
         var user = _userRepository.GetAsync(account.Id).GetAwaiter().GetResult();
-        var third = _thirdIdentiyService.GetTokenAsync(new Share.Dtos.Snapshot.ThirdTokenDto());
+        var third = _thirdIdentiyService.GetTokenAsync(new Share.Dtos.Snapshot.ThirdTokenDto()).GetAwaiter().GetResult();
+        var thirdAccount = _thirdAccountRepository.Get(d => d.OpenId == third.OpenId);
 
-        List<Claim> userClaims = [ 
-            new(JwtClaimTypes.Subject, account.Id),
-            new(JwtClaimTypes.PhoneNumber, account.PhoneNo ?? string.Empty),
+        List<Claim> userClaims = [
+            new(JwtClaimTypes.Subject, account.Id ?? thirdAccount.Id),
+            new(JwtClaimTypes.PhoneNumber, account.PhoneNo ?? thirdAccount.PhoneNumber),
             new(ClaimTypes.NameIdentifier, user.Id),
             new(AppClaimTypes.UserDisplayName, account.Name),
-            new(AppClaimTypes.DepartmentId, user.OrgId ?? string.Empty), 
-            new(AppClaimTypes.DepartmentIsCenter, user.Organization?.IsCenter.ToString() ?? false.ToString()), 
-            new(AppClaimTypes.DepartmentName, user.Organization?.Name ?? string.Empty), 
-            new(AppClaimTypes.DepartmentAreaCode, user.Organization?.AreaCode ?? string.Empty), 
-            new(AppClaimTypes.DepartmentAreaName, user.Organization?.AreaName ?? string.Empty), 
-            new(AppClaimTypes.DepartmentLevel, user.Organization?.Level.ToString() ?? string.Empty), 
+            new(AppClaimTypes.DepartmentId, user.OrgId ?? string.Empty),
+            new(AppClaimTypes.DepartmentIsCenter, user.Organization?.IsCenter.ToString() ?? false.ToString()),
+            new(AppClaimTypes.DepartmentName, user.Organization?.Name ?? string.Empty),
+            new(AppClaimTypes.DepartmentAreaCode, user.Organization?.AreaCode ?? string.Empty),
+            new(AppClaimTypes.DepartmentAreaName, user.Organization?.AreaName ?? string.Empty),
+            new(AppClaimTypes.DepartmentLevel, user.Organization?.Level.ToString() ?? string.Empty),
             new(AppClaimTypes.AreaId, user.OrgId?.GetHigherOrgId() ?? string.Empty),
-            new(AppClaimTypes.OpenId, third.Result.OpenId ?? string.Empty),
+            new(AppClaimTypes.OpenId, thirdAccount.OpenId ?? string.Empty),
         ];
         ClaimsIdentity identity = new ClaimsIdentity(userClaims);
         var principal = new ClaimsPrincipal(identity);

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

@@ -33,7 +33,7 @@ public interface ISnapshotApplication
     /// <summary>
     /// 获取工单列表
     /// </summary>
-    Task<PagedDto<OrderOutDto>> GetSnapshotOrdersAsync(OrderInDto dto);
+    Task<IList<OrderOutDto>> GetSnapshotOrdersAsync(OrderInDto dto, CancellationToken cancellationToken);
 
     /// <summary>
     /// 获取工单详情

+ 5 - 5
src/Hotline.Application/Snapshot/SnapshotApplicationBase.cs

@@ -262,14 +262,14 @@ public abstract class SnapshotApplicationBase
         return outDto;
     }
 
-    public async Task<PagedDto<OrderOutDto>> GetSnapshotOrdersAsync(OrderInDto dto)
+    public async Task<IList<OrderOutDto>> GetSnapshotOrdersAsync(OrderInDto dto, CancellationToken cancellationToken)
     {
         var member = await _thirdAccountRepository.QueryByOpenIdAsync(_sessionContext.OpenId);
         if (member == null)
         {
-            return new PagedDto<OrderOutDto>(0, new List<OrderOutDto>());
+            return new List<OrderOutDto>();
         }
-        var (total, items) = await _orderSnapshotRepository.Queryable()
+        var items = await _orderSnapshotRepository.Queryable()
             .LeftJoin<Order>((snapshot, order) => snapshot.Id == order.Id)
             .Where((snapshot, order) => order.Contact == member.PhoneNumber)
             .WhereIF(dto.Status == EOrderQueryStatus.Appraise, (snapshot, order) => order.Status == EOrderStatus.Visited)
@@ -286,9 +286,9 @@ public abstract class SnapshotApplicationBase
                 CreationTime = order.CreationTime,
                 Area = order.City
             })
-            .ToPagedListAsync(dto.PageIndex, dto.PageSize);
+            .ToFixedListAsync(dto, cancellationToken);
 
-        return new PagedDto<OrderOutDto>(total, items);
+        return items;
     }
 
     public async Task<OrderDetailOutDto> GetSnapshotOrderDetailAsync(string id)

+ 1 - 1
src/Hotline.Share/Dtos/Snapshot/OrderDto.cs

@@ -7,7 +7,7 @@ using XF.Utility.EnumExtensions;
 
 namespace Hotline.Share.Dtos.Snapshot;
 
-public record OrderInDto : PagedRequest
+public class OrderInDto : QueryFixedDto
 {
     /// <summary>
     /// 关键字

+ 1 - 1
src/Hotline.Share/Dtos/Snapshot/OrderPublishDto.cs

@@ -72,7 +72,7 @@ public class OrderPublishDetailOutDto : OrderPublishOutDto
     /// <summary>
     /// 附件
     /// </summary>
-    public List<FileJson> FileJson { get; set; }
+    public List<FileJson> FileJson { get; set; } = [];
 
     /// <summary>
     /// 办理流程

+ 8 - 0
src/Hotline.Share/Enums/Snapshot/EOrderQueryStatus.cs

@@ -1,5 +1,13 @@
 using System.ComponentModel;
 namespace Hotline.Share.Enums;
+
+/// <summary>
+/// 订单状态;
+/// 0: 全部;
+/// 1: 未回复;
+/// 2: 已回复;
+/// 3: 已评价;
+/// </summary>
 public enum EOrderQueryStatus
 {
     /// <summary>