package com.xiaoniu.system.operation.coupon.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

/**
 * <p>
 * 
 * </p>
 *
 * @author haoxuyang
 * @since 2024-10-17 02:30:09
 */
@Getter
@Setter
@TableName("tb_coupon")
@Schema(name = "TbCoupon", description = "")
public class TbCoupon implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    @Schema(description = "ID")
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;

    @Schema(description = "优惠券名称")
    private String couponName;

    @Schema(description = "优惠券图标")
    private String couponIcon;

    @Schema(description = "优惠券状态（1-上架 2-下架）")
    private Integer couponStatus;

    @Schema(description = "优惠券类型（1-平台通用 2-洗车美容 3-保养维修 4-车检验车 5-洗车券）")
    private Integer couponType;

    @Schema(description = "面向用户类型（全部用户 普通用户 新注册用户 会员用户 白银用户 黄金会员 高价值会员 重点保持用户 一般保持用户 重点发展用户 重点挽留用户 一般挽留用户 一般价值用户 一般发展用户）")
    private String userType;

    @Schema(description = "优惠方式（1-立减 2-满减 3-折扣）")
    private Integer discountMethod;

    @Schema(description = "优惠结果（选择优惠方式的优惠金额）")
    private String discountResult;

    @Schema(description = "兑换方式（1-金额兑换 2-积分兑换 3-免费兑换）")
    private Integer exchangeMethod;

    @Schema(description = "所需金额、积分")
    private String needed;

    @Schema(description = "发放时间")
    private Date distributionTime;

    @Schema(description = "结束时间")
    private Date endTime;

    @Schema(description = "数量上限")
    private Integer maximumQuantity;

    @Schema(description = "剩余数量")
    private Integer remainingQuantity;

    @Schema(description = "有效期")
    private Integer periodValidity;

    @Schema(description = "优惠券说明")
    private String couponDescribe;

    @Schema(description = "创建者")
    private String createBy;

    @Schema(description = "创建",hidden = true)
    private Date createTime;

    @Schema(description = "更新者")
    private String updateBy;

    @Schema(description = "更新时间",hidden = true)
    private Date updateTime;

    @Schema(description = "删除标记（0-正常，2-删除）")
    private Integer delFlag;

    @Schema(description = "备注")
    private String remark;
}
