feat: 管理端核心实体CRUD补齐

This commit is contained in:
2025-12-02 10:19:35 +08:00
parent 1a01454266
commit 93141fbf0c
75 changed files with 4513 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
using MediatR;
using TakeoutSaaS.Application.App.Orders.Dto;
using TakeoutSaaS.Application.App.Orders.Queries;
using TakeoutSaaS.Domain.Orders.Repositories;
using TakeoutSaaS.Shared.Abstractions.Tenancy;
namespace TakeoutSaaS.Application.App.Orders.Handlers;
/// <summary>
/// 订单列表查询处理器。
/// </summary>
public sealed class SearchOrdersQueryHandler(
IOrderRepository orderRepository,
ITenantProvider tenantProvider)
: IRequestHandler<SearchOrdersQuery, IReadOnlyList<OrderDto>>
{
private readonly IOrderRepository _orderRepository = orderRepository;
private readonly ITenantProvider _tenantProvider = tenantProvider;
/// <inheritdoc />
public async Task<IReadOnlyList<OrderDto>> Handle(SearchOrdersQuery request, CancellationToken cancellationToken)
{
var tenantId = _tenantProvider.GetCurrentTenantId();
var orders = await _orderRepository.SearchAsync(tenantId, request.Status, request.PaymentStatus, cancellationToken);
if (request.StoreId.HasValue)
{
orders = orders.Where(x => x.StoreId == request.StoreId.Value).ToList();
}
if (!string.IsNullOrWhiteSpace(request.OrderNo))
{
var orderNo = request.OrderNo.Trim();
orders = orders
.Where(x => x.OrderNo.Contains(orderNo, StringComparison.OrdinalIgnoreCase))
.ToList();
}
return orders.Select(order => new OrderDto
{
Id = order.Id,
TenantId = order.TenantId,
OrderNo = order.OrderNo,
StoreId = order.StoreId,
Channel = order.Channel,
DeliveryType = order.DeliveryType,
Status = order.Status,
PaymentStatus = order.PaymentStatus,
CustomerName = order.CustomerName,
CustomerPhone = order.CustomerPhone,
TableNo = order.TableNo,
QueueNumber = order.QueueNumber,
ReservationId = order.ReservationId,
ItemsAmount = order.ItemsAmount,
DiscountAmount = order.DiscountAmount,
PayableAmount = order.PayableAmount,
PaidAmount = order.PaidAmount,
PaidAt = order.PaidAt,
FinishedAt = order.FinishedAt,
CancelledAt = order.CancelledAt,
CancelReason = order.CancelReason,
Remark = order.Remark
}).ToList();
}
}