From d12ef6d350ef246eb10fafdb858020eeca97b0ff Mon Sep 17 00:00:00 2001 From: xiaolipro <2357729423@qq.com> Date: Fri, 27 Sep 2024 16:59:14 +0800 Subject: [PATCH] =?UTF-8?q?opt=EF=BC=9A=E5=BC=82=E5=B8=B8=E5=8F=8B?= =?UTF-8?q?=E5=A5=BD=E6=8F=90=E7=A4=BA=20change=EF=BC=9A=E8=B0=83=E6=95=B4?= =?UTF-8?q?redis=E7=BC=93=E5=AD=98=E8=BF=87=E6=9C=9F=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/SJZY.Track.Application/CAP/CAPFilter.cs | 10 ++++------ .../CAP/EventHandlers/TrackPushEventHandler.cs | 5 +++++ .../ForewarningServices/ForewarningCacheService.cs | 2 +- .../Services/TrackPull/TrackPullCacheService.cs | 14 ++++++++++---- .../Track2InterfaceRelayHttpMessageHandler.cs | 2 +- .../Track2InterfaceRelaySubSystemContext.cs | 10 +++++----- src/SJZY.Track.Domain/Consts/GlobalConst.cs | 2 ++ .../Queries/TimezoneQueries.cs | 4 ++-- 8 files changed, 30 insertions(+), 19 deletions(-) diff --git a/src/SJZY.Track.Application/CAP/CAPFilter.cs b/src/SJZY.Track.Application/CAP/CAPFilter.cs index c247e349..35fa9f23 100644 --- a/src/SJZY.Track.Application/CAP/CAPFilter.cs +++ b/src/SJZY.Track.Application/CAP/CAPFilter.cs @@ -8,8 +8,6 @@ namespace SJZY.Track.Application.CAP; public class CapFilter : SubscribeFilter { - const string ErrorCode = "Error599"; - /// /// 执行前 /// @@ -33,7 +31,7 @@ public class CapFilter : SubscribeFilter if (await RedisHelper.Client.ExistsAsync($"CapExecuteFilter:{hash}")) { - throw new BusinessException(ErrorCode, $"检测到重复消费,消费参数:{argumentJsonStr}"); + throw new BusinessException(GlobalConst.CapNoRetryErrorCode, $"检测到重复消费,消费参数:{argumentJsonStr}"); } } } @@ -56,10 +54,10 @@ public class CapFilter : SubscribeFilter { context.DeliverMessage.Headers.TryGetValue("cap-msg-id", out var messageId); - if (context.Exception is BusinessException ex && ex.Code == ErrorCode) + if (context.Exception is BusinessException ex && ex.Code == GlobalConst.CapNoRetryErrorCode) { - context.ExceptionHandled = true; // 幂等不做重试 - LogHelper.Warn(ex.ToString()); + context.ExceptionHandled = true; + LogHelper.Warn(ex.ToString(), true); } else { diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs index 67470ed5..0ef48ef3 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs @@ -48,6 +48,11 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe { var pushConfigs = await _trackPushCacheService.GetPushContentConfigsAsync(@event.SubSystemId, @event.CustomId); if (pushConfigs == null || pushConfigs.Count == 0) return; + if (pushConfigs.First().ServiceProviderCode.IsNullOrWhiteSpace()) + { + throw new BusinessException(GlobalConst.CapNoRetryErrorCode, $"该客户{@event.CustomId}未关联服务商,无法推送"); + } + _pushConfigs = pushConfigs; var orders = await _orderRepository.GetListAsync(x => diff --git a/src/SJZY.Track.Application/Services/ForewarningServices/ForewarningCacheService.cs b/src/SJZY.Track.Application/Services/ForewarningServices/ForewarningCacheService.cs index b23a2d4d..88c7582d 100644 --- a/src/SJZY.Track.Application/Services/ForewarningServices/ForewarningCacheService.cs +++ b/src/SJZY.Track.Application/Services/ForewarningServices/ForewarningCacheService.cs @@ -157,7 +157,7 @@ public class ForewarningCacheService : IForewarningCacheService, ISingletonDepen return new List(); } - await RedisHelper.Client.SetAsync(key, warnings); + await RedisHelper.Client.SetAsync(key, warnings, TimeSpan.FromHours(24)); ruleResult = WriteRules(warnings); _rules.TryAdd(key, ruleResult); return ruleResult; diff --git a/src/SJZY.Track.Application/Services/TrackPull/TrackPullCacheService.cs b/src/SJZY.Track.Application/Services/TrackPull/TrackPullCacheService.cs index d609af29..e7d2a2e1 100644 --- a/src/SJZY.Track.Application/Services/TrackPull/TrackPullCacheService.cs +++ b/src/SJZY.Track.Application/Services/TrackPull/TrackPullCacheService.cs @@ -37,10 +37,16 @@ public class TrackPullCacheService : ITransientDependency, ITrackPullCacheServic public async Task SetPullConfigAsync(int id) { var trackPullConfigDetail = await _trackPullConfigRepository.GetDetailAsync(id); - if (trackPullConfigDetail == null) return null; + if (trackPullConfigDetail == null) + { + return null; + } var trackPullContentList = await _trackPullConfigRepository.GetContentListCacheAsync(id); - if (trackPullContentList.Count == 0) return null; + if (trackPullContentList.Count == 0) + { + return null; + } var data = new TrackPullParamsWithContentDto { @@ -50,8 +56,8 @@ public class TrackPullCacheService : ITransientDependency, ITrackPullCacheServic trackPullContentList) }; - await RedisHelper.Client.SetAsync( - TrackPullContentKey(trackPullConfigDetail.SubSystemId, trackPullConfigDetail.ServiceProviderCode), data); + var key = TrackPullContentKey(trackPullConfigDetail.SubSystemId, trackPullConfigDetail.ServiceProviderCode); + await RedisHelper.Client.SetAsync(key, data, TimeSpan.FromHours(24)); return data; } diff --git a/src/SJZY.Track.Application/Track2InterfaceRelay/Track2InterfaceRelayHttpMessageHandler.cs b/src/SJZY.Track.Application/Track2InterfaceRelay/Track2InterfaceRelayHttpMessageHandler.cs index dc807700..0320ac1a 100644 --- a/src/SJZY.Track.Application/Track2InterfaceRelay/Track2InterfaceRelayHttpMessageHandler.cs +++ b/src/SJZY.Track.Application/Track2InterfaceRelay/Track2InterfaceRelayHttpMessageHandler.cs @@ -21,7 +21,7 @@ public class Track2InterfaceRelayHttpMessageHandler : DelegatingHandler, ITransi throw new BusinessException(message: $"请在{nameof(Track2InterfaceRelaySubSystemContext)}中调用接口通"); } - var subSystemCode = Track2InterfaceRelaySubSystemContext.Current.Code; + var subSystemCode = Track2InterfaceRelaySubSystemContext.Current.SubSystemCode; var config = _options.GetOrDefault(subSystemCode); if (config == null) { diff --git a/src/SJZY.Track.Application/Track2InterfaceRelay/Track2InterfaceRelaySubSystemContext.cs b/src/SJZY.Track.Application/Track2InterfaceRelay/Track2InterfaceRelaySubSystemContext.cs index db5fe0b8..9f271000 100644 --- a/src/SJZY.Track.Application/Track2InterfaceRelay/Track2InterfaceRelaySubSystemContext.cs +++ b/src/SJZY.Track.Application/Track2InterfaceRelay/Track2InterfaceRelaySubSystemContext.cs @@ -4,17 +4,17 @@ public class Track2InterfaceRelaySubSystemContext { private static readonly AsyncLocal LocalContext = new(); - public Track2InterfaceRelaySubSystemContext(string code) + public Track2InterfaceRelaySubSystemContext(string subSystemCode) { - if (code.IsNullOrWhiteSpace()) + if (subSystemCode.IsNullOrWhiteSpace()) { - throw new BusinessException(message: "请求接口通,服务商代码不能为空,请检查是否绑定服务商"); + throw new BusinessException(message: "请求接口通需要子系统上下文,子系统代码不能为空,请检查是否配置"); } - Code = code; + SubSystemCode = subSystemCode; } - public string Code { get; set; } + public string SubSystemCode { get; set; } public static Track2InterfaceRelaySubSystemContext? Current => LocalContext.Value; public static IDisposable Use(Track2InterfaceRelaySubSystemContext context) diff --git a/src/SJZY.Track.Domain/Consts/GlobalConst.cs b/src/SJZY.Track.Domain/Consts/GlobalConst.cs index dda37bf8..183d921e 100644 --- a/src/SJZY.Track.Domain/Consts/GlobalConst.cs +++ b/src/SJZY.Track.Domain/Consts/GlobalConst.cs @@ -12,5 +12,7 @@ public partial class GlobalConst public const string SuccessCode = "200"; + public const string CapNoRetryErrorCode = "599"; + public static DateTime MaxDateTime = new DateTime(2999, 1, 1, 0, 0, 0); } diff --git a/src/SJZY.Track.Repository/Queries/TimezoneQueries.cs b/src/SJZY.Track.Repository/Queries/TimezoneQueries.cs index a5942262..3694fb10 100644 --- a/src/SJZY.Track.Repository/Queries/TimezoneQueries.cs +++ b/src/SJZY.Track.Repository/Queries/TimezoneQueries.cs @@ -38,7 +38,7 @@ public class TimezoneQueries : ITimezoneQueries, ISugarRepository, ITransientDep return string.Empty; } - await RedisHelper.Client.SetAsync(key, cityTimezone.Timezone, TimeSpan.FromHours(6)); + await RedisHelper.Client.SetAsync(key, cityTimezone.Timezone, TimeSpan.FromHours(24)); return cityTimezone.Timezone; } @@ -63,7 +63,7 @@ public class TimezoneQueries : ITimezoneQueries, ISugarRepository, ITransientDep return string.Empty; } - await RedisHelper.Client.SetAsync(key, portTimezone.Timezone, TimeSpan.FromHours(6)); + await RedisHelper.Client.SetAsync(key, portTimezone.Timezone, TimeSpan.FromHours(24)); return portTimezone.Timezone; }