using MediatR; using Microsoft.Extensions.Logging; using TakeoutSaaS.Application.App.Deliveries.Commands; using TakeoutSaaS.Domain.Deliveries.Repositories; using TakeoutSaaS.Shared.Abstractions.Tenancy; namespace TakeoutSaaS.Application.App.Deliveries.Handlers; /// /// 删除配送单命令处理器。 /// public sealed class DeleteDeliveryOrderCommandHandler( IDeliveryRepository deliveryRepository, ITenantProvider tenantProvider, ILogger logger) : IRequestHandler { /// public async Task Handle(DeleteDeliveryOrderCommand request, CancellationToken cancellationToken) { // 1. 获取租户并定位配送单 var tenantId = tenantProvider.GetCurrentTenantId(); var existing = await deliveryRepository.FindByIdAsync(request.DeliveryOrderId, tenantId, cancellationToken); if (existing == null) { return false; } // 2. 删除并保存 await deliveryRepository.DeleteDeliveryOrderAsync(request.DeliveryOrderId, tenantId, cancellationToken); await deliveryRepository.SaveChangesAsync(cancellationToken); // 3. 记录删除日志 logger.LogInformation("删除配送单 {DeliveryOrderId}", request.DeliveryOrderId); return true; } }