将轨迹、面单、9610、揽收、自动触发与 ForecastBilling 异步化,缩短扫码与下单 RT;队列未启用时同步回落。 Co-authored-by: Cursor <cursoragent@cursor.com>
49 lines
1.5 KiB
C#
49 lines
1.5 KiB
C#
using Fake.DependencyInjection;
|
|
using Fake.EventBus;
|
|
using Fake.UnitOfWork;
|
|
using Microsoft.Extensions.Logging;
|
|
using Oms.Application.Services.Orders.Issues;
|
|
|
|
namespace Oms.Application.Messaging.OrderSideEffects;
|
|
|
|
public sealed class OrderAutoTriggerFireEventHandler(
|
|
AutoTriggerRuntimeService autoTriggerRuntimeService,
|
|
IUnitOfWorkManager unitOfWorkManager,
|
|
ILogger<OrderAutoTriggerFireEventHandler> logger)
|
|
: IEventHandler<OrderAutoTriggerFireIntegrationEvent>, ITransientDependency
|
|
{
|
|
public async Task HandleAsync(
|
|
OrderAutoTriggerFireIntegrationEvent @event,
|
|
CancellationToken cancellationToken)
|
|
{
|
|
if (@event.OrderId <= 0
|
|
|| !Enum.TryParse<AutoTriggerTiming>(@event.Timing, ignoreCase: true, out var timing))
|
|
{
|
|
logger.LogWarning(
|
|
"AutoTrigger fire skipped invalid payload OrderId={OrderId} Timing={Timing}",
|
|
@event.OrderId,
|
|
@event.Timing);
|
|
return;
|
|
}
|
|
|
|
using var unitOfWork = unitOfWorkManager.Begin();
|
|
try
|
|
{
|
|
await autoTriggerRuntimeService.FireByOrderIdAsync(
|
|
@event.OrderId,
|
|
timing,
|
|
@event.OperatorUserId);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.LogWarning(
|
|
ex,
|
|
"AutoTrigger fire failed OrderId={OrderId} Timing={Timing}",
|
|
@event.OrderId,
|
|
timing);
|
|
}
|
|
|
|
await unitOfWork.CompleteAsync(cancellationToken);
|
|
}
|
|
}
|