package com.qs.mp.admin.domain.vo;

import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.qs.mp.admin.domain.CouponTicket;
import com.qs.mp.admin.domain.GoodsSku;
import com.qs.mp.admin.domain.TicketBox;
import com.qs.mp.channel.domain.Channel;
import com.qs.mp.common.enums.CouponDiscountTypeEnum;
import com.qs.mp.common.enums.CouponDistributeTypeEnum;
import com.qs.mp.common.enums.CouponStatusEnum;
import com.qs.mp.common.enums.CouponTypeEnum;
import com.qs.mp.common.enums.CouponUseAreaEnum;

import java.util.Date;
import java.util.List;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * @describe 优惠券实体类
 * @auther quanshu
 * @create 2022-03-07 20:43:44
 */
@Data
@ApiModel("优惠券实体类")
public class CouponVO {


    /**
     * 盲票购买优惠券使用范围限制列表
     */
    @ApiModelProperty("盲票购买优惠券使用范围限制列表")
    private List<TicketBox> ticketBoxList;

    /**
     * 经销商门店优惠券使用范围限制列表
     */
    @ApiModelProperty("经销商门店优惠券使用范围限制列表")
    private List<Channel> channelList;


    /**
     * 主键
     */
    @ApiModelProperty("优惠券id")
    private Long couponId;

    /**
     * 标题
     */
    @ApiModelProperty("标题")
    private String title;

    /**
     * 类型;1用户盲票购买优惠券、2用户门店消费优惠券、3经销商盲票采购优惠券
     */
    @ApiModelProperty("类型;1用户盲票购买优惠券、2用户门店消费优惠券、3经销商盲票采购优惠券")
    @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
    private CouponTypeEnum type;

    /**
     * 图片
     */
    @ApiModelProperty("图片")
    private String picUrl;

    /**
     * 使用说明
     */
    @ApiModelProperty("使用说明")
    private String description;

    /**
     * 优惠类型;1代金券、2折扣券、3兑换券
     */
    @ApiModelProperty("优惠类型;1代金券、2折扣券、3兑换券")
    @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
    private CouponDiscountTypeEnum discountType;

    /**
     * 优惠金额（比例）
     */
    @ApiModelProperty("优惠金额（比例）")
    private Integer discount;

    /**
     * 最低消费金额
     */
    @ApiModelProperty("最低消费金额")
    private Integer minOrderAmt;

    /**
     * 渠道代金券，渠道承担比例
     */
    @ApiModelProperty("渠道代金券，渠道承担比例")
    private Integer channelSharedRate;


    /**
     * 状态;off下架 on正常
     */
    @ApiModelProperty("状态;off下架 on正常")
    @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
    private CouponStatusEnum status;

    /**
     * 使用范围;0通用 1生成券时指定范围 2发放时动态指定范围
     */
    @ApiModelProperty("使用范围;0通用, 1指定范围, 2门店消费,发放时动态指定范围, 3线上票, 4线下票")
    @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
    private CouponUseAreaEnum useArea;

    /**
     * 发放方式;1系统发放 2用户主动领取
     */
    @ApiModelProperty("发放方式;1系统发放 2用户主动领取")
    @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
    private CouponDistributeTypeEnum distributeType;

    /**
     * 叠加使用;0不允许 1允许
     */
    @ApiModelProperty("叠加使用;0不允许 1允许")
    private Integer compositeUse;

    /**
     * 有效期天数;从领券后开始多少天有效，0则使用绝对有效期
     */
    @ApiModelProperty("有效期天数;从领券后开始多少天有效，0则使用绝对有效期")
    private Integer dueDays;

    /**
     * 有效期开始日
     */
    @ApiModelProperty("有效期开始日")
    private Date validStart;

    /**
     * 有效期结束日
     */
    @ApiModelProperty("有效期结束日")
    private Date validEnd;

    /**
     * 总量;总量为0代表不限量
     */
    @ApiModelProperty("总量;总量为0代表不限量")
    private Integer quantity;

    /**
     * 已发放量
     */
    @ApiModelProperty("已发放量")
    private Integer distributeQty;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createdTime;

    /**
     * 更新时间
     */
    @ApiModelProperty("更新时间")
    private Date updatedTime;


}
