package com.yiqi.recharge.domain.vo;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiqi.common.annotation.Excel;
import com.yiqi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

/**
 * 密码充值卡管理对象 recharge_password_card
 *
 * @author xiaohei
 * @date 2023-08-29
 */
@ApiModel("密码充值卡管理")
@Data
public class RechargePasswordCardQueryVO extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @ApiModelProperty("主键ID")
    private Long id;

    /**
     * 卡号
     */
    @Excel(name = "卡号")
    @ApiModelProperty("卡号")
    private String cardNo;

    /**
     * 批次号
     */
    @Excel(name = "批次号")
    @ApiModelProperty("批次号")
    private String batchNo;

    /**
     * 卡密
     */
    @ApiModelProperty("卡密")
    private String password;

    /**
     * 密码卡版本ID
     */
    @Excel(name = "密码卡版本ID")
    @ApiModelProperty("密码卡版本ID")
    private Long cardVersionId;

    @ApiModelProperty("密码卡版本名")
    private String cardVersionTitle;

    @ApiModelProperty("密码卡版本编号")
    private String cardVersionCode;

    /**
     * 充值金额
     */
    @Excel(name = "充值金额")
    @ApiModelProperty("充值金额")
    private BigDecimal rechargeAmount;

    /**
     * 赠送金额
     */
    @Excel(name = "赠送金额")
    @ApiModelProperty("赠送金额")
    private BigDecimal giveAmount;

    /**
     * 福利金额
     */
    @Excel(name = "福利金额")
    @ApiModelProperty("福利金额")
    private BigDecimal welfareAmount;

    /**
     * 福利金额
     */
    @Excel(name = "福利金额")
    @ApiModelProperty("福利金额")
    private BigDecimal welfareBalance;

    /**
     * 赠送积分
     */
    @Excel(name = "赠送积分")
    @ApiModelProperty("赠送积分")
    private Integer givePointAmount;

    /**
     * 充值余额
     */
    @ApiModelProperty("充值余额")
    private BigDecimal rechargeBalance;

    /**
     * 赠送余额
     */
    @ApiModelProperty("赠送余额")
    private BigDecimal giveBalance;


    /**
     * 使用状态（-2=已退卡, -1=已冻结, 0=未激活, 1=使用中, 2=已无效）
     */
    @Excel(name = "使用状态", readConverterExp = "-2=已退卡, -1=已冻结, 0=未激活, 1=使用中, 2=已无效")
    @ApiModelProperty("使用状态（-2=已退卡, -1=已冻结, 0=未激活, 1=使用中, 2=已无效）")
    private String rechargeStatus;

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

    /**
     * 赠送余额激活时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "赠送余额激活时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("赠送余额激活时间")
    private Date giveActiveTime;

    /** 赠送余额过期时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @Excel(name = "赠送余额过期时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("赠送余额过期时间")
    private Date giveExpiredTime;

    /**
     * 充值门店
     */
    @ApiModelProperty("归属门店")
    private Long rechargeStoreId;

    @Excel(name = "归属门店")
    @ApiModelProperty("充值归属门店名称")
    private String rechargeStoreName;

    /**
     * 用户绑定门店
     */
    @Excel(name = "用户绑定门店")
    @ApiModelProperty("用户绑定门店")
    private Long useBindStoreId;

    @Excel(name = "绑定门店")
    @ApiModelProperty("充值绑定门店名称")
    private String useBindStoreName;


    /**
     * 充值用户ID
     */
    @ApiModelProperty("充值用户ID")
    private Long rechargeUserId;

    @Excel(name = "充值用户")
    @ApiModelProperty("充值用户名")
    private String rechargeUserName;

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

    /**
     * 充值订单编号
     */
    @ApiModelProperty("充值订单编号")
    private String orderNo;

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

}
