package com.ylx.massage.domain;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 订单商品明细实体类
 */
@Data
@TableName("product_order_item")
public class ProductOrderItem implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 订单ID
     */
    @TableField
    private Long orderId;

    /**
     * 订单编号（冗余，方便查询）
     */
    @TableField
    private String orderNo;

    /**
     * 商品ID
     */
    @TableField
    private Long productId;

    /**
     * 商品名称
     */
    @TableField
    private String productName;

    /**
     * 商品SKU ID
     */
    @TableField
    private Long skuId;

    /**
     * SKU规格信息快照 JSON，如{"颜色":"红色","尺寸":"XL"}
     */
    @TableField
    private String skuSpec;

    /**
     * SKU图片
     */
    @TableField
    private String skuImage;

    /**
     * 下单时单价（分）
     */
    @TableField
    private Integer price;

    /**
     * 购买数量
     */
    @TableField
    private Integer quantity;

    /**
     * 总金额（分）= price × quantity
     */
    @TableField
    private BigDecimal totalAmount;

    /**
     * 优惠金额（分）
     */
    @TableField
    private BigDecimal discountAmount;

    /**
     * 实付金额（分）
     */
    @TableField
    private BigDecimal actualAmount;

    /**
     * 退款状态 (0无退款 1退款中 2已退款 3退款失败)
     */
    @TableField
    private Integer refundStatus;

    /**
     * 退款金额（分）
     */
    @TableField
    private BigDecimal refundAmount;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}