track/src/TrackCenter.Application/Services/ProvideServices/OrderService.cs
xiaolipro 5c7829bdbd
All checks were successful
Build and Deploy / deploy (push) Successful in 54s
feat: fake up
2026-10-27 16:32:14 +08:00

71 lines
2.3 KiB
C#

using Fake.Messaging;
using TrackCenter.Application.Dtos.ProvideServices;
using TrackCenter.Domain.Aggregates.OrderAggregate;
using TrackCenter.Domain.Aggregates.TrackDetailsAggregate;
using TrackCenter.Domain.Aggregates.TrackPullAggregate;
using TrackCenter.Application.Services.Warning.Handlers;
using TrackCenter.Repository.Aggregates.OrderAggregate;
namespace TrackCenter.Application.Services.ProvideServices;
/// <summary>
/// 订单服务
/// </summary>
[ApiExplorerSettings(GroupName = "OpenApi")]
[Route("/ProviderService")]
public partial class OrderService(
IOrderRepository orderRepository,
IOrderOperationRecordEsRepository orderOperationRecordEsRepository,
ITrackPullConfigRepository trackPullConfigRepository,
IMessagePublisher messagePublisher,
ITrackDetailsEsRepository trackDetailsEsRepository,
IServiceProvider serviceProvider)
: ApplicationServiceBase
{
/// <summary>
/// 删除订单
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="BusinessException"></exception>
[HttpPost("Order/Delete")]
public async Task<IdBaseDto> DeleteOrderAsync(DeleteOrderInput input)
{
var order = await orderRepository.GetFirstAsync(x =>
x.AppKey == input.AppKey && x.OrderType == input.OrderType && x.OrderNo == input.OrderNo);
if (order == null)
{
throw ProviderServiceActionResult.Exception("删除订单失败", $"订单:{input.OrderNo}不存在");
}
await orderRepository.DeleteOrderAsync(order.Id);
// 预警计算
WarningCalc_OrderDeletedOrCompleted(order);
return new IdBaseDto { Id = order.Id };
}
private void WarningCalc_OrderDeletedOrCompleted(OrderEntity order)
{
order.IsDeleted = true;
_ = Task.Run(async () =>
{
var scope = serviceProvider.CreateAsyncScope();
try
{
var handler = scope.ServiceProvider.GetRequiredService<IOrderWarningHandler>();
await handler.HandleOrderDeletedOrCompletedAsync(order);
}
catch (Exception ex)
{
Log.Error(ex.ToString());
}
finally
{
await scope.DisposeAsync();
}
});
}
}