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; }