refactor: 订单写操作移除租户上下文依赖
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user