package com.yiqi.recharge.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;

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

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

    private Long id;

    @ApiModelProperty("批次号")
    private String batchNo;

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

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

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

    @ApiModelProperty("使用优先级，按照降序使用")
    private Integer useLevel;

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

    private Long cardVersionId;

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

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

    /**
     * 实收金额
     */
    @Excel(name = "实收金额")
    @ApiModelProperty("实收金额")
    private BigDecimal actualAmount;

    /**
     * 福利金额
     */
    @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;

    /**
     * 充值卡归属门店 0 代表 总部
     */
    @Excel(name = "充值卡归属门店")
    @ApiModelProperty("充值卡归属门店")

    private Long rechargeStoreId;

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

    /**
     * 充值用户ID
     */
    @Excel(name = "充值用户ID")
    @ApiModelProperty("充值用户ID")

    private Long rechargeUserId;

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

    /**
     * 生成方式（0=手动新增,1=批量生成,2=导入）
     */
    @ApiModelProperty("生成方式（0=手动新增,1=批量生成,2=导入,3=在线充值）")
    private String createType;

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

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

    /** 赠送余额激活时间 */
    @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("是否支持洗衣使用 Y是，N否")
    private String isSupportCloth;

    @ApiModelProperty("是否支持商品使用 Y是，N否")
    private String isSupportGoods;

    @ApiModelProperty("是否支持生活服务使用 Y是，N否")
    private String isSupportLife;

    @ApiModelProperty("是否支持汽车美容使用 Y是，N否")
    private String isSupportCar;

    /**
     * 充值卡总余额
     */
    @ApiModelProperty("充值卡总余额")
    @TableField(exist = false)
    private BigDecimal totalBalance;

    /** 团单公司 */
    @Excel(name = "团单公司")
    @ApiModelProperty("团单公司")
    private String companyName;
}
