refactor: 订单写操作移除租户上下文依赖
This commit is contained in:
@@ -2,7 +2,6 @@ using MediatR;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using TakeoutSaaS.Application.App.Orders.Commands;
|
||||
using TakeoutSaaS.Domain.Orders.Repositories;
|
||||
using TakeoutSaaS.Shared.Abstractions.Tenancy;
|
||||
|
||||
namespace TakeoutSaaS.Application.App.Orders.Handlers;
|
||||
|
||||
@@ -11,29 +10,27 @@ namespace TakeoutSaaS.Application.App.Orders.Handlers;
|
||||
/// </summary>
|
||||
public sealed class DeleteOrderCommandHandler(
|
||||
IOrderRepository orderRepository,
|
||||
ITenantProvider tenantProvider,
|
||||
ILogger<DeleteOrderCommandHandler> logger)
|
||||
: IRequestHandler<DeleteOrderCommand, bool>
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public async Task<bool> Handle(DeleteOrderCommand request, CancellationToken cancellationToken)
|
||||
{
|
||||
// 1. 校验存在性
|
||||
var tenantId = tenantProvider.GetCurrentTenantId();
|
||||
var existing = await orderRepository.FindByIdAsync(request.OrderId, tenantId, cancellationToken);
|
||||
// 1. 校验存在性(跨租户)
|
||||
var existing = await orderRepository.FindByIdAsync(request.OrderId, cancellationToken);
|
||||
if (existing == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// 2. 删除
|
||||
await orderRepository.DeleteOrderAsync(request.OrderId, tenantId, cancellationToken);
|
||||
// 2. (空行后) 删除
|
||||
await orderRepository.DeleteOrderAsync(request.OrderId, existing.TenantId, cancellationToken);
|
||||
await orderRepository.SaveChangesAsync(cancellationToken);
|
||||
|
||||
// 3. 记录日志
|
||||
// 3. (空行后) 记录日志
|
||||
logger.LogInformation("删除订单 {OrderId}", request.OrderId);
|
||||
|
||||
// 4. 返回执行结果
|
||||
// 4. (空行后) 返回执行结果
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ using TakeoutSaaS.Application.App.Orders.Commands;
|
||||
using TakeoutSaaS.Application.App.Orders.Dto;
|
||||
using TakeoutSaaS.Domain.Orders.Entities;
|
||||
using TakeoutSaaS.Domain.Orders.Repositories;
|
||||
using TakeoutSaaS.Shared.Abstractions.Tenancy;
|
||||
|
||||
namespace TakeoutSaaS.Application.App.Orders.Handlers;
|
||||
|
||||
@@ -13,22 +12,21 @@ namespace TakeoutSaaS.Application.App.Orders.Handlers;
|
||||
/// </summary>
|
||||
public sealed class UpdateOrderCommandHandler(
|
||||
IOrderRepository orderRepository,
|
||||
ITenantProvider tenantProvider,
|
||||
ILogger<UpdateOrderCommandHandler> logger)
|
||||
: IRequestHandler<UpdateOrderCommand, OrderDto?>
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public async Task<OrderDto?> Handle(UpdateOrderCommand request, CancellationToken cancellationToken)
|
||||
{
|
||||
// 1. 读取订单
|
||||
var tenantId = tenantProvider.GetCurrentTenantId();
|
||||
var existing = await orderRepository.FindByIdAsync(request.OrderId, tenantId, cancellationToken);
|
||||
// 1. 读取订单(跨租户)
|
||||
var existing = await orderRepository.FindByIdAsync(request.OrderId, cancellationToken);
|
||||
if (existing == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
var tenantId = existing.TenantId;
|
||||
|
||||
// 2. 更新字段
|
||||
// 2. (空行后) 更新字段
|
||||
existing.OrderNo = request.OrderNo.Trim();
|
||||
existing.StoreId = request.StoreId;
|
||||
existing.Channel = request.Channel;
|
||||
@@ -50,14 +48,14 @@ public sealed class UpdateOrderCommandHandler(
|
||||
existing.CancelReason = request.CancelReason?.Trim();
|
||||
existing.Remark = request.Remark?.Trim();
|
||||
|
||||
// 3. 持久化
|
||||
// 3. (空行后) 持久化
|
||||
await orderRepository.UpdateOrderAsync(existing, cancellationToken);
|
||||
await orderRepository.SaveChangesAsync(cancellationToken);
|
||||
|
||||
// 4. 记录更新日志
|
||||
// 4. (空行后) 记录更新日志
|
||||
logger.LogInformation("更新订单 {OrderNo} ({OrderId})", existing.OrderNo, existing.Id);
|
||||
|
||||
// 5. 读取关联数据并返回
|
||||
// 5. (空行后) 读取关联数据并返回
|
||||
var items = await orderRepository.GetItemsAsync(existing.Id, tenantId, cancellationToken);
|
||||
var histories = await orderRepository.GetStatusHistoryAsync(existing.Id, tenantId, cancellationToken);
|
||||
var refunds = await orderRepository.GetRefundsAsync(existing.Id, tenantId, cancellationToken);
|
||||
|
||||
Reference in New Issue
Block a user