feat: 迁移order pull trigger 标签赋值位置

This commit is contained in:
钟喜旺 2024-07-30 15:22:25 +08:00
parent 67811638a9
commit 6df23b96e6
3 changed files with 35 additions and 41 deletions

View File

@ -53,7 +53,7 @@ public class TrackChangeAfterUpdateOrderEvent
public float TrackTimeZone { get; set; } public float TrackTimeZone { get; set; }
/// <summary> /// <summary>
/// 根据配置规则,标记拉取时需要的订单Id /// 轨迹内容代码
/// </summary> /// </summary>
public int[] TriggerPullOrderIds { get; set; } = Array.Empty<int>(); public string? TrackCode { get; set; }
} }

View File

@ -5,6 +5,8 @@ using SJZY.Track.Application.Contract.Services;
using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Consts; using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Dtos.Forewarning; using SJZY.Track.Domain.Dtos.Forewarning;
using SJZY.Track.Domain.Dtos.Order;
using SJZY.Track.Domain.Queries;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
namespace SJZY.Track.Application.CAP.EventHandlers; namespace SJZY.Track.Application.CAP.EventHandlers;
@ -13,12 +15,16 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa
{ {
private readonly IOrderRepository _orderRepository; private readonly IOrderRepository _orderRepository;
private readonly IForewarningNotifyService _forewarningNotifyService; private readonly IForewarningNotifyService _forewarningNotifyService;
private readonly ITrackPullCacheService _trackPullCacheService;
private readonly IProvideQueries _provideQueries;
public TrackChangeAfterUpdateOrderEventHandler(IOrderRepository orderRepository, public TrackChangeAfterUpdateOrderEventHandler(IOrderRepository orderRepository,
IForewarningNotifyService forewarningNotifyService) IForewarningNotifyService forewarningNotifyService, ITrackPullCacheService trackPullCacheService, IProvideQueries provideQueries)
{ {
_orderRepository = orderRepository; _orderRepository = orderRepository;
_forewarningNotifyService = forewarningNotifyService; _forewarningNotifyService = forewarningNotifyService;
_trackPullCacheService = trackPullCacheService;
_provideQueries = provideQueries;
} }
[CapSubscribe(GlobalConst.TrackChangeAfterUpdateOrderSubscribe)] [CapSubscribe(GlobalConst.TrackChangeAfterUpdateOrderSubscribe)]
@ -29,7 +35,7 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa
if (orders.Count == 0) return; if (orders.Count == 0) return;
var updateOrders = new List<OrderEntity>(); var updateOrders = new List<OrderEntity>();
var providerDic= await GetProviderDic(@event.OrderIds);
foreach (var order in orders) foreach (var order in orders)
{ {
if (order.LatestTrackContent != @event.TrackContent) if (order.LatestTrackContent != @event.TrackContent)
@ -47,12 +53,17 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa
order.IsCompleted = @event.IsCompleted; order.IsCompleted = @event.IsCompleted;
} }
// 触发拉取节点 if (providerDic.TryGetValue(order.Id, out var provider))
if (@event.TriggerPullOrderIds.Contains(order.Id))
{ {
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.LatestTrackContent = @event.TrackContent;
order.LatestTrackEnContent = @event.TrackEnContent; order.LatestTrackEnContent = @event.TrackEnContent;
order.LatestTrackPlace = @event.TrackPlace; order.LatestTrackPlace = @event.TrackPlace;
@ -122,4 +133,16 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa
ProductCode = order.ProductCode ProductCode = order.ProductCode
}; };
} }
/// <summary>
/// 获取服务商字典
/// </summary>
/// <param name="orderIds"></param>
/// <returns></returns>
private async Task<Dictionary<int, OrderTransportDto>> GetProviderDic(int[] orderIds)
{
var providerList = await _provideQueries.FindOrderWithServiceProviderAsync(orderIds);
return providerList.GroupBy(val => val.OrderId)
.ToDictionary(val => val.Key, val => val.First());
}
} }

View File

@ -19,16 +19,14 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
private readonly IProvideQueries _provideQueries; private readonly IProvideQueries _provideQueries;
private readonly ITrackDetailsRepository _trackDetailsRepository; private readonly ITrackDetailsRepository _trackDetailsRepository;
private readonly ICapPublisher _capPublisher; private readonly ICapPublisher _capPublisher;
private readonly ITrackPullCacheService _trackPullCacheService;
public TrackUpsertEventHandler(IOrderRepository orderRepository, ICapPublisher capPublisher, public TrackUpsertEventHandler(IOrderRepository orderRepository, ICapPublisher capPublisher,
IProvideQueries provideQueries, ITrackDetailsRepository trackDetailsRepository, ITrackPullCacheService trackPullCacheService) IProvideQueries provideQueries, ITrackDetailsRepository trackDetailsRepository)
{ {
_orderRepository = orderRepository; _orderRepository = orderRepository;
_capPublisher = capPublisher; _capPublisher = capPublisher;
_provideQueries = provideQueries; _provideQueries = provideQueries;
_trackDetailsRepository = trackDetailsRepository; _trackDetailsRepository = trackDetailsRepository;
_trackPullCacheService = trackPullCacheService;
} }
[CapSubscribe(GlobalConst.TrackUpsertSubscribe, Group = GlobalConst.TrackUpsertSubscribe)] [CapSubscribe(GlobalConst.TrackUpsertSubscribe, Group = GlobalConst.TrackUpsertSubscribe)]
@ -119,9 +117,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
var trackContents = await _provideQueries.MatchTrackContentAsync(newOrderIds, @event.TrackCode); var trackContents = await _provideQueries.MatchTrackContentAsync(newOrderIds, @event.TrackCode);
var insertTracks = new List<TrackDetailsIndex>(); var insertTracks = new List<TrackDetailsIndex>();
var triggerPullOrder = new List<int>();
var providerDic=await GetProviderDic(orderIds);
foreach (var order in @event.OrderIdentifiers) foreach (var order in @event.OrderIdentifiers)
{ {
var track = tracks.FirstOrDefault(x => x.OrderId == order.OrderId); var track = tracks.FirstOrDefault(x => x.OrderId == order.OrderId);
@ -177,18 +173,6 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
} }
canNextOrderIds.Add(order.OrderId); 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; if (canNextOrderIds.Count == 0) return;
@ -210,7 +194,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
TrackPlace = @event.TrackPlace, TrackPlace = @event.TrackPlace,
TrackTime = @event.TrackTime, TrackTime = @event.TrackTime,
TrackTimeZone = @event.TrackTimeZone, TrackTimeZone = @event.TrackTimeZone,
TriggerPullOrderIds = triggerPullOrder.ToArray() TrackCode = @event.TrackCode
}); });
// 触发轨迹推送事件(异步) // 触发轨迹推送事件(异步)
@ -232,17 +216,4 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
}; };
await _capPublisher.PublishAsync(GlobalConst.TrackPushSubscribe, trackPushEvent); await _capPublisher.PublishAsync(GlobalConst.TrackPushSubscribe, trackPushEvent);
} }
/// <summary>
/// 获取服务商字典
/// </summary>
/// <param name="orderIds"></param>
/// <returns></returns>
private async Task<Dictionary<int, OrderTransportDto>> GetProviderDic(int[] orderIds)
{
var providerList = await _provideQueries.FindOrderWithServiceProviderAsync(orderIds);
return providerList.GroupBy(val => val.OrderId)
.ToDictionary(val => val.Key, val => val.First());
}
} }