将轨迹、面单、9610、揽收、自动触发与 ForecastBilling 异步化,缩短扫码与下单 RT;队列未启用时同步回落。 Co-authored-by: Cursor <cursoragent@cursor.com>
52 lines
1.8 KiB
C#
52 lines
1.8 KiB
C#
using Fake.DependencyInjection;
|
|
using Fake.EventBus;
|
|
using Fake.UnitOfWork;
|
|
using Microsoft.Extensions.Logging;
|
|
using Oms.Application.Dtos.Orders;
|
|
using Oms.Application.Services.Orders;
|
|
using Oms.Domain.OrdersAggregate.Consts;
|
|
|
|
namespace Oms.Application.Messaging.ParcelCreate;
|
|
|
|
/// <summary>
|
|
/// 处理创单后上门揽收挂接事件。
|
|
/// </summary>
|
|
public sealed class OrderParcelPickupAttachEventHandler(
|
|
PickupOrderService pickupOrderService,
|
|
IUnitOfWorkManager unitOfWorkManager,
|
|
ILogger<OrderParcelPickupAttachEventHandler> logger)
|
|
: IEventHandler<OrderParcelPickupAttachIntegrationEvent>, ITransientDependency
|
|
{
|
|
public async Task HandleAsync(
|
|
OrderParcelPickupAttachIntegrationEvent @event,
|
|
CancellationToken cancellationToken)
|
|
{
|
|
using var unitOfWork = unitOfWorkManager.Begin();
|
|
try
|
|
{
|
|
await pickupOrderService.CreateForParcelInternalAsync(new PickupOrderCreateInput
|
|
{
|
|
CustomerId = @event.CustomerId,
|
|
SenderAddressId = @event.SenderAddressId,
|
|
Direction = PickupDirectionCodes.NormalizeOrDefault(@event.PickupDirection),
|
|
WarehouseId = @event.WarehouseId,
|
|
CarrierCode = @event.CarrierCode,
|
|
CarrierService = @event.CarrierService,
|
|
ExpectPickupTime = @event.ExpectPickupTime,
|
|
OrderIds = [@event.OrderId],
|
|
Remark = null
|
|
});
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
// 与原同步路径一致:揽收失败不回滚物流单,仅记日志(列表可补建)
|
|
logger.LogWarning(
|
|
ex,
|
|
"Pickup attach failed OrderId={OrderId}",
|
|
@event.OrderId);
|
|
}
|
|
|
|
await unitOfWork.CompleteAsync(cancellationToken);
|
|
}
|
|
}
|