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 long ShoppingCartId { get; set; }

    /// <summary>
    /// 商品或 SKU 标识。
    /// </summary>
    public long ProductId { get; set; }

    /// <summary>
    /// SKU 标识。
    /// </summary>
    public long? 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; }
}
