feat: 扩展领域模型与配置

This commit is contained in:
贺爱泽
2025-12-01 13:26:05 +08:00
parent a08804658b
commit 5ddad07658
148 changed files with 8519 additions and 2 deletions

View File

@@ -0,0 +1,55 @@
using TakeoutSaaS.Domain.Ordering.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Ordering.Entities;
/// <summary>
/// 购物车条目。
/// </summary>
public sealed class CartItem : MultiTenantEntityBase
{
/// <summary>
/// 所属购物车标识。
/// </summary>
public Guid ShoppingCartId { get; set; }
/// <summary>
/// 商品或 SKU 标识。
/// </summary>
public Guid ProductId { get; set; }
/// <summary>
/// SKU 标识。
/// </summary>
public Guid? ProductSkuId { get; set; }
/// <summary>
/// 商品名称快照。
/// </summary>
public string ProductName { get; set; } = string.Empty;
/// <summary>
/// 单价快照。
/// </summary>
public decimal UnitPrice { get; set; }
/// <summary>
/// 数量。
/// </summary>
public int Quantity { get; set; }
/// <summary>
/// 自定义备注(口味要求)。
/// </summary>
public string? Remark { get; set; }
/// <summary>
/// 状态。
/// </summary>
public CartItemStatus Status { get; set; } = CartItemStatus.Normal;
/// <summary>
/// 扩展 JSON规格、加料选项等
/// </summary>
public string? AttributesJson { get; set; }
}

View File

@@ -0,0 +1,29 @@
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Ordering.Entities;
/// <summary>
/// 购物车条目的加料/附加项。
/// </summary>
public sealed class CartItemAddon : MultiTenantEntityBase
{
/// <summary>
/// 所属购物车条目。
/// </summary>
public Guid CartItemId { get; set; }
/// <summary>
/// 选项名称。
/// </summary>
public string Name { get; set; } = string.Empty;
/// <summary>
/// 附加价格。
/// </summary>
public decimal ExtraPrice { get; set; }
/// <summary>
/// 选项 ID可对应 ProductAddonOption
/// </summary>
public Guid? OptionId { get; set; }
}

View File

@@ -0,0 +1,40 @@
using TakeoutSaaS.Domain.Ordering.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Ordering.Entities;
/// <summary>
/// 结账会话,记录校验上下文。
/// </summary>
public sealed class CheckoutSession : MultiTenantEntityBase
{
/// <summary>
/// 用户标识。
/// </summary>
public Guid UserId { get; set; }
/// <summary>
/// 门店标识。
/// </summary>
public Guid StoreId { get; set; }
/// <summary>
/// 会话 Token。
/// </summary>
public string SessionToken { get; set; } = string.Empty;
/// <summary>
/// 会话状态。
/// </summary>
public CheckoutSessionStatus Status { get; set; } = CheckoutSessionStatus.Pending;
/// <summary>
/// 校验结果明细 JSON。
/// </summary>
public string ValidationResultJson { get; set; } = string.Empty;
/// <summary>
/// 过期时间UTC
/// </summary>
public DateTime ExpiresAt { get; set; }
}

View File

@@ -0,0 +1,40 @@
using TakeoutSaaS.Domain.Ordering.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Ordering.Entities;
/// <summary>
/// 用户购物车,按租户/门店隔离。
/// </summary>
public sealed class ShoppingCart : MultiTenantEntityBase
{
/// <summary>
/// 用户标识。
/// </summary>
public Guid UserId { get; set; }
/// <summary>
/// 门店标识。
/// </summary>
public Guid StoreId { get; set; }
/// <summary>
/// 购物车状态,包含正常/锁定。
/// </summary>
public ShoppingCartStatus Status { get; set; } = ShoppingCartStatus.Active;
/// <summary>
/// 桌码或场景标识(扫码点餐)。
/// </summary>
public string? TableContext { get; set; }
/// <summary>
/// 履约方式(堂食/自提/配送)缓存。
/// </summary>
public string? DeliveryPreference { get; set; }
/// <summary>
/// 最近一次修改时间UTC
/// </summary>
public DateTime LastModifiedAt { get; set; } = DateTime.UtcNow;
}

View File

@@ -0,0 +1,22 @@
namespace TakeoutSaaS.Domain.Ordering.Enums;
/// <summary>
/// 购物车条目状态。
/// </summary>
public enum CartItemStatus
{
/// <summary>
/// 正常可结算。
/// </summary>
Normal = 0,
/// <summary>
/// 不可售(售罄或下架)。
/// </summary>
Unavailable = 1,
/// <summary>
/// 已被删除。
/// </summary>
Removed = 2
}

View File

@@ -0,0 +1,27 @@
namespace TakeoutSaaS.Domain.Ordering.Enums;
/// <summary>
/// 结账会话状态。
/// </summary>
public enum CheckoutSessionStatus
{
/// <summary>
/// 等待用户提交或支付。
/// </summary>
Pending = 0,
/// <summary>
/// 校验失败。
/// </summary>
Failed = 1,
/// <summary>
/// 已用于创建订单。
/// </summary>
Completed = 2,
/// <summary>
/// 超时作废。
/// </summary>
Expired = 3
}

View File

@@ -0,0 +1,22 @@
namespace TakeoutSaaS.Domain.Ordering.Enums;
/// <summary>
/// 购物车状态。
/// </summary>
public enum ShoppingCartStatus
{
/// <summary>
/// 可正常使用。
/// </summary>
Active = 0,
/// <summary>
/// 已锁定(进行结账中)。
/// </summary>
Locked = 1,
/// <summary>
/// 已清空或失效。
/// </summary>
Cleared = 2
}