feat: 迁移order pull trigger 标签赋值位置
This commit is contained in:
parent
67811638a9
commit
6df23b96e6
@ -53,7 +53,7 @@ public class TrackChangeAfterUpdateOrderEvent
|
||||
public float TrackTimeZone { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 根据配置规则,标记拉取时需要的订单Id
|
||||
/// 轨迹内容代码
|
||||
/// </summary>
|
||||
public int[] TriggerPullOrderIds { get; set; } = Array.Empty<int>();
|
||||
public string? TrackCode { get; set; }
|
||||
}
|
||||
@ -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<OrderEntity>();
|
||||
|
||||
var providerDic= await GetProviderDic(@event.OrderIds);
|
||||
foreach (var order in orders)
|
||||
{
|
||||
if (order.LatestTrackContent != @event.TrackContent)
|
||||
@ -47,10 +53,15 @@ 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;
|
||||
@ -122,4 +133,16 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa
|
||||
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());
|
||||
}
|
||||
}
|
||||
@ -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<TrackDetailsIndex>();
|
||||
var triggerPullOrder = new List<int>();
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
/// <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());
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user