Forráskód Böngészése

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

xf 2 hónapja
szülő
commit
2042b62213

+ 12 - 11
src/Hotline.Api/Controllers/OrderController.cs

@@ -4437,20 +4437,13 @@ public class OrderController : BaseController
         if (!validResult.IsValid)
             throw new UserFriendlyException(
                 $"非法参数, {string.Join(',', validResult.Errors.Select(d => d.ErrorMessage))}");
-        var order = await _orderApplication.SaveOrderWorkflowInfo(dto, HttpContext.RequestAborted);
 
-        // 随手拍业务处理
-        if (_systemSettingCacheManager.Snapshot)
-        {
-            await _orderSnapshotApplication.SaveOrderWorkflowInfo(dto);
-        }
-
-        var workflow = await _workflowDomainService.GetWorkflowAsync(dto.Workflow.WorkflowId, withDefine: true, withSteps: true, withTraces: true,
-            cancellationToken: HttpContext.RequestAborted);
+		var workflow = await _workflowDomainService.GetWorkflowAsync(dto.Workflow.WorkflowId, withDefine: true, withSteps: true, withTraces: true,
+		  cancellationToken: HttpContext.RequestAborted);
 
 		#region 中心归档,自动延期一天
-		if (dto.Workflow.StepType == EStepType.End && dto.Workflow.NextStepCode =="end" && _appOptions.Value.IsYiBin && _sessionContext.OrgIsCenter)
-        {
+		if (dto.Workflow.StepType == EStepType.End && dto.Workflow.NextStepCode == "end" && _appOptions.Value.IsYiBin && _sessionContext.OrgIsCenter)
+		{
 			var dOrder = await _orderRepository.GetAsync(workflow.ExternalId, HttpContext.RequestAborted);
 			if (dOrder != null && dOrder.ExpiredTime < DateTime.Now)
 			{
@@ -4507,6 +4500,14 @@ public class OrderController : BaseController
 			}
 		}
 		#endregion
+
+		var order = await _orderApplication.SaveOrderWorkflowInfo(dto, HttpContext.RequestAborted);
+
+        // 随手拍业务处理
+        if (_systemSettingCacheManager.Snapshot)
+        {
+            await _orderSnapshotApplication.SaveOrderWorkflowInfo(dto);
+        }	
 		//await _workflowApplication.NextAsync(dto.WorkflowDto, order.ExpiredTime, HttpContext.RequestAborted);
 		var startStep = workflow.Steps.First(d => d.Id == dto.Workflow.StepId);
         await HandleOrderAsync(order, workflow, startStep, dto.Data, dto.Workflow, HttpContext.RequestAborted);

+ 7 - 5
src/Hotline.Api/Controllers/SettingController.cs

@@ -33,16 +33,17 @@ namespace Hotline.Api.Controllers
         private readonly IMapper _mapper;
         private readonly IBusinessTagRepository _businessTag;
         private readonly IRepositoryTextSearch<OrderTs> _repositoryts;
+        private readonly IDaySettingCacheManager _daySettingCacheManager;
 
-		public SettingController(
+        public SettingController(
             IVoiceFileDomainService voiceFileDomainService,
             IRepository<SystemSetting> systemSettingsRepository,
             ISystemSettingCacheManager systemSettingCacheManager,
             IDaySettingRepository daySettingRepository,
             IMapper mapper,
             IBusinessTagRepository businessTag,
-            IRepositoryTextSearch<OrderTs> repositoryts
-			)
+            IRepositoryTextSearch<OrderTs> repositoryts,
+            IDaySettingCacheManager daySettingCacheManager)
         {
             _voiceFileDomainService = voiceFileDomainService;
             _systemSettingsRepository = systemSettingsRepository;
@@ -51,8 +52,8 @@ namespace Hotline.Api.Controllers
             _mapper = mapper;
             _businessTag = businessTag;
             _repositoryts = repositoryts;
-
-		}
+            _daySettingCacheManager = daySettingCacheManager;
+        }
 
         /// <summary>
         /// 查询语音文件
@@ -175,6 +176,7 @@ namespace Hotline.Api.Controllers
         [HttpPost("setdaysettings")]
         public async Task SetDaySettings([FromBody]SetDaySettingsRequest request)
         {
+            _daySettingCacheManager.DelDaySetting();
             foreach (var item in request.list)
             {
                 var day = await _daysettingRepository.GetAsync(x => x.Day.Date == item.Date, HttpContext.RequestAborted);

+ 9 - 9
src/Hotline.Repository.SqlSugar/System/DaySettingRepository.cs

@@ -12,15 +12,15 @@ namespace Hotline.Repository.SqlSugar.System
         {
         }
 
-        public async Task<bool> IsWorkDay(DateTime date)
-        {
-            var model = await Db.Queryable<DaySetting>().FirstAsync(x=> x.Day.Date == date.Date);
-            if (model!=null)
-            {
-                return model.IsWorkDay;
-            }
-            return WeekTool.IsWorkDay(date);
-        }
+        //public async Task<bool> IsWorkDay(DateTime date)
+        //{
+        //    var model = await Db.Queryable<DaySetting>().FirstAsync(x=> x.Day.Date == date.Date);
+        //    if (model!=null)
+        //    {
+        //        return model.IsWorkDay;
+        //    }
+        //    return WeekTool.IsWorkDay(date);
+        //}
 
 
         public async Task<List<DaySetting>> GetDaySettingsByMonth(int year,int month)

+ 19 - 0
src/Hotline/Caching/Interfaces/IDaySettingCacheManager.cs

@@ -0,0 +1,19 @@
+using Hotline.Settings;
+using Hotline.Settings.TimeLimits;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Hotline.Caching.Interfaces
+{
+    public interface IDaySettingCacheManager
+    {
+        IReadOnlyList<DaySetting> GetDaySettingCache();
+
+        bool IsWorkDay(DateTime date);
+
+        void DelDaySetting();
+    }
+}

+ 53 - 0
src/Hotline/Caching/Services/DaySettingCacheManager.cs

@@ -0,0 +1,53 @@
+using Hotline.Caching.Interfaces;
+using Hotline.Settings;
+using Hotline.Settings.TimeLimits;
+using Hotline.Tools;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XF.Domain.Cache;
+using XF.Domain.Dependency;
+using XF.Domain.Repository;
+
+namespace Hotline.Caching.Services
+{
+    public class DaySettingCacheManager : IDaySettingCacheManager, IScopeDependency
+    {
+        private readonly IRepository<DaySetting> _daySettingRepository;
+
+        private readonly ITypedCache<IReadOnlyList<DaySetting>> _cacheDaySetting;
+
+        public DaySettingCacheManager(IRepository<DaySetting> daySettingRepository, ITypedCache<IReadOnlyList<DaySetting>> cacheDaySetting)
+        {
+            _daySettingRepository = daySettingRepository;
+            _cacheDaySetting = cacheDaySetting;
+        }
+
+
+        public IReadOnlyList<DaySetting> GetDaySettingCache()
+        {
+            var sysDicDataList = _cacheDaySetting.GetOrSet("daysetting", k =>
+            {
+                return _daySettingRepository.Queryable().ToList();
+            });
+            return sysDicDataList;
+        }
+
+        public bool IsWorkDay(DateTime date)
+        {
+            var model = GetDaySettingCache().FirstOrDefault(x => x.Day.Date == date.Date);
+            if (model != null)
+            {
+                return model.IsWorkDay;
+            }
+            return WeekTool.IsWorkDay(date);
+        }
+
+        public void DelDaySetting()
+        {
+            _cacheDaySetting.Remove("daysetting");
+        }
+    }
+}

+ 6 - 5
src/Hotline/Settings/TimeLimitDomain/ExpireTimeHandler.cs

@@ -1,4 +1,5 @@
-using Hotline.Settings.TimeLimitDomain.ExpireTimeSupplier;
+using Hotline.Caching.Interfaces;
+using Hotline.Settings.TimeLimitDomain.ExpireTimeSupplier;
 using Hotline.Settings.TimeLimits;
 using Hotline.Share.Dtos.Settings;
 using Hotline.Share.Enums.Settings;
@@ -7,13 +8,13 @@ using XF.Domain.Dependency;
 namespace Hotline.Settings.TimeLimitDomain;
 public class ExpireTimeHandler : IExpireTimeHandler, IScopeDependency
 {
-    private readonly IDaySettingRepository _daySettingRepository;
     private readonly ExpireTimeFactory _expireTimeFactory;
+    private readonly IDaySettingCacheManager _daySettingCacheManager;
 
-    public ExpireTimeHandler(IDaySettingRepository daySettingRepository, ExpireTimeFactory expireTimeFactory)
+    public ExpireTimeHandler(ExpireTimeFactory expireTimeFactory, IDaySettingCacheManager daySettingCacheManager)
     {
-        _daySettingRepository = daySettingRepository;
         _expireTimeFactory = expireTimeFactory;
+        _daySettingCacheManager = daySettingCacheManager;
     }
 
     /// <summary>
@@ -755,7 +756,7 @@ public class ExpireTimeHandler : IExpireTimeHandler, IScopeDependency
     /// <returns></returns>
     private async Task<bool> IsWorkDay(DateTime date)
     {
-        return await _daySettingRepository.IsWorkDay(date);
+        return _daySettingCacheManager.IsWorkDay(date);
     }
 
     public async Task<bool> NotWorkDay(DateTime date)

+ 4 - 4
src/Hotline/Settings/TimeLimitDomain/ExpireTimeLimitBase.cs

@@ -21,15 +21,15 @@ public abstract class ExpireTimeLimitBase
     private readonly IRepository<TimeLimitSetting> _timeLimitSettingRepository;
     private readonly IExpireTimeHandler _expireTimeHandler;
     private readonly IMapper _mapper;
-    private readonly IDaySettingRepository _daySettingRepository;
+    private readonly IDaySettingCacheManager _daySettingCacheManager;
 
-    public ExpireTimeLimitBase(ISystemSettingCacheManager systemSettingCacheManager, IRepository<TimeLimitSetting> timeLimitSettingRepository, IExpireTimeHandler expireTimeHandler, IMapper mapper, IDaySettingRepository daySettingRepository)
+    public ExpireTimeLimitBase(ISystemSettingCacheManager systemSettingCacheManager, IRepository<TimeLimitSetting> timeLimitSettingRepository, IExpireTimeHandler expireTimeHandler, IMapper mapper,  IDaySettingCacheManager daySettingCacheManager)
     {
         _systemSettingCacheManager = systemSettingCacheManager;
         _timeLimitSettingRepository = timeLimitSettingRepository;
         _expireTimeHandler = expireTimeHandler;
         _mapper = mapper;
-        _daySettingRepository = daySettingRepository;
+        _daySettingCacheManager = daySettingCacheManager;
     }
 
     public virtual async Task<int> CalcWorkTime(DateTime beginTime, DateTime endTime, bool isCenter)
@@ -339,7 +339,7 @@ public abstract class ExpireTimeLimitBase
     /// <param name="date"></param>
     /// <returns></returns>
     private async Task<bool> IsWorkDay(DateTime date) =>
-        await _daySettingRepository.IsWorkDay(date);
+        _daySettingCacheManager.IsWorkDay(date);
 
     /// <summary>
     /// 非工作日

+ 6 - 5
src/Hotline/Settings/TimeLimitDomain/ExpireTimeSupplier/WorkDaySupplier.cs

@@ -1,4 +1,5 @@
-using Hotline.Settings.TimeLimits;
+using Hotline.Caching.Interfaces;
+using Hotline.Settings.TimeLimits;
 using Hotline.Share.Dtos.Settings;
 using System.ComponentModel.DataAnnotations;
 using XF.Domain.Dependency;
@@ -6,11 +7,11 @@ using XF.Domain.Dependency;
 namespace Hotline.Settings.TimeLimitDomain.ExpireTimeSupplier;
 public class WorkDaySupplier : IExpireTimeSupplier, IScopeDependency
 {
-    private readonly IDaySettingRepository _daySettingRepository;
+    private readonly IDaySettingCacheManager _daySettingCacheManager;
 
-    public WorkDaySupplier(IDaySettingRepository daySettingRepository)
+    public WorkDaySupplier(IDaySettingCacheManager daySettingCacheManager)
     {
-        _daySettingRepository = daySettingRepository;
+        _daySettingCacheManager = daySettingCacheManager;
     }
 
     //public async Task<TimeResult> CalcEndTimeAsync(DateTime beginTime, TimeConfig timeConfig)
@@ -465,7 +466,7 @@ public class WorkDaySupplier : IExpireTimeSupplier, IScopeDependency
     /// <returns></returns>
     private async Task<bool> IsWorkDay(DateTime date)
     {
-        return await _daySettingRepository.IsWorkDay(date);
+        return _daySettingCacheManager.IsWorkDay(date);
     }
 
     private async Task<bool> NotWorkDay(DateTime date)

+ 1 - 1
src/Hotline/Settings/TimeLimitDomain/LuZhouExpireTimeLimit.cs

@@ -15,7 +15,7 @@ namespace Hotline.Settings.TimeLimitDomain;
 [Injection(AppScopes = EAppScope.LuZhou)]
 public class LuZhouExpireTimeLimit : ExpireTimeLimitBase, ICalcExpireTime, IScopeDependency
 {
-    public LuZhouExpireTimeLimit(ISystemSettingCacheManager systemSettingCacheManager, IRepository<TimeLimitSetting> timeLimitSettingRepository, IExpireTimeHandler expireTimeHandler, IMapper mapper, IDaySettingRepository daySettingRepository) : base(systemSettingCacheManager, timeLimitSettingRepository, expireTimeHandler, mapper, daySettingRepository)
+    public LuZhouExpireTimeLimit(ISystemSettingCacheManager systemSettingCacheManager, IRepository<TimeLimitSetting> timeLimitSettingRepository, IExpireTimeHandler expireTimeHandler, IMapper mapper, IDaySettingCacheManager daySettingCacheManager) : base(systemSettingCacheManager, timeLimitSettingRepository, expireTimeHandler, mapper,daySettingCacheManager)
     {
     }
 }

+ 3 - 3
src/Hotline/Settings/TimeLimitDomain/YiBinExpireTimeLimit.cs

@@ -20,16 +20,16 @@ public class YiBinExpireTimeLimit : ExpireTimeLimitBase, ICalcExpireTime, IScope
     private readonly IExpireTimeHandler _expireTimeHandler;
     private readonly IMapper _mapper;
     private readonly IRepository<SystemSetting> _systemSettingRepository;
-    private readonly IDaySettingRepository _daySettingRepository;
+    private readonly IDaySettingCacheManager _daySettingCacheManager;
 
-    public YiBinExpireTimeLimit(ISystemSettingCacheManager systemSettingCacheManager, IRepository<TimeLimitSetting> timeLimitSettingRepository, IExpireTimeHandler expireTimeHandler, IMapper mapper, IRepository<SystemSetting> systemSettingRepository, IDaySettingRepository daySettingRepository) : base(systemSettingCacheManager, timeLimitSettingRepository, expireTimeHandler, mapper,daySettingRepository)
+    public YiBinExpireTimeLimit(ISystemSettingCacheManager systemSettingCacheManager, IRepository<TimeLimitSetting> timeLimitSettingRepository, IExpireTimeHandler expireTimeHandler, IMapper mapper, IRepository<SystemSetting> systemSettingRepository, IDaySettingCacheManager daySettingCacheManager) : base(systemSettingCacheManager, timeLimitSettingRepository, expireTimeHandler, mapper, daySettingCacheManager)
     {
         _systemSettingCacheManager = systemSettingCacheManager;
         _timeLimitSettingRepository = timeLimitSettingRepository;
         _expireTimeHandler = expireTimeHandler;
         _mapper = mapper;
         _systemSettingRepository = systemSettingRepository;
-        _daySettingRepository = daySettingRepository;
+        _daySettingCacheManager = daySettingCacheManager;
     }
 
 }

+ 3 - 3
src/Hotline/Settings/TimeLimitDomain/ZiGongExpireTimeLimit.cs

@@ -27,17 +27,17 @@ public class ZiGongExpireTimeLimit : ExpireTimeLimitBase, ICalcExpireTime, IScop
     private readonly IExpireTimeHandler _expireTimeHandler;
     private readonly IMapper _mapper;
     private readonly IRepository<SystemSetting> _systemSettingRepository;
-    private readonly IDaySettingRepository _daySettingRepository;
     private readonly ILogger<ZiGongExpireTimeLimit> _logger;
+    private readonly IDaySettingCacheManager _daySettingCacheManager;
 
-    public ZiGongExpireTimeLimit(ISystemSettingCacheManager systemSettingCacheManager, ITimeLimitSettingRepository timeLimitSettingRepository, IExpireTimeHandler expireTimeHandler, IMapper mapper, IRepository<SystemSetting> systemSettingRepository, IDaySettingRepository daySettingRepository, ITimeLimitSettingAttributeRepository timeLimitSettingAttributeRepository, ITimeLimitSettingInventoryRepository timeLimitSettingInventoryRepository, ILogger<ZiGongExpireTimeLimit> logger) : base(systemSettingCacheManager, timeLimitSettingRepository, expireTimeHandler, mapper, daySettingRepository)
+    public ZiGongExpireTimeLimit(ISystemSettingCacheManager systemSettingCacheManager, ITimeLimitSettingRepository timeLimitSettingRepository, IExpireTimeHandler expireTimeHandler, IMapper mapper, IRepository<SystemSetting> systemSettingRepository, IDaySettingCacheManager daySettingCacheManager, ITimeLimitSettingAttributeRepository timeLimitSettingAttributeRepository, ITimeLimitSettingInventoryRepository timeLimitSettingInventoryRepository, ILogger<ZiGongExpireTimeLimit> logger) : base(systemSettingCacheManager, timeLimitSettingRepository, expireTimeHandler, mapper, daySettingCacheManager)
     {
         _systemSettingCacheManager = systemSettingCacheManager;
         _timeLimitSettingRepository = timeLimitSettingRepository;
         _expireTimeHandler = expireTimeHandler;
         _mapper = mapper;
         _systemSettingRepository = systemSettingRepository;
-        _daySettingRepository = daySettingRepository;
+        _daySettingCacheManager = daySettingCacheManager;
         _timeLimitSettingAttributeRepository = timeLimitSettingAttributeRepository;
         _timeLimitSettingInventoryRepository = timeLimitSettingInventoryRepository;
         _logger = logger;

+ 1 - 1
src/Hotline/Settings/TimeLimits/IDaySettingRepository.cs

@@ -4,7 +4,7 @@ namespace Hotline.Settings.TimeLimits
 {
     public interface IDaySettingRepository: IRepository<DaySetting>
     {
-        Task<bool> IsWorkDay(DateTime date);
+        //Task<bool> IsWorkDay(DateTime date);
 
         Task<List<DaySetting>> GetDaySettingsByMonth(int year,int month);
     }

+ 5 - 5
src/Hotline/Settings/TimeLimits/TimeLimitDomainService.cs

@@ -17,22 +17,22 @@ namespace Hotline.Settings.TimeLimits
     public class TimeLimitDomainService : ITimeLimitDomainService, IScopeDependency
     {
         private readonly ITimeLimitRepository _timeLimitRepository;
-        private readonly IDaySettingRepository _daySettingRepository;
         private List<CalcTimeSetting> timeSettingList;
         private readonly IRepository<SystemSetting> _systemSettingRepository;
         private readonly ISystemSettingCacheManager _systemSettingCacheManager;
         private readonly IMapper _mapper;
         private List<CalcTimeSetting> sourceSettingList;
+        private readonly IDaySettingCacheManager _daySettingCacheManager;
 
-        public TimeLimitDomainService(ITimeLimitRepository timeLimitRepository, IDaySettingRepository daySettingRepository, 
+        public TimeLimitDomainService(ITimeLimitRepository timeLimitRepository,
             IRepository<SystemSetting> systemSettingRepository, ISystemSettingCacheManager systemSettingCacheManager,
-            IMapper mapper)
+            IMapper mapper, IDaySettingCacheManager daySettingCacheManager)
         {
             _timeLimitRepository = timeLimitRepository;
-            _daySettingRepository = daySettingRepository;
             _systemSettingRepository = systemSettingRepository;
             _systemSettingCacheManager = systemSettingCacheManager;
             _mapper = mapper;
+            _daySettingCacheManager = daySettingCacheManager;
 
             //初始化常量TODO
             timeSettingList = new List<CalcTimeSetting>();
@@ -1012,7 +1012,7 @@ namespace Hotline.Settings.TimeLimits
 
         public bool IsWorkDay(DateTime date)
         {
-            return _daySettingRepository.IsWorkDay(date).GetAwaiter().GetResult();
+            return _daySettingCacheManager.IsWorkDay(date);
         }
 
         /// <summary>