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