package com.ylx.massage.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

/**
 * @author jianlong
 * @date 2024-05-14 17:48
 */
@Data
@ApiModel(value = "CouponReceiveVo" ,description = "优惠券vo")
public class CouponReceiveVo{

    /**
     * 主键id
     */
    @ApiModelProperty("id")
    private String id;

    /**
     * 用户openId
     */
    @ApiModelProperty("用户openId")
    private String openid;

    /**
     * 优惠券id
     */
    @ApiModelProperty("优惠券id")
    private String couponId;

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

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

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

    /**
     * 有效期类型: 1-固定日期范围 2-领券后N天有效 3-长期有效 4-三方赠送
     */
    private Integer validityType;

    /**
     * 开始时间
     */
    private Date validStartTime;

    /**
     * 过期时间
     */
    @ApiModelProperty("过期时间")
    private Date expirationTime;

    /**
     * 过期时间
     */
    @ApiModelProperty("过期时间String")
    private String expirationTimeString;

    /**
     * 市场金额
     */
    @ApiModelProperty("市场金额")
    private BigDecimal marketPrice;

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

    /**
     * 折扣率: 适用于折扣券
     */
    private BigDecimal ruleDiscountRate;

    /**
     * 折扣上限金额: 适用于折扣券
     */
    private BigDecimal ruleDiscountCapAmount;

    /**
     * 满减金额: 仅满减券使用
     */
    private BigDecimal ruleDiscountRateAmount;

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

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

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

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

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

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

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

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

    /** 创建时间 */
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;

    /** 修改时间 */
    @ApiModelProperty("修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime updateTime;
}
