package com.ruoyi.invest.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import javax.validation.constraints.NotNull;
import java.util.Date;
/**
 * 银行卡信息对象 bank_card
 *
 * @author tianyongbao
 * @date 2024-03-18
 */
@ApiModel("银行卡信息对象")
@Data
public class BankCardLend extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private Long id;

    /** 银行卡名称 */
    @ApiModelProperty(value="银行卡名称)")
    @NotNull(message="银行卡名称不能为空")
    @Excel(name = "银行卡名称")
    private String name;

    /** 类型，1储蓄卡，2信用卡 */
    @ApiModelProperty(value="类型，1储蓄卡，2信用卡)")
    @NotNull(message="类型，1储蓄卡，2信用卡不能为空")
    @Excel(name = "类型，1储蓄卡，2信用卡")
    private String type;

    /** 银行卡号 */
    @ApiModelProperty(value="银行卡号)")
    @NotNull(message="银行卡号不能为空")
    @Excel(name = "银行卡号")
    private String code;

    /** 开户行 */
    @ApiModelProperty(value="开户行")
    @Excel(name = "开户行")
    private String openingBank;

    /** 开户日期 */
    @ApiModelProperty(value="开户日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开户日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date activationDate;

    /** 账单日 */
    @ApiModelProperty(value="账单日)")
    @Excel(name = "账单日")
    private int billDate;

    /** 还款日 */
    @ApiModelProperty(value="还款日)")
    @Excel(name = "还款日")
    private int payDate;

    /** 延缓期限 */
    @ApiModelProperty(value="延缓期限")
    @Excel(name = "延缓期限")
    private String delayPeriod;

    /** 信用卡额度 */
    @ApiModelProperty(value="信用卡额度)")
    @NotNull(message="信用卡额度不能为空")
    @Excel(name = "信用卡额度")
    private int creditLimit;

    /** 有效期 */
    @ApiModelProperty(value="有效期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "有效期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date effectiveDate;

    /** 信用卡安全码 */
    @ApiModelProperty(value="信用卡安全码)")
    @NotNull(message="信用卡安全码不能为空")
    @Excel(name = "信用卡安全码")
    private String cvv;

    /** 删除标志（0代表存在 1代表删除） */
    private String delFlag;

    /** 储蓄卡类型，1：I类卡,2:II类卡 */
    @ApiModelProperty(value="储蓄卡类型，1：I类卡,2:II类卡")
    @Excel(name = "储蓄卡类型")
    private String debitType;


    /** 网贷类型，1：I类卡,2:II类卡 */
    @ApiModelProperty(value="网贷类型，1：信用贷款,2:网贷平台")
    @Excel(name = "网贷类型")
    private String lendType;

    /** 账单日消费是否算下期账单，1：是，0否 */
    @ApiModelProperty(value="账单日消费是否算下期账单")
    @Excel(name = "账单日消费是否算下期账单")
    private String isNextBillDate;


    /** 账单日消费算下期账单时间 */
    @ApiModelProperty(value="账单日消费算下期账单时间")
    @Excel(name = "账单日消费算下期账单时间")
    private String nextBillDateTime;

    /** 账单日操作 0账单，是否可销。0表示可销，1表示需提前一天。 */
    @ApiModelProperty(value="账单日操作0账单，是否可销。0表示可销，1表示需提前一天。")
    @Excel(name = "0账单")
    private String isZeroBill;

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("name", getName())
            .append("type", getType())
            .append("code", getCode())
            .append("openingBank", getOpeningBank())
            .append("activationDate", getActivationDate())
            .append("billDate", getBillDate())
            .append("payDate", getPayDate())
            .append("delayPeriod", getDelayPeriod())
            .append("creditLimit", getCreditLimit())
            .append("effectiveDate", getEffectiveDate())
            .append("cvv", getCvv())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("delFlag", getDelFlag())
            .append("remark", getRemark())
            .append("debitType", getDebitType())
                .append("lendType", getLendType())
                .append("isNextBillDate", getIsNextBillDate())
                .append("nextBillDateTime", getNextBillDateTime())
                .append("isZeroBill", getIsZeroBill())
            .toString();
    }
}
