package com.ylx.massage.domain;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

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

@Data
@TableName("user_coupon_relation")
public class UserCouponRelation implements Serializable {

    private static final long serialVersionUID = 1L;

    /** id */
    @TableId(type = IdType.ASSIGN_ID)
    private String id;

    /** 用户openId */
    private String openId;

    /** 优惠券id */
    private String couponId;

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

    /** 券图URL */
    private String imageUrl;

    /** 优惠券类型 1-兑换券 2-折扣券 3-满减券 */
    private Integer couponType;

    /** 优惠券状态 0：待使用,1：使用中 2：已使用 3：已失效 */
    private Integer couponStatus;

    /** 使用有限期类型 1.用户领取后生效 2.三方用户赠送时间起 3.固定时间段 4.长期可用 */
    private Integer validityType;

    /** 开始时间 */
    private LocalDate startTime;

    /** 结束时间 */
    private LocalDate endTime;

    /** 天数 */
    private Integer dayNum;

    /** 领取时间 */
    private LocalDateTime receiveTime;

    /** 订单号 */
    private String orderNo;

    /** 市场售价 */
    private BigDecimal marketPrice;

    /** 失效日期 */
    private LocalDateTime expiringDate;

    /** 失效原因 */
    private String rejectReason;

    /** 补充说明 */
    private String additionalNote;

    /** 券来源 0:券中心 1:专属好券 2:免费体验 3:生日好礼 4:每日好礼 */
    private Integer ticketSource;

    /** 券中心分享用户id */
    private String centerShareUserId;

    /** 关联类型 1-商品 2-商品分类 */
    private String relatedType;

    /** 关联ID（商品ID或分类ID） */
    private String relatedId;

    /** 关联名称 */
    private String relatedName;

    /** 门槛金额(分): 满X元生效，适用于满减/折扣 */
    private BigDecimal ruleMinSpendAmount;

    /** 折扣比: 如0.80表示8折，仅折扣券使用 */
    private BigDecimal ruleDiscountRate;

    /** 折扣封顶金额(分): 折扣最高优惠 */
    private BigDecimal ruleDiscountCapAmount;

    /** 满减金额(分): 仅满减券使用 */
    private BigDecimal ruleReductionAmount;

    /** 描述 */
    private String description;

    /** 券中心唯一ID */
    private String ticketCenterId;

    /** 所在地区码 */
    private String country;

    /** 所在地区全部码 */
    private String countryAll;

    /** 所在地区 */
    private String locality;

    /** 商户id */
    private String merchantId;

    /** 商户名称 */
    private String storeName;

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


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