opt:异常友好提示

change:调整redis缓存过期时间
This commit is contained in:
xiaolipro 2024-09-27 16:59:14 +08:00
parent 7d583b6734
commit d12ef6d350
8 changed files with 30 additions and 19 deletions

View File

@ -8,8 +8,6 @@ namespace SJZY.Track.Application.CAP;
public class CapFilter : SubscribeFilter public class CapFilter : SubscribeFilter
{ {
const string ErrorCode = "Error599";
/// <summary> /// <summary>
/// 执行前 /// 执行前
/// </summary> /// </summary>
@ -33,7 +31,7 @@ public class CapFilter : SubscribeFilter
if (await RedisHelper.Client.ExistsAsync($"CapExecuteFilter:{hash}")) 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); 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; // 幂等不做重试 context.ExceptionHandled = true;
LogHelper.Warn(ex.ToString()); LogHelper.Warn(ex.ToString(), true);
} }
else else
{ {

View File

@ -48,6 +48,11 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
{ {
var pushConfigs = await _trackPushCacheService.GetPushContentConfigsAsync(@event.SubSystemId, @event.CustomId); var pushConfigs = await _trackPushCacheService.GetPushContentConfigsAsync(@event.SubSystemId, @event.CustomId);
if (pushConfigs == null || pushConfigs.Count == 0) return; if (pushConfigs == null || pushConfigs.Count == 0) return;
if (pushConfigs.First().ServiceProviderCode.IsNullOrWhiteSpace())
{
throw new BusinessException(GlobalConst.CapNoRetryErrorCode, $"该客户{@event.CustomId}未关联服务商,无法推送");
}
_pushConfigs = pushConfigs; _pushConfigs = pushConfigs;
var orders = await _orderRepository.GetListAsync(x => var orders = await _orderRepository.GetListAsync(x =>

View File

@ -157,7 +157,7 @@ public class ForewarningCacheService : IForewarningCacheService, ISingletonDepen
return new List<ForewarningRuleCacheEntry>(); return new List<ForewarningRuleCacheEntry>();
} }
await RedisHelper.Client.SetAsync(key, warnings); await RedisHelper.Client.SetAsync(key, warnings, TimeSpan.FromHours(24));
ruleResult = WriteRules(warnings); ruleResult = WriteRules(warnings);
_rules.TryAdd(key, ruleResult); _rules.TryAdd(key, ruleResult);
return ruleResult; return ruleResult;

View File

@ -37,10 +37,16 @@ public class TrackPullCacheService : ITransientDependency, ITrackPullCacheServic
public async Task<TrackPullParamsWithContentDto?> SetPullConfigAsync(int id) public async Task<TrackPullParamsWithContentDto?> SetPullConfigAsync(int id)
{ {
var trackPullConfigDetail = await _trackPullConfigRepository.GetDetailAsync(id); var trackPullConfigDetail = await _trackPullConfigRepository.GetDetailAsync(id);
if (trackPullConfigDetail == null) return null; if (trackPullConfigDetail == null)
{
return null;
}
var trackPullContentList = await _trackPullConfigRepository.GetContentListCacheAsync(id); var trackPullContentList = await _trackPullConfigRepository.GetContentListCacheAsync(id);
if (trackPullContentList.Count == 0) return null; if (trackPullContentList.Count == 0)
{
return null;
}
var data = new TrackPullParamsWithContentDto var data = new TrackPullParamsWithContentDto
{ {
@ -50,8 +56,8 @@ public class TrackPullCacheService : ITransientDependency, ITrackPullCacheServic
trackPullContentList) trackPullContentList)
}; };
await RedisHelper.Client.SetAsync( var key = TrackPullContentKey(trackPullConfigDetail.SubSystemId, trackPullConfigDetail.ServiceProviderCode);
TrackPullContentKey(trackPullConfigDetail.SubSystemId, trackPullConfigDetail.ServiceProviderCode), data); await RedisHelper.Client.SetAsync(key, data, TimeSpan.FromHours(24));
return data; return data;
} }

View File

@ -21,7 +21,7 @@ public class Track2InterfaceRelayHttpMessageHandler : DelegatingHandler, ITransi
throw new BusinessException(message: $"请在{nameof(Track2InterfaceRelaySubSystemContext)}中调用接口通"); throw new BusinessException(message: $"请在{nameof(Track2InterfaceRelaySubSystemContext)}中调用接口通");
} }
var subSystemCode = Track2InterfaceRelaySubSystemContext.Current.Code; var subSystemCode = Track2InterfaceRelaySubSystemContext.Current.SubSystemCode;
var config = _options.GetOrDefault(subSystemCode); var config = _options.GetOrDefault(subSystemCode);
if (config == null) if (config == null)
{ {

View File

@ -4,17 +4,17 @@ public class Track2InterfaceRelaySubSystemContext
{ {
private static readonly AsyncLocal<Track2InterfaceRelaySubSystemContext?> LocalContext = new(); private static readonly AsyncLocal<Track2InterfaceRelaySubSystemContext?> 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 Track2InterfaceRelaySubSystemContext? Current => LocalContext.Value;
public static IDisposable Use(Track2InterfaceRelaySubSystemContext context) public static IDisposable Use(Track2InterfaceRelaySubSystemContext context)

View File

@ -12,5 +12,7 @@ public partial class GlobalConst
public const string SuccessCode = "200"; public const string SuccessCode = "200";
public const string CapNoRetryErrorCode = "599";
public static DateTime MaxDateTime = new DateTime(2999, 1, 1, 0, 0, 0); public static DateTime MaxDateTime = new DateTime(2999, 1, 1, 0, 0, 0);
} }

View File

@ -38,7 +38,7 @@ public class TimezoneQueries : ITimezoneQueries, ISugarRepository, ITransientDep
return string.Empty; 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; return cityTimezone.Timezone;
} }
@ -63,7 +63,7 @@ public class TimezoneQueries : ITimezoneQueries, ISugarRepository, ITransientDep
return string.Empty; 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; return portTimezone.Timezone;
} }