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 Microsoft.Extensions.Logging;
using TakeoutSaaS.Application.App.Orders.Commands; using TakeoutSaaS.Application.App.Orders.Commands;
using TakeoutSaaS.Domain.Orders.Repositories; using TakeoutSaaS.Domain.Orders.Repositories;
using TakeoutSaaS.Shared.Abstractions.Tenancy;
namespace TakeoutSaaS.Application.App.Orders.Handlers; namespace TakeoutSaaS.Application.App.Orders.Handlers;
@@ -11,29 +10,27 @@ namespace TakeoutSaaS.Application.App.Orders.Handlers;
/// </summary> /// </summary>
public sealed class DeleteOrderCommandHandler( public sealed class DeleteOrderCommandHandler(
IOrderRepository orderRepository, IOrderRepository orderRepository,
ITenantProvider tenantProvider,
ILogger<DeleteOrderCommandHandler> logger) ILogger<DeleteOrderCommandHandler> logger)
: IRequestHandler<DeleteOrderCommand, bool> : IRequestHandler<DeleteOrderCommand, bool>
{ {
/// <inheritdoc /> /// <inheritdoc />
public async Task<bool> Handle(DeleteOrderCommand request, CancellationToken cancellationToken) public async Task<bool> Handle(DeleteOrderCommand request, CancellationToken cancellationToken)
{ {
// 1. 校验存在性 // 1. 校验存在性(跨租户)
var tenantId = tenantProvider.GetCurrentTenantId(); var existing = await orderRepository.FindByIdAsync(request.OrderId, cancellationToken);
var existing = await orderRepository.FindByIdAsync(request.OrderId, tenantId, cancellationToken);
if (existing == null) if (existing == null)
{ {
return false; return false;
} }
// 2. 删除 // 2. (空行后) 删除
await orderRepository.DeleteOrderAsync(request.OrderId, tenantId, cancellationToken); await orderRepository.DeleteOrderAsync(request.OrderId, existing.TenantId, cancellationToken);
await orderRepository.SaveChangesAsync(cancellationToken); await orderRepository.SaveChangesAsync(cancellationToken);
// 3. 记录日志 // 3. (空行后) 记录日志
logger.LogInformation("删除订单 {OrderId}", request.OrderId); logger.LogInformation("删除订单 {OrderId}", request.OrderId);
// 4. 返回执行结果 // 4. (空行后) 返回执行结果
return true; return true;
} }
} }

View File

@@ -4,7 +4,6 @@ using TakeoutSaaS.Application.App.Orders.Commands;
using TakeoutSaaS.Application.App.Orders.Dto; using TakeoutSaaS.Application.App.Orders.Dto;
using TakeoutSaaS.Domain.Orders.Entities; using TakeoutSaaS.Domain.Orders.Entities;
using TakeoutSaaS.Domain.Orders.Repositories; using TakeoutSaaS.Domain.Orders.Repositories;
using TakeoutSaaS.Shared.Abstractions.Tenancy;
namespace TakeoutSaaS.Application.App.Orders.Handlers; namespace TakeoutSaaS.Application.App.Orders.Handlers;
@@ -13,22 +12,21 @@ namespace TakeoutSaaS.Application.App.Orders.Handlers;
/// </summary> /// </summary>
public sealed class UpdateOrderCommandHandler( public sealed class UpdateOrderCommandHandler(
IOrderRepository orderRepository, IOrderRepository orderRepository,
ITenantProvider tenantProvider,
ILogger<UpdateOrderCommandHandler> logger) ILogger<UpdateOrderCommandHandler> logger)
: IRequestHandler<UpdateOrderCommand, OrderDto?> : IRequestHandler<UpdateOrderCommand, OrderDto?>
{ {
/// <inheritdoc /> /// <inheritdoc />
public async Task<OrderDto?> Handle(UpdateOrderCommand request, CancellationToken cancellationToken) public async Task<OrderDto?> Handle(UpdateOrderCommand request, CancellationToken cancellationToken)
{ {
// 1. 读取订单 // 1. 读取订单(跨租户)
var tenantId = tenantProvider.GetCurrentTenantId(); var existing = await orderRepository.FindByIdAsync(request.OrderId, cancellationToken);
var existing = await orderRepository.FindByIdAsync(request.OrderId, tenantId, cancellationToken);
if (existing == null) if (existing == null)
{ {
return null; return null;
} }
var tenantId = existing.TenantId;
// 2. 更新字段 // 2. (空行后) 更新字段
existing.OrderNo = request.OrderNo.Trim(); existing.OrderNo = request.OrderNo.Trim();
existing.StoreId = request.StoreId; existing.StoreId = request.StoreId;
existing.Channel = request.Channel; existing.Channel = request.Channel;
@@ -50,14 +48,14 @@ public sealed class UpdateOrderCommandHandler(
existing.CancelReason = request.CancelReason?.Trim(); existing.CancelReason = request.CancelReason?.Trim();
existing.Remark = request.Remark?.Trim(); existing.Remark = request.Remark?.Trim();
// 3. 持久化 // 3. (空行后) 持久化
await orderRepository.UpdateOrderAsync(existing, cancellationToken); await orderRepository.UpdateOrderAsync(existing, cancellationToken);
await orderRepository.SaveChangesAsync(cancellationToken); await orderRepository.SaveChangesAsync(cancellationToken);
// 4. 记录更新日志 // 4. (空行后) 记录更新日志
logger.LogInformation("更新订单 {OrderNo} ({OrderId})", existing.OrderNo, existing.Id); logger.LogInformation("更新订单 {OrderNo} ({OrderId})", existing.OrderNo, existing.Id);
// 5. 读取关联数据并返回 // 5. (空行后) 读取关联数据并返回
var items = await orderRepository.GetItemsAsync(existing.Id, tenantId, cancellationToken); var items = await orderRepository.GetItemsAsync(existing.Id, tenantId, cancellationToken);
var histories = await orderRepository.GetStatusHistoryAsync(existing.Id, tenantId, cancellationToken); var histories = await orderRepository.GetStatusHistoryAsync(existing.Id, tenantId, cancellationToken);
var refunds = await orderRepository.GetRefundsAsync(existing.Id, tenantId, cancellationToken); var refunds = await orderRepository.GetRefundsAsync(existing.Id, tenantId, cancellationToken);