package com.snack.server.module.seckill.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 抢购成功记录（仅记录成功，失败不入库）
 *
 * 对应数据库表：seckill_order
 * 唯一索引 (user_id, activity_id, sku_id) —— 一人一单兜底
 */
@Data
@TableName("seckill_order")
public class SeckillOrder implements Serializable {

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /** 用户 ID */
    private Long userId;

    /** 活动 ID */
    private Long activityId;

    /** 商品 SPU ID */
    private Long productId;

    /** SKU ID */
    private Long skuId;

    /** 抢购数量 */
    private Integer quantity;

    /** 成交单价 */
    private BigDecimal seckillPrice;

    /** 关联主订单 ID（支付/取消后回填） */
    private Long orderId;

    /** 状态：0-待支付 1-已支付 2-已取消 3-已退款 */
    private Integer status;

    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /** 支付时间 */
    private LocalDateTime payTime;
}
