refactor: 订单写操作移除租户上下文依赖

This commit is contained in:
2026-01-29 13:56:33 +00:00
parent 4dc5b067eb
commit b5dfb58a8b
2 changed files with 13 additions and 18 deletions

View File

@@ -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;
}
}

View File

@@ -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);