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_item
 *
 * @author xiaohei
 * @date 2023-09-19
 */
@ApiModel("优惠券")
@TableName("app_coupon_item")
@Data
public class AppCouponItem extends BaseEntity {
    private static final long serialVersionUID = 1L;

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

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

    /**
     * 优惠券类型ID
     */
    @Excel(name = "优惠券类型ID")
    @ApiModelProperty("优惠券类型ID")
    private Long couponTypeId;

    @ApiModelProperty("优惠券类型名称")
    private String couponTypeTitle;

    /**
     * 优惠券来源
     */
    @Excel(name = "优惠券来源")
    @ApiModelProperty("优惠券来源 platformSend 平台发放; storeSend 门店发放；  activeSend 手动发放； activitySend 活动发放")
    private String source;

    /**
     * 订单编码
     */
    @Excel(name = "订单编码")
    @ApiModelProperty("订单编码")
    private String orderNo;

    /**
     * 活动ID
     */
    @Excel(name = "活动ID")
    @ApiModelProperty("活动ID")
    private Long activityInfoId;

    /**
     * 所属门店
     */
    @Excel(name = "所属门店")
    @ApiModelProperty("所属门店")
    private Long storeId;

    /**
     * 是否单件适用，进行折扣
     */
    private String isUnique;

    /**
     * 客户ID
     */
    @Excel(name = "客户ID")
    @ApiModelProperty("客户ID")
    private Long appUserId;


    @ApiModelProperty("折扣比例%")
    private Integer discountRate;

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

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

    /**
     * 有效期开始时间
     */
    @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;

    /**
     * 门店适用范围 1：适用领取本店 2：活动参与门店
     */
    private Integer storeScope;

    /**
     * 适用范围 1：全部衣服 2：指定衣服
     */
    private Integer useScope;

    /**
     * 适用门店集合，多个用分号隔开
     */
    private String storeIds;

    /**
     * 是否核销
     */
    @Excel(name = "是否核销")
    @ApiModelProperty("是否核销")
    private String isUsed;

    /**
     * 核销组织ID
     */
    @ApiModelProperty("核销门店")
    private Long usedStoreId;

    /**
     * 核销门店
     */
    @Excel(name = "核销门店")
    @ApiModelProperty("核销门店")
    @TableField(exist = false)
    private String usedStoreName;

    /**
     * 核销时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "核销时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("核销时间")
    private Date usedTime;

    @Excel(name = "核销码")
    @ApiModelProperty("核销码")
    private String deductNo;

    /**
     * 核销订单编码
     */
    @Excel(name = "核销订单编码")
    @ApiModelProperty("核销订单编码")
    private String deductOrderNo;


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