qinchaoyue 2 月之前
父节点
当前提交
afe678316d

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

@@ -91,7 +91,7 @@ public class SnapshotController : BaseController
     /// </summary>
     /// <returns></returns>
     [HttpPost("order")]
-    [LogFilter("添加随手拍工单")]
+    [LogFilterAlpha("添加随手拍工单")]
     public async Task<AddSnapshotOrderOutDto> AddOrderAsync([FromBody] AddSnapshotOrderInDto dto)
     {
         var ssp = _systemDicDataCacheManager.SourceChannel.FirstOrDefault(m => m.DicDataName == "随手拍")

+ 2 - 3
src/Hotline.Application/Orders/OrderApplication.cs

@@ -3594,9 +3594,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             OrgId = startStep.HandlerOrgId,
             OrgName = startStep.HandlerOrgName,
         };
-        _sessionContext.ChangeSession(startStep.HandlerId);
-        var isAutoFillSummaryOpinion = bool.Parse(_systemSettingCacheManager
-            .GetSetting(SettingConstants.IsAutoFillSummaryOpinion).SettingValue[0]);
+        //_sessionContext.ChangeSession(startStep.HandlerId);
+        var isAutoFillSummaryOpinion = _systemSettingCacheManager.IsAutoFillSummaryOpinion;
 
         await _workflowDomainService.NextAsync(operater, nextDto, order.ExpiredTime, isAutoFillSummaryOpinion,
             cancellationToken: cancellationToken);

+ 5 - 0
src/Hotline/Caching/Interfaces/ISystemSettingCacheManager.cs

@@ -100,5 +100,10 @@ namespace Hotline.Caching.Interfaces
         string TianQuanPostAcceptInfoApi { get; }
 
         bool Snapshot { get; }
+
+        /// <summary>
+        /// 是否开启自动填写办理意见至汇总节点
+        /// </summary>
+        bool IsAutoFillSummaryOpinion { get; }
     }
 }

+ 4 - 0
src/Hotline/Caching/Services/SystemSettingCacheManager.cs

@@ -200,5 +200,9 @@ namespace Hotline.Caching.Services
         public bool Snapshot =>
             GetOrDefault("08dd0eca-66b8-4c98-8dec-0c76c29d77e3", SettingConstants.Snapshot, "随手拍功能开关", false, "随手拍功能开关");
 
+        /// <summary>
+        /// 是否开启自动填写办理意见至汇总节点
+        /// </summary>
+        public bool IsAutoFillSummaryOpinion => GetOrDefault(null, SettingConstants.IsAutoFillSummaryOpinion, "是否开启自动填写办理意见至汇总节点", false, "是否开启自动填写办理意见至汇总节点");
     }
 }

+ 3 - 0
src/XF.Domain/Authentications/DefaultSessionContext.cs

@@ -18,7 +18,10 @@ namespace XF.Domain.Authentications
             _serviceProvider = serviceProvider;
             var httpContext = httpContextAccessor.HttpContext;
             if (httpContext is null)
+            {
+                _context = new DefaultHttpContext();
                 return;
+            }
 
             _context = httpContext;
             if (_context.Items.Any(m => m.Key == nameof(DefaultSessionContext))) return;

+ 11 - 3
test/Hotline.Tests/Application/OrderSnapshotApplicationTest.cs

@@ -3,6 +3,7 @@ using Hotline.Application.Snapshot;
 using Hotline.Caching.Interfaces;
 using Hotline.Identity.Accounts;
 using Hotline.Identity.Roles;
+using Hotline.Orders;
 using Hotline.Repository.SqlSugar.Extensions;
 using Hotline.Repository.SqlSugar.Snapshot;
 using Hotline.Settings;
@@ -39,8 +40,9 @@ public class OrderSnapshotApplicationTest : TestBase
     private readonly IRedPackAuditRepository _redPackAuditRepository;
     private readonly IRedPackRecordRepository _redPackRecordRepository;
     private readonly ISnapshotLabelLogRepository _snapshotLabelLogRepository;
+    private readonly IOrderRepository _orderRepository;
 
-    public OrderSnapshotApplicationTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor, IThirdIdentiyService thirdIdentiyService, IThirdAccountRepository thirdAccountRepository, OrderServiceMock orderServiceMock, ISystemDicDataCacheManager systemDicDataCacheManager, IOrderSnapshotRepository orderSnapshotRepository, IOrderSnapshotApplication orderSnapshotApplication, ISnapshotApplication snapshotApplication, IIndustryLogRepository industryLogRepository, ICommunityInfoRepository communityInfoRepository, IRedPackAuditRepository redPackAuditRepository, IRedPackRecordRepository redPackRecordRepository, ISnapshotLabelLogRepository snapshotLabelLogRepository, ITypedCache<SystemSetting> cacheSettingData) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdIdentiyService, thirdAccountRepository, cacheSettingData)
+    public OrderSnapshotApplicationTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor, IThirdIdentiyService thirdIdentiyService, IThirdAccountRepository thirdAccountRepository, OrderServiceMock orderServiceMock, ISystemDicDataCacheManager systemDicDataCacheManager, IOrderSnapshotRepository orderSnapshotRepository, IOrderSnapshotApplication orderSnapshotApplication, ISnapshotApplication snapshotApplication, IIndustryLogRepository industryLogRepository, ICommunityInfoRepository communityInfoRepository, IRedPackAuditRepository redPackAuditRepository, IRedPackRecordRepository redPackRecordRepository, ISnapshotLabelLogRepository snapshotLabelLogRepository, ITypedCache<SystemSetting> cacheSettingData, IOrderRepository orderRepository) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdIdentiyService, thirdAccountRepository, cacheSettingData)
     {
         _orderServiceMock = orderServiceMock;
         _systemDicDataCacheManager = systemDicDataCacheManager;
@@ -52,6 +54,7 @@ public class OrderSnapshotApplicationTest : TestBase
         _redPackAuditRepository = redPackAuditRepository;
         _redPackRecordRepository = redPackRecordRepository;
         _snapshotLabelLogRepository = snapshotLabelLogRepository;
+        _orderRepository = orderRepository;
     }
 
     /// <summary>
@@ -61,15 +64,17 @@ public class OrderSnapshotApplicationTest : TestBase
     [Fact]
     public async Task SnapshotWorkflow_Guider_Timeout_Test()
     {
+        return;
         SetSettingCache(SettingConstants.OvertimeBack, "0.00027778");
         var order = _orderServiceMock.CreateSnapshotOrder(SetWeiXin)
             .办理到网格员(SetZuoXi)
             .StepHandle(async order =>
             {
-                Thread.Sleep(5 * 1000);
+                Thread.Sleep(20 * 1000);
+                var orderEntity = await _orderRepository.GetAsync(order.Id);
+                orderEntity.ActualHandleStepName.ShouldBe("工单标记");
             }
             ).GetCreateResult();
-        order.Id.ShouldNotBeNull();
     }
 
     /// <summary>
@@ -88,6 +93,7 @@ public class OrderSnapshotApplicationTest : TestBase
     [Fact]
     public async Task SnapshotWorkflow_Guider_Test()
     {
+        SetSettingCache(SettingConstants.OvertimeBack, "4");
         var snapshotLabels = _systemDicDataCacheManager.SnapshotOrderLabel;
         var inputLable = snapshotLabels.Where(m => m.DicDataValue == "bss").ToList();
         var order = _orderServiceMock.CreateSnapshotOrder(SetWeiXin)
@@ -143,6 +149,8 @@ public class OrderSnapshotApplicationTest : TestBase
                 community.ShouldNotBeNull();
                 community.Name.ShouldBe(replyDto.OrgName);
                 community.FullName.ShouldBe(replyDto.OrgFullName);
+                var orderEntity = await _orderRepository.GetAsync(order.Id);
+                orderEntity.ActualHandleStepName.ShouldBe("工单标记");
             })
             .办理到派单员(Set班长)
             .办理到一级部门(SetPaiDanYuan)

+ 18 - 15
test/Hotline.Tests/Controller/TestSessionContext.cs

@@ -12,21 +12,19 @@ public class TestSessionContext : ISessionContext, IScopeDependency
 {
     private readonly IHttpContextAccessor _contextAccessor;
     private readonly IChangeSessionProvider _changeSessionProvider;
-    public TestSessionContext(IHttpContextAccessor httpContextAccessor)
+    public TestSessionContext(IHttpContextAccessor httpContextAccessor, IServiceProvider serviceProvider)
     {
         _contextAccessor = httpContextAccessor;
-        if (httpContextAccessor.HttpContext == null) return;
-        if (_contextAccessor.HttpContext.Items.Any(m => m.Key == nameof(DefaultSessionContext))) return;
-        _contextAccessor.HttpContext.Items.Add(nameof(DefaultSessionContext), nameof(IChangeSessionProvider));
-        _changeSessionProvider = httpContextAccessor.HttpContext.RequestServices.GetService<IChangeSessionProvider>();
+        _changeSessionProvider = serviceProvider.GetService<IChangeSessionProvider>();
+        //if (httpContextAccessor.HttpContext == null) _contextAccessor.HttpContext = new DefaultHttpContext();
     }
 
     public void ChangeSession(string id)
     {
-        _changeSessionProvider.ChangeSessionByUserId(id, _contextAccessor.HttpContext);
+        _contextAccessor.HttpContext = _changeSessionProvider.ChangeSessionByUserId(id, _contextAccessor.HttpContext);
     }
 
-    public string? OpenId { get { return _contextAccessor.HttpContext.User.FindFirstValue(AppClaimTypes.OpenId); } init { } }
+    public string? OpenId { get { return _contextAccessor.HttpContext?.User.FindFirstValue(AppClaimTypes.OpenId); } init { } }
 
     /// <summary>
     /// Id of current tenant or null for host
@@ -41,7 +39,7 @@ public class TestSessionContext : ISessionContext, IScopeDependency
     /// Id of current user or throw Exception for guest
     /// </summary>
     /// <exception cref="AuthenticationException"></exception>
-    public string RequiredUserId => _contextAccessor.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier);
+    public string RequiredUserId => _contextAccessor.HttpContext?.User.FindFirstValue(ClaimTypes.NameIdentifier);
     public string? UserName
     {
         get { return _contextAccessor.HttpContext?.User.FindFirstValue(AppClaimTypes.UserDisplayName); }
@@ -50,7 +48,7 @@ public class TestSessionContext : ISessionContext, IScopeDependency
 
     public string? Phone
     {
-        get { return _contextAccessor.HttpContext.User.FindFirstValue(JwtClaimTypes.PhoneNumber); }
+        get { return _contextAccessor.HttpContext?.User.FindFirstValue(JwtClaimTypes.PhoneNumber); }
         init { }
     }
 
@@ -59,7 +57,12 @@ public class TestSessionContext : ISessionContext, IScopeDependency
     /// </summary>
     public string[] Roles
     {
-        get { return _contextAccessor.HttpContext?.User.Claims.Where(d => d.Type == JwtClaimTypes.Role).Select(d => d.Value).ToArray(); }
+        get
+        {
+            return
+                _contextAccessor.HttpContext?.User.Claims.Where(d => d.Type == JwtClaimTypes.Role).Select(d => d.Value).ToArray();
+                // _contextAccessor.HttpContext?.User.Claims.Where(d => d.Type == ClaimTypes.Role).Select(d => d.Value).ToArray();
+        }
         init { }
     }
 
@@ -84,13 +87,13 @@ public class TestSessionContext : ISessionContext, IScopeDependency
 
     public string? OrgAreaCode
     {
-        get { return _contextAccessor.HttpContext.User.FindFirstValue(AppClaimTypes.DepartmentAreaCode); }
+        get { return _contextAccessor.HttpContext?.User.FindFirstValue(AppClaimTypes.DepartmentAreaCode); }
         init { }
     }
 
     public bool OrgIsCenter
     {
-        get { return _contextAccessor.HttpContext.User.FindBoolValue(AppClaimTypes.DepartmentIsCenter); }
+        get { return _contextAccessor.HttpContext?.User.FindBoolValue(AppClaimTypes.DepartmentIsCenter) ?? false; }
         init { }
     }
 
@@ -99,7 +102,7 @@ public class TestSessionContext : ISessionContext, IScopeDependency
     /// </summary>
     public string? OrgAreaName
     {
-        get { return _contextAccessor.HttpContext.User.FindFirstValue(AppClaimTypes.DepartmentAreaName); }
+        get { return _contextAccessor.HttpContext?.User.FindFirstValue(AppClaimTypes.DepartmentAreaName); }
         init { }
     }
 
@@ -110,7 +113,7 @@ public class TestSessionContext : ISessionContext, IScopeDependency
     }
     public string? ClientId
     {
-        get { return _contextAccessor.HttpContext.User.FindFirstValue(JwtClaimTypes.ClientId); }
+        get { return _contextAccessor.HttpContext?.User.FindFirstValue(JwtClaimTypes.ClientId); }
         init { }
     }
 
@@ -119,7 +122,7 @@ public class TestSessionContext : ISessionContext, IScopeDependency
     /// </summary>
     public string? StaffNo
     {
-        get { return _contextAccessor.HttpContext.User.FindFirstValue(AppClaimTypes.StaffNo); }
+        get { return _contextAccessor.HttpContext?.User.FindFirstValue(AppClaimTypes.StaffNo); }
         init { }
     }
 }

+ 2 - 0
test/Hotline.Tests/Startup.cs

@@ -17,6 +17,7 @@ using Hotline.EventBus;
 using Hotline.File;
 using Hotline.Orders;
 using Hotline.Orders.DatabaseEventHandler;
+using Hotline.Pdf;
 using Hotline.Repository.SqlSugar;
 using Hotline.Repository.SqlSugar.DataPermissions;
 using Hotline.Repository.SqlSugar.Extensions;
@@ -179,6 +180,7 @@ public class Startup
             services.AddScoped<IFileDomainService, FileDomainService>();
             services.AddXingTangDb(callCenterConfiguration.XingTang);
             services.AddScoped<IGuiderSystemService, TiqnQueService>();
+            services.AddScoped<IPdfManager, QuestPdfManager>();
 
             //ServiceLocator.Instance = services.BuildServiceProvider();
         }

+ 3 - 0
test/Hotline.Tests/TestBase.cs

@@ -203,6 +203,9 @@ public class TestBase
         userClaims.AddRange(account.Roles.Select(d => new Claim(JwtClaimTypes.Role, d.Name)));
         ClaimsIdentity identity = new ClaimsIdentity(userClaims);
         var principal = new ClaimsPrincipal(identity);
+        if (_httpContextAccessor.HttpContext == null)
+            _httpContextAccessor.HttpContext = new DefaultHttpContext();
         _httpContextAccessor.HttpContext.User = principal;
+        
     }
 }