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

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;

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

/**
 * @Author haoxuyang
 * @Date 2024/10/17 15:04
 */
@Data
@Schema(description = "优惠券详细响应参数VO")
public class CouponDetailsVO {

    @Schema(description = "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-车检验车）")
    private Integer couponType;

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

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

    @Schema(description = "立减-优惠金额")
    private BigDecimal discountAmount;

    @Schema(description = "满减-满")
    private BigDecimal full;

    @Schema(description = "满减-减")
    private BigDecimal minus;

    @Schema(description = "折扣-减")
    private Double discount;

    @Schema(description = "折扣-状态（1-是 2-否）")
    private String discountStatus;

    @Schema(description = "折扣-最多可减")
    private BigDecimal maximumReduction;

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

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

    @JsonFormat(pattern = "yyyy-MM-dd")
    @Schema(description = "发放时间")
    private Date distributionTime;

    @JsonFormat(pattern = "yyyy-MM-dd")
    @Schema(description = "结束时间")
    private Date endTime;

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

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

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

}
