package com.yiqi.app.domain;

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

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiqi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.yiqi.common.core.domain.BaseEntity;
import lombok.Data;

/**
 * 优惠券类型对象 app_coupon_type
 *
 * @author xiaohei
 * @date 2023-09-06
 */
@ApiModel("优惠券类型")
@TableName("app_coupon_type")
@Data
public class AppCouponType extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty("主键ID")

    private Long id;

    /**
     * APP第三方管理类型id
     */
    @ApiModelProperty("APP第三方管理类型id")

    private Long couponTypeThirdPartyId;

    /**
     * 优惠券类型名称
     */
    @Excel(name = "优惠券类型名称")
    @ApiModelProperty("优惠券类型名称")
    private String title;

    /**
     * 优惠券类型描述
     */
    @Excel(name = "优惠券类型描述")
    @ApiModelProperty("优惠券类型描述")
    private String description;

    @ApiModelProperty("优惠方式（0=抵扣,1=满减,2=折扣）")
    private String discountWay;

    /**
     * 优惠券类型图片
     */
    @Excel(name = "优惠券类型图片")
    @ApiModelProperty("优惠券类型图片")
    private String imgUrl;

    /**
     * 有效期开始日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "有效期开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("有效期开始日期")
    private Date startDate;

    /**
     * 有效期结束日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "有效期结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("有效期结束日期")
    private Date endDate;


    /** 优惠券库存 */
    @Excel(name = "优惠券库存")
    @ApiModelProperty("优惠券库存")
    private Integer couponStock;


    /** 优惠券发放数量 */
    @Excel(name = "优惠券发放数量")
    @ApiModelProperty("优惠券发放数量")
    private Integer  couponSendNum;

    /** 优惠券使用数量 */
    @Excel(name = "优惠券使用数量")
    @ApiModelProperty("优惠券使用数量")
    private Integer couponUseNum;

    /**
     * 1：手动券 2：活动券 9：新用户赠送券
     *
     */
    @Excel(name = "发送方式", readConverterExp = "1=手动券,2=活动券,9=新用户赠送券")
    @ApiModelProperty("发送方式")
    private Integer sendWay;

    /**
     * 适用范围 1：全部衣服  2：指定衣服
     */
    @Excel(name = "适用范围", readConverterExp = "1=全部衣服,2=指定衣服")
    @ApiModelProperty("适用范围")
    private Integer useScope;
    /**
     * 状态
     */
    @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
    @ApiModelProperty("状态")
    private String status;

    /**
     * 是否单件抵扣券
     */
    @Excel(name = "是否单件抵扣券")
    @ApiModelProperty("是否单件抵扣券")
    private String isUnique;

    /**
     * 是否可以手动发券
     */
    @Excel(name = "是否可以手动发券")
    @ApiModelProperty("是否可以手动发券")
    private String canManual;

    /**
     * 最小限制金额
     */
    @Excel(name = "最小限制金额")
    @ApiModelProperty("最小限制金额")
    private BigDecimal minAmount;

    /**
     * 折扣比例
     */
    @Excel(name = "折扣比例")
    @ApiModelProperty("折扣比例")
    private Integer discountRate;

    /**
     * 抵用金额
     */
    @Excel(name = "抵用金额")
    @ApiModelProperty("抵用金额")
    private BigDecimal deductAmount;

    @ApiModelProperty("是否可以抵扣充值")
    private String canDeductRecharge;

    @ApiModelProperty("抵扣充值金额")
    private BigDecimal deductRechargeAmount;

    /**
     * 删除状态（0=正常,2=删除）
     */
    @ApiModelProperty("删除状态（0=正常,2=删除）")
    private String delFlag;

    /**
     * 是否可以领取
     */
    @TableField(exist = false)
    private Integer canReceive;
}
