feat: 扩展领域模型与配置
This commit is contained in:
111
src/Domain/TakeoutSaaS.Domain/Orders/Entities/Order.cs
Normal file
111
src/Domain/TakeoutSaaS.Domain/Orders/Entities/Order.cs
Normal file
@@ -0,0 +1,111 @@
|
||||
using TakeoutSaaS.Domain.Orders.Enums;
|
||||
using TakeoutSaaS.Domain.Payments.Enums;
|
||||
using TakeoutSaaS.Shared.Abstractions.Entities;
|
||||
|
||||
namespace TakeoutSaaS.Domain.Orders.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 交易订单。
|
||||
/// </summary>
|
||||
public sealed class Order : MultiTenantEntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 订单号。
|
||||
/// </summary>
|
||||
public string OrderNo { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 门店。
|
||||
/// </summary>
|
||||
public Guid StoreId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 下单渠道。
|
||||
/// </summary>
|
||||
public OrderChannel Channel { get; set; } = OrderChannel.MiniProgram;
|
||||
|
||||
/// <summary>
|
||||
/// 履约类型。
|
||||
/// </summary>
|
||||
public DeliveryType DeliveryType { get; set; } = DeliveryType.DineIn;
|
||||
|
||||
/// <summary>
|
||||
/// 当前状态。
|
||||
/// </summary>
|
||||
public OrderStatus Status { get; set; } = OrderStatus.PendingPayment;
|
||||
|
||||
/// <summary>
|
||||
/// 支付状态。
|
||||
/// </summary>
|
||||
public PaymentStatus PaymentStatus { get; set; } = PaymentStatus.Unpaid;
|
||||
|
||||
/// <summary>
|
||||
/// 顾客姓名。
|
||||
/// </summary>
|
||||
public string? CustomerName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 顾客手机号。
|
||||
/// </summary>
|
||||
public string? CustomerPhone { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 就餐桌号。
|
||||
/// </summary>
|
||||
public string? TableNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 排队号(如有)。
|
||||
/// </summary>
|
||||
public string? QueueNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 预约 ID。
|
||||
/// </summary>
|
||||
public Guid? ReservationId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品总额。
|
||||
/// </summary>
|
||||
public decimal ItemsAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 优惠金额。
|
||||
/// </summary>
|
||||
public decimal DiscountAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 应付金额。
|
||||
/// </summary>
|
||||
public decimal PayableAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 实付金额。
|
||||
/// </summary>
|
||||
public decimal PaidAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 支付时间。
|
||||
/// </summary>
|
||||
public DateTime? PaidAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 完成时间。
|
||||
/// </summary>
|
||||
public DateTime? FinishedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 取消时间。
|
||||
/// </summary>
|
||||
public DateTime? CancelledAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 取消原因。
|
||||
/// </summary>
|
||||
public string? CancelReason { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注。
|
||||
/// </summary>
|
||||
public string? Remark { get; set; }
|
||||
}
|
||||
59
src/Domain/TakeoutSaaS.Domain/Orders/Entities/OrderItem.cs
Normal file
59
src/Domain/TakeoutSaaS.Domain/Orders/Entities/OrderItem.cs
Normal file
@@ -0,0 +1,59 @@
|
||||
using TakeoutSaaS.Shared.Abstractions.Entities;
|
||||
|
||||
namespace TakeoutSaaS.Domain.Orders.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 订单明细。
|
||||
/// </summary>
|
||||
public sealed class OrderItem : MultiTenantEntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 订单 ID。
|
||||
/// </summary>
|
||||
public Guid OrderId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品 ID。
|
||||
/// </summary>
|
||||
public Guid ProductId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 商品名称。
|
||||
/// </summary>
|
||||
public string ProductName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// SKU/规格描述。
|
||||
/// </summary>
|
||||
public string? SkuName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单位。
|
||||
/// </summary>
|
||||
public string? Unit { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数量。
|
||||
/// </summary>
|
||||
public int Quantity { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单价。
|
||||
/// </summary>
|
||||
public decimal UnitPrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 折扣金额。
|
||||
/// </summary>
|
||||
public decimal DiscountAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 小计。
|
||||
/// </summary>
|
||||
public decimal SubTotal { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 自定义属性 JSON。
|
||||
/// </summary>
|
||||
public string? AttributesJson { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
using TakeoutSaaS.Domain.Orders.Enums;
|
||||
using TakeoutSaaS.Shared.Abstractions.Entities;
|
||||
|
||||
namespace TakeoutSaaS.Domain.Orders.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 订单状态流转记录。
|
||||
/// </summary>
|
||||
public sealed class OrderStatusHistory : MultiTenantEntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 订单标识。
|
||||
/// </summary>
|
||||
public Guid OrderId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 变更后的状态。
|
||||
/// </summary>
|
||||
public OrderStatus Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 操作人标识(可为空表示系统)。
|
||||
/// </summary>
|
||||
public Guid? OperatorId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注信息。
|
||||
/// </summary>
|
||||
public string? Notes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 发生时间。
|
||||
/// </summary>
|
||||
public DateTime OccurredAt { get; set; } = DateTime.UtcNow;
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
using TakeoutSaaS.Domain.Orders.Enums;
|
||||
using TakeoutSaaS.Shared.Abstractions.Entities;
|
||||
|
||||
namespace TakeoutSaaS.Domain.Orders.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 售后/退款申请。
|
||||
/// </summary>
|
||||
public sealed class RefundRequest : MultiTenantEntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 关联订单标识。
|
||||
/// </summary>
|
||||
public Guid OrderId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 退款单号。
|
||||
/// </summary>
|
||||
public string RefundNo { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 申请金额。
|
||||
/// </summary>
|
||||
public decimal Amount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 申请原因。
|
||||
/// </summary>
|
||||
public string Reason { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 退款状态。
|
||||
/// </summary>
|
||||
public RefundStatus Status { get; set; } = RefundStatus.Pending;
|
||||
|
||||
/// <summary>
|
||||
/// 用户提交时间。
|
||||
/// </summary>
|
||||
public DateTime RequestedAt { get; set; } = DateTime.UtcNow;
|
||||
|
||||
/// <summary>
|
||||
/// 审核完成时间。
|
||||
/// </summary>
|
||||
public DateTime? ProcessedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 审核备注。
|
||||
/// </summary>
|
||||
public string? ReviewNotes { get; set; }
|
||||
}
|
||||
11
src/Domain/TakeoutSaaS.Domain/Orders/Enums/DeliveryType.cs
Normal file
11
src/Domain/TakeoutSaaS.Domain/Orders/Enums/DeliveryType.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
namespace TakeoutSaaS.Domain.Orders.Enums;
|
||||
|
||||
/// <summary>
|
||||
/// 履约/交付方式。
|
||||
/// </summary>
|
||||
public enum DeliveryType
|
||||
{
|
||||
DineIn = 0,
|
||||
Pickup = 1,
|
||||
Delivery = 2
|
||||
}
|
||||
14
src/Domain/TakeoutSaaS.Domain/Orders/Enums/OrderChannel.cs
Normal file
14
src/Domain/TakeoutSaaS.Domain/Orders/Enums/OrderChannel.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
namespace TakeoutSaaS.Domain.Orders.Enums;
|
||||
|
||||
/// <summary>
|
||||
/// 下单渠道。
|
||||
/// </summary>
|
||||
public enum OrderChannel
|
||||
{
|
||||
Unknown = 0,
|
||||
MiniProgram = 1,
|
||||
ScanToOrder = 2,
|
||||
StaffConsole = 3,
|
||||
PhoneReservation = 4,
|
||||
ThirdPartyDelivery = 5
|
||||
}
|
||||
14
src/Domain/TakeoutSaaS.Domain/Orders/Enums/OrderStatus.cs
Normal file
14
src/Domain/TakeoutSaaS.Domain/Orders/Enums/OrderStatus.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
namespace TakeoutSaaS.Domain.Orders.Enums;
|
||||
|
||||
/// <summary>
|
||||
/// 订单状态。
|
||||
/// </summary>
|
||||
public enum OrderStatus
|
||||
{
|
||||
PendingPayment = 0,
|
||||
AwaitingPreparation = 1,
|
||||
InProgress = 2,
|
||||
Ready = 3,
|
||||
Completed = 4,
|
||||
Cancelled = 5
|
||||
}
|
||||
27
src/Domain/TakeoutSaaS.Domain/Orders/Enums/RefundStatus.cs
Normal file
27
src/Domain/TakeoutSaaS.Domain/Orders/Enums/RefundStatus.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
namespace TakeoutSaaS.Domain.Orders.Enums;
|
||||
|
||||
/// <summary>
|
||||
/// 退款申请状态。
|
||||
/// </summary>
|
||||
public enum RefundStatus
|
||||
{
|
||||
/// <summary>
|
||||
/// 等待审核。
|
||||
/// </summary>
|
||||
Pending = 0,
|
||||
|
||||
/// <summary>
|
||||
/// 审核通过,待原路退款。
|
||||
/// </summary>
|
||||
Approved = 1,
|
||||
|
||||
/// <summary>
|
||||
/// 已拒绝。
|
||||
/// </summary>
|
||||
Rejected = 2,
|
||||
|
||||
/// <summary>
|
||||
/// 已完成退款。
|
||||
/// </summary>
|
||||
Refunded = 3
|
||||
}
|
||||
Reference in New Issue
Block a user