namespace TakeoutSaaS.Application.App.Members.PointsMall.Dto;

/// <summary>
/// 积分商城兑换记录数据。
/// </summary>
public class MemberPointMallRecordDto
{
    /// <summary>
    /// 兑换记录标识。
    /// </summary>
    public long RecordId { get; set; }

    /// <summary>
    /// 兑换单号。
    /// </summary>
    public string RecordNo { get; set; } = string.Empty;

    /// <summary>
    /// 积分商城商品标识。
    /// </summary>
    public long PointMallProductId { get; set; }

    /// <summary>
    /// 商品名称。
    /// </summary>
    public string ProductName { get; set; } = string.Empty;

    /// <summary>
    /// 兑换类型（product/coupon/physical）。
    /// </summary>
    public string RedeemType { get; set; } = "product";

    /// <summary>
    /// 兑换方式（points/mixed）。
    /// </summary>
    public string ExchangeType { get; set; } = "points";

    /// <summary>
    /// 会员标识。
    /// </summary>
    public long MemberId { get; set; }

    /// <summary>
    /// 会员名称。
    /// </summary>
    public string MemberName { get; set; } = string.Empty;

    /// <summary>
    /// 会员手机号（脱敏）。
    /// </summary>
    public string MemberMobileMasked { get; set; } = string.Empty;

    /// <summary>
    /// 消耗积分。
    /// </summary>
    public int UsedPoints { get; set; }

    /// <summary>
    /// 现金部分。
    /// </summary>
    public decimal CashAmount { get; set; }

    /// <summary>
    /// 记录状态（pending_pickup/issued/completed/canceled）。
    /// </summary>
    public string Status { get; set; } = "issued";

    /// <summary>
    /// 兑换时间（UTC）。
    /// </summary>
    public DateTime RedeemedAt { get; set; }

    /// <summary>
    /// 发放时间（UTC）。
    /// </summary>
    public DateTime? IssuedAt { get; set; }

    /// <summary>
    /// 核销时间（UTC）。
    /// </summary>
    public DateTime? VerifiedAt { get; set; }
}
