62 lines
2.3 KiB
C#
62 lines
2.3 KiB
C#
using DotNetCore.CAP;
|
|
using SJZY.Track.Application.Contract.Events;
|
|
using SJZY.Track.Domain.Aggregates.OrderAggregate;
|
|
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
|
|
using SJZY.Track.Domain.Consts;
|
|
using Volo.Abp.DependencyInjection;
|
|
|
|
namespace SJZY.Track.Application.EventHandlers;
|
|
|
|
public class OrderLinkAfterFillTrackHandler : ITransientDependency, ICapSubscribe
|
|
{
|
|
private readonly ITrackDetailsRepository _trackDetailsRepository;
|
|
private readonly ICapPublisher _capPublisher;
|
|
private readonly IOrderRepository _orderRepository;
|
|
|
|
public OrderLinkAfterFillTrackHandler(ITrackDetailsRepository trackDetailsRepository, ICapPublisher capPublisher,
|
|
IOrderRepository orderRepository)
|
|
{
|
|
_trackDetailsRepository = trackDetailsRepository;
|
|
_capPublisher = capPublisher;
|
|
_orderRepository = orderRepository;
|
|
}
|
|
|
|
[CapSubscribe(GlobalConst.OrderLinkAfterFillTrack)]
|
|
public async Task ConsumerAsync(OrderLinkAfterFillTrackEvent @event)
|
|
{
|
|
var tracks = await _trackDetailsRepository.GetListAsync(@event.OrderId);
|
|
|
|
|
|
foreach (var linkOrderId in @event.LinkedOrderIds)
|
|
{
|
|
var order = await _orderRepository.GetFirstAsync(x =>
|
|
x.Id == linkOrderId, x => new
|
|
{
|
|
x.OrderType, x.OrderNo, x.CustomId, x.LatestPushTrackContentId, x.SubSystemId
|
|
});
|
|
|
|
if (order == default) continue;
|
|
|
|
// 补轨迹
|
|
foreach (var track in tracks)
|
|
{
|
|
var fillTrackEvent = new TrackUpsertEvent
|
|
{
|
|
OrderType = order.OrderType,
|
|
OrderNo = order.OrderNo,
|
|
TrackCode = track.TrackCode,
|
|
TrackPlace = track.TrackPlace,
|
|
TrackTime = track.TrackTime,
|
|
TrackTimeZone = track.TrackTimeZone,
|
|
OrderId = linkOrderId,
|
|
CustomId = order.CustomId,
|
|
SubSystemId = order.SubSystemId,
|
|
LatestPushTrackContentId = order.LatestPushTrackContentId,
|
|
UpSubSystemId = @event.SubSystemId,
|
|
};
|
|
|
|
await _capPublisher.PublishAsync(GlobalConst.TrackUpsertSubscribe, fillTrackEvent);
|
|
}
|
|
}
|
|
}
|
|
} |