package com.snack.server.module.coupon.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;

/**
 * 优惠券模板
 *
 * 对应数据库表：coupon
 */
@Data
@TableName("coupon")
public class Coupon implements Serializable {

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

    /** 优惠券名称 */
    private String name;

    /** 类型：0-满减券 1-折扣券 2-无门槛券 */
    private Integer type;

    /** 满减面值 / 折扣率（0.85 表示 8.5 折） */
    private BigDecimal amount;

    /** 最低使用金额（0 表示无门槛） */
    private BigDecimal minAmount;

    /** 折扣券最高抵扣金额 */
    private BigDecimal maxDiscount;

    /** 发放总量（-1 表示不限量） */
    private Integer total;

    /** 剩余可领取数量 */
    private Integer remain;

    /** 每人限领数量 */
    private Integer perLimit;

    /** 状态：0-未上线 1-已上线 2-已结束 */
    private Integer status;

    /** 领取开始时间 */
    private LocalDateTime startTime;

    /** 领取截止时间 */
    private LocalDateTime endTime;

    /** 领取后有效天数（NULL 时使用固定截止日期） */
    private Integer validDays;

    /** 使用说明 */
    private String description;

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

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
