diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs index f8d2cc5a..b400bea8 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs @@ -144,8 +144,6 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe return false; } - // todo: 在这里,判断存在性 - return true; } @@ -157,7 +155,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe { // 找不到轨迹内容,直接结束 LogHelper.Warn($"找不到轨迹内容:{@event}", true); - return default; + return null; } //#7001:未来潜在需求,当轨迹内容匹配预设,记录一个标记,保证下刷过程都是使用预设内容 @@ -302,13 +300,15 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe { if (existTracks.Count > 1) { - // todo: 所有的event handle 多写log,取缔注释,特别是continue,return,这种跳出的地方,方便排查问题 _logger.LogInformation("订单存在多条轨迹不允许修改:{@event}", @event); continue; } - // todo:例如这里 - if (track == null) continue; // 不存在不让改 + if (track == null) + { + _logger.LogInformation("订单不存在轨迹不允许修改:{@event}", @event); + continue; // 不存在不让改 + } updateTracks.Add(BuiltUpdateTrack(@event, track, order, trackContent)); operationRecords.Add(BuildOrderOperationRecord(@event, track, order)); @@ -316,7 +316,11 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe else { // 不允许重复轨迹,跳过 - if (!trackContent.IsRepeatable && existTracks.Count > 0) continue; + if (!trackContent.IsRepeatable && existTracks.Count > 0) + { + _logger.LogInformation("订单已经存在不允许重复的轨迹,不允许重复添加:{@event}", @event); + continue; + } insertTracks.Add(BuiltNewTrack(@event, order, trackContent)); } diff --git a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs index 467ab9c0..183b02dd 100644 --- a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs +++ b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs @@ -15,10 +15,10 @@ public interface IOrderRepository : IBasicRepository /// /// 通过三方平台和三方单号查询订单 /// - /// 三方平台 + /// 三方平台 /// 三方平台单号 /// (主单号id,客户id) - Task<(int MainOrderId, int CustomId)> GetTrackOrderByProviderAndOrderNo(string serviceProvidrCode, string orderNo); + Task<(int MainOrderId, int CustomId)> GetTrackOrderByProviderAndOrderNo(string serviceProviderCode, string orderNo); /// /// 创建订单 diff --git a/src/SJZY.Track.Repository/Repositories/OrderRepository.cs b/src/SJZY.Track.Repository/Repositories/OrderRepository.cs index b07a00ec..3e5bc514 100644 --- a/src/SJZY.Track.Repository/Repositories/OrderRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/OrderRepository.cs @@ -11,12 +11,13 @@ namespace SJZY.Track.Repository.Repositories; public class OrderRepository : BasicRepository, IOrderRepository, ITransientDependency { + //tips:后期提供缓存清理接口 //MemoryCache本身线程安全简单使用,短暂数据不一致可以容忍,每过固定时间强制清除缓存 private static readonly MemoryCache _memoryCache = new(new MemoryCacheOptions()); private static readonly Dictionary _empty = new(); private static readonly Dictionary> _empty2 = new(); - private const int ThirdPartyOrderNumberCacheTimeSpan = 3 * 60; - private const int MainDataEnumCacheTimeSpan = 5 * 60; + private static readonly TimeSpan _thirdPartyOrderNumberCacheTimeSpan = TimeSpan.FromMinutes(3); + private static readonly TimeSpan _mainDataEnumCacheTimeSpan = TimeSpan.FromMinutes(5); private async Task> GetThirdPartyOrderNumberForCacheAsync(int[] orderIds) { @@ -48,7 +49,7 @@ public class OrderRepository : BasicRepository, IOrderRepository, I _memoryCache.Set(key, dict, new MemoryCacheEntryOptions { - AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(ThirdPartyOrderNumberCacheTimeSpan), + AbsoluteExpirationRelativeToNow = _thirdPartyOrderNumberCacheTimeSpan, Size = dict.Count }); return dict; @@ -92,7 +93,7 @@ public class OrderRepository : BasicRepository, IOrderRepository, I _memoryCache.Set(key, dict, new MemoryCacheEntryOptions { - AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(MainDataEnumCacheTimeSpan), + AbsoluteExpirationRelativeToNow = _mainDataEnumCacheTimeSpan, Size = dict.Count }); return dict; @@ -247,12 +248,12 @@ public class OrderRepository : BasicRepository, IOrderRepository, I return pageList; } - public async Task<(int MainOrderId, int CustomId)> GetTrackOrderByProviderAndOrderNo(string serviceProvidrCode, string orderNo) + public async Task<(int MainOrderId, int CustomId)> GetTrackOrderByProviderAndOrderNo(string serviceProviderCode, string orderNo) { var orderList = await Context.Queryable() .LeftJoin((a, b) => a.Id == b.OrderId && b.IsDeleted == false) .Where((a, b) => a.OrderNo == orderNo - || (b.Platform == serviceProvidrCode && b.OrderNumber == orderNo)) + || (b.Platform == serviceProviderCode && b.OrderNumber == orderNo)) .Select((a, b) => new { a.Id, @@ -269,7 +270,7 @@ public class OrderRepository : BasicRepository, IOrderRepository, I var order = orderList.First(); //当出现了多条记录匹配,优先使用外部单匹配提升精确度 - var matchOrder = orderList.FirstOrDefault(x => x.Platform == serviceProvidrCode && x.OrderNumber == orderNo); + var matchOrder = orderList.FirstOrDefault(x => x.Platform == serviceProviderCode && x.OrderNumber == orderNo); return matchOrder != null ? (matchOrder.Id, matchOrder.CustomId) : (order.Id, order.CustomId);