diff --git a/src/SJZY.Track.Application.Contract/Events/TrackChangeAfterUpdateOrderEvent.cs b/src/SJZY.Track.Application.Contract/Events/TrackChangeAfterUpdateOrderEvent.cs index 8ef46e77..385b01f1 100644 --- a/src/SJZY.Track.Application.Contract/Events/TrackChangeAfterUpdateOrderEvent.cs +++ b/src/SJZY.Track.Application.Contract/Events/TrackChangeAfterUpdateOrderEvent.cs @@ -53,7 +53,7 @@ public class TrackChangeAfterUpdateOrderEvent public float TrackTimeZone { get; set; } /// - /// 根据配置规则,标记拉取时需要的订单Id + /// 轨迹内容代码 /// - public int[] TriggerPullOrderIds { get; set; } = Array.Empty(); + public string? TrackCode { get; set; } } \ No newline at end of file diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackChangeAfterUpdateOrderEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackChangeAfterUpdateOrderEventHandler.cs index 3e96a3b5..39c202ba 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackChangeAfterUpdateOrderEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackChangeAfterUpdateOrderEventHandler.cs @@ -5,6 +5,8 @@ using SJZY.Track.Application.Contract.Services; using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Consts; using SJZY.Track.Domain.Dtos.Forewarning; +using SJZY.Track.Domain.Dtos.Order; +using SJZY.Track.Domain.Queries; using Volo.Abp.DependencyInjection; namespace SJZY.Track.Application.CAP.EventHandlers; @@ -13,12 +15,16 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa { private readonly IOrderRepository _orderRepository; private readonly IForewarningNotifyService _forewarningNotifyService; - + private readonly ITrackPullCacheService _trackPullCacheService; + private readonly IProvideQueries _provideQueries; + public TrackChangeAfterUpdateOrderEventHandler(IOrderRepository orderRepository, - IForewarningNotifyService forewarningNotifyService) + IForewarningNotifyService forewarningNotifyService, ITrackPullCacheService trackPullCacheService, IProvideQueries provideQueries) { _orderRepository = orderRepository; _forewarningNotifyService = forewarningNotifyService; + _trackPullCacheService = trackPullCacheService; + _provideQueries = provideQueries; } [CapSubscribe(GlobalConst.TrackChangeAfterUpdateOrderSubscribe)] @@ -29,7 +35,7 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa if (orders.Count == 0) return; var updateOrders = new List(); - + var providerDic= await GetProviderDic(@event.OrderIds); foreach (var order in orders) { if (order.LatestTrackContent != @event.TrackContent) @@ -47,12 +53,17 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa order.IsCompleted = @event.IsCompleted; } - // 触发拉取节点 - if (@event.TriggerPullOrderIds.Contains(order.Id)) + if (providerDic.TryGetValue(order.Id, out var provider)) { - order.IsTriggerPull = 1; + var config = await _trackPullCacheService.GetPullParamWithContentConfigAsync(provider.SubSystemId, provider.ServiceProviderId); + + if (config!=null && config.ParamConfig!=null && config.ParamConfig.TrackContentCode == @event.TrackCode) + { + // 触发拉取节点 + order.IsTriggerPull = 1; + } } - + order.LatestTrackContent = @event.TrackContent; order.LatestTrackEnContent = @event.TrackEnContent; order.LatestTrackPlace = @event.TrackPlace; @@ -122,4 +133,16 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa ProductCode = order.ProductCode }; } + + /// + /// 获取服务商字典 + /// + /// + /// + private async Task> GetProviderDic(int[] orderIds) + { + var providerList = await _provideQueries.FindOrderWithServiceProviderAsync(orderIds); + return providerList.GroupBy(val => val.OrderId) + .ToDictionary(val => val.Key, val => val.First()); + } } \ No newline at end of file diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs index 41808e11..5e73128b 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs @@ -19,16 +19,14 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe private readonly IProvideQueries _provideQueries; private readonly ITrackDetailsRepository _trackDetailsRepository; private readonly ICapPublisher _capPublisher; - private readonly ITrackPullCacheService _trackPullCacheService; public TrackUpsertEventHandler(IOrderRepository orderRepository, ICapPublisher capPublisher, - IProvideQueries provideQueries, ITrackDetailsRepository trackDetailsRepository, ITrackPullCacheService trackPullCacheService) + IProvideQueries provideQueries, ITrackDetailsRepository trackDetailsRepository) { _orderRepository = orderRepository; _capPublisher = capPublisher; _provideQueries = provideQueries; _trackDetailsRepository = trackDetailsRepository; - _trackPullCacheService = trackPullCacheService; } [CapSubscribe(GlobalConst.TrackUpsertSubscribe, Group = GlobalConst.TrackUpsertSubscribe)] @@ -119,9 +117,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe var trackContents = await _provideQueries.MatchTrackContentAsync(newOrderIds, @event.TrackCode); var insertTracks = new List(); - var triggerPullOrder = new List(); - - var providerDic=await GetProviderDic(orderIds); + foreach (var order in @event.OrderIdentifiers) { var track = tracks.FirstOrDefault(x => x.OrderId == order.OrderId); @@ -177,18 +173,6 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe } canNextOrderIds.Add(order.OrderId); - - if(!providerDic.TryGetValue(order.OrderId,out var provider)) - continue; - - // todo:不要在upsert事件计算order的状态 - var config = - await _trackPullCacheService.GetPullParamWithContentConfigAsync(provider.SubSystemId, - provider.ServiceProviderId); - if (config!=null && config.ParamConfig!=null && config.ParamConfig.TrackContentCode == @event.TrackCode) - { - triggerPullOrder.Add(order.OrderId); - } } if (canNextOrderIds.Count == 0) return; @@ -210,7 +194,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe TrackPlace = @event.TrackPlace, TrackTime = @event.TrackTime, TrackTimeZone = @event.TrackTimeZone, - TriggerPullOrderIds = triggerPullOrder.ToArray() + TrackCode = @event.TrackCode }); // 触发轨迹推送事件(异步) @@ -232,17 +216,4 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe }; await _capPublisher.PublishAsync(GlobalConst.TrackPushSubscribe, trackPushEvent); } - - /// - /// 获取服务商字典 - /// - /// - /// - private async Task> GetProviderDic(int[] orderIds) - { - var providerList = await _provideQueries.FindOrderWithServiceProviderAsync(orderIds); - return providerList.GroupBy(val => val.OrderId) - .ToDictionary(val => val.Key, val => val.First()); - } - } \ No newline at end of file