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; }
/// <summary>
/// 根据配置规则,标记拉取时需要的订单Id
/// 轨迹内容代码
/// </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.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());
}
}

View File

@ -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());
}
}