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; }
|
public float TrackTimeZone { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 根据配置规则,标记拉取时需要的订单Id
|
/// 轨迹内容代码
|
||||||
/// </summary>
|
/// </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.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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -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());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user