package com.starry.admin.modules.shop.module.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.starry.admin.common.conf.StringTypeHandler;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 优惠券详细信息返回列表
 *
 * @author admin
 * @since 2024/7/8 下午11:29
 **/
@Data
public class PlayCouponDetailsReturnVo {

    /**
     * UUID
     */
    private String id;

    /**
     * 顾客ID
     */
    private String customId;

    /**
     * 顾客昵称
     */
    private String customNickname;

    /**
     * 顾客等级ID
     */
    private String customLevelId;

    /**
     * 优惠券ID
     */
    private String couponId;

    /**
     * 获得渠道（1:自主领取;2:后台发放;3:退款返还;4:分享领取;5:抽奖获得）
     */
    private String obtainingChannels;

    /**
     * 优惠券使用状态(1:未使用;2:已使用;3:已回收)
     */
    private String useState;

    /**
     * 生效时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime productiveTime;

    /**
     * 到期时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime expirationTime;

    /**
     * 获得时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime obtainingTime;

    /**
     * 使用时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime useTime;

    /**
     * 优惠券名称
     **/
    private String couponName;

    /**
     * 有效期类型（0:永久有效;1:固定时间内有效;2:领取后几天内有效）
     */
    private String validityPeriodType;

    /**
     * 生效时长,validityPeriodType=2时有效
     **/
    private Integer effectiveDay;

    /**
     * 使用优惠券最低消费金额
     **/
    private BigDecimal useMinAmount;

    /**
     * 优惠类型（0:满减;1:折扣）
     */
    private String discountType;

    /**
     * 优惠内容，文字展示
     */
    private String discountContent;

    /**
     * 折扣值
     */
    private BigDecimal discountAmount;

    /**
     * 优惠金额是否由店铺承担（0:不是;1:是）
     */
    private String attributionDiscounts;

    /**
     * 下单类型（0：指定单，1：随机单。2：打赏单）
     */
    @TableField(typeHandler = StringTypeHandler.class)
    private List<String> placeType;

    /**
     * 店员范围（0:所有店员）
     */
    private String clerkType;

    /**
     * 优惠券总数
     */
    private Integer couponQuantity;

    /**
     * 已发放数量
     */
    private Integer issuedQuantity;

    /**
     * 剩余数量
     */
    private Integer remainingQuantity;

    /**
     * 店员获得最大数量
     */
    private Integer clerkObtainedMaxQuantity;

    /**
     * 领取条件类型（0:所有人可领取,1:指定条件领取）
     */
    private String claimConditionType;

    /**
     * 顾客等级选择状态(0:未选择,1:选择)
     */
    private String customLevelCheckType;

    /**
     * 店员等级
     */
    @TableField(typeHandler = StringTypeHandler.class)
    private List<String> customLevel;

    /**
     * 用户关注公众号选择状态(0:未选择,1:选择)
     */
    private String customFollowStatusCheckType;

    /**
     * 顾客关注公众号状态(0:未关注,1:已关注)
     */
    private String customFollowStatus;

    /**
     * 顾客性别选择状态(0:未选择,1:选择)
     */
    private String customSexCheckType;
    /**
     * 顾客性别（0:未知;1:男,2:女）
     */
    @TableField(typeHandler = StringTypeHandler.class)
    private List<String> customSex;

    /**
     * 仅限新用户领取（0:不是;1:是）(没有下过单的用户，下单后再退单也不算)
     */
    private String newUser;

    /**
     * 优惠券上架状态（0;下架;1:上架）
     */
    private String couponOnLineState;

}
