using TakeoutSaaS.Domain.Orders.Entities; using TakeoutSaaS.Domain.Orders.Enums; using TakeoutSaaS.Domain.Payments.Enums; namespace TakeoutSaaS.Domain.Orders.Repositories; /// /// 订单聚合仓储契约。 /// public interface IOrderRepository { /// /// 依据标识获取订单。 /// /// 订单 ID。 /// 租户 ID。 /// 取消标记。 /// 订单实体或 null。 Task FindByIdAsync(long orderId, long tenantId, CancellationToken cancellationToken = default); /// /// 依据标识获取订单(跨租户)。 /// /// 订单 ID。 /// 取消标记。 /// 订单实体或 null。 Task FindByIdAsync(long orderId, CancellationToken cancellationToken = default); /// /// 依据订单号获取订单。 /// /// 订单号。 /// 租户 ID。 /// 取消标记。 /// 订单实体或 null。 Task FindByOrderNoAsync(string orderNo, long tenantId, CancellationToken cancellationToken = default); /// /// 按状态筛选订单列表。 /// /// 租户 ID。 /// 订单状态。 /// 支付状态。 /// 取消标记。 /// 订单集合。 Task> SearchAsync(long tenantId, OrderStatus? status, PaymentStatus? paymentStatus, CancellationToken cancellationToken = default); /// /// 按状态筛选订单列表(可选租户过滤)。 /// /// 租户 ID(可选,空表示跨租户查询)。 /// 订单状态。 /// 支付状态。 /// 取消标记。 /// 订单集合。 Task> SearchAsync(long? tenantId, OrderStatus? status, PaymentStatus? paymentStatus, CancellationToken cancellationToken = default); /// /// 获取订单明细行。 /// /// 订单 ID。 /// 租户 ID。 /// 取消标记。 /// 订单明细集合。 Task> GetItemsAsync(long orderId, long tenantId, CancellationToken cancellationToken = default); /// /// 获取订单状态流转记录。 /// /// 订单 ID。 /// 租户 ID。 /// 取消标记。 /// 状态变更记录列表。 Task> GetStatusHistoryAsync(long orderId, long tenantId, CancellationToken cancellationToken = default); /// /// 获取订单退款申请。 /// /// 订单 ID。 /// 租户 ID。 /// 取消标记。 /// 退款申请列表。 Task> GetRefundsAsync(long orderId, long tenantId, CancellationToken cancellationToken = default); /// /// 新增订单。 /// /// 订单实体。 /// 取消标记。 /// 异步任务。 Task AddOrderAsync(Order order, CancellationToken cancellationToken = default); /// /// 新增订单明细。 /// /// 明细集合。 /// 取消标记。 /// 异步任务。 Task AddItemsAsync(IEnumerable items, CancellationToken cancellationToken = default); /// /// 新增订单状态记录。 /// /// 状态记录。 /// 取消标记。 /// 异步任务。 Task AddStatusHistoryAsync(OrderStatusHistory history, CancellationToken cancellationToken = default); /// /// 新增退款申请。 /// /// 退款申请实体。 /// 取消标记。 /// 异步任务。 Task AddRefundAsync(RefundRequest refund, CancellationToken cancellationToken = default); /// /// 持久化变更。 /// /// 取消标记。 /// 异步任务。 Task SaveChangesAsync(CancellationToken cancellationToken = default); /// /// 更新订单。 /// /// 订单实体。 /// 取消标记。 /// 异步任务。 Task UpdateOrderAsync(Order order, CancellationToken cancellationToken = default); /// /// 删除订单。 /// /// 订单 ID。 /// 租户 ID。 /// 取消标记。 /// 异步任务。 Task DeleteOrderAsync(long orderId, long tenantId, CancellationToken cancellationToken = default); }