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