package com.ycwl.basic.pricing.entity;

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 com.ycwl.basic.pricing.enums.CouponType;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 优惠券配置实体
 */
@Data
@TableName("price_coupon_config")
public class PriceCouponConfig {
    
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    
    /**
     * 优惠券名称
     */
    private String couponName;
    
    /**
     * 优惠券类型
     */
    private CouponType couponType;
    
    /**
     * 优惠值
     */
    private BigDecimal discountValue;
    
    /**
     * 最小使用金额
     */
    private BigDecimal minAmount;
    
    /**
     * 最大优惠金额
     */
    private BigDecimal maxDiscount;
    
    /**
     * 适用商品类型(JSON)
     */
    private String applicableProducts;

    /**
     * 优惠券使用门槛：要求在可折扣商品范围内出现指定属性Key(JSON)
     * 为空表示不限制
     */
    private String requiredAttributeKeys;
    
    /**
     * 发行总量
     */
    private Integer totalQuantity;
    
    /**
     * 已使用数量
     */
    private Integer usedQuantity;

    /**
     * 已领取数量(区分于已使用数量)
     */
    private Integer claimedQuantity;

    /**
     * 每个用户可领取数量限制(NULL表示不限制)
     */
    private Integer userClaimLimit;

    /**
     * 生效时间
     */
    private Date validFrom;

    /**
     * 失效时间
     */
    private Date validUntil;

    /**
     * 领取后有效天数（NULL表示不限制，仅使用全局有效期）
     */
    private Integer validDaysAfterClaim;

    /**
     * 是否启用
     */
    private Boolean isActive;
    
    /**
     * 景区ID - 限制优惠券只能在该景区使用
     */
    private String scenicId;
    
    @TableField("create_time")
    private Date createTime;
    
    @TableField("update_time")
    private Date updateTime;
    
    private Long createBy;
    
    private Long updateBy;
    
    private Integer deleted;
    
    private Date deletedAt;
}
