package com.muchinfo.mtp3pojos.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;

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

/**
 * <p>
 * 账户签解约信息表
 * </p>
 *
 * @author XKF
 * @since 2024-06-27
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("BANK_ACCOUNTSIGN")
@ApiModel(value="BankAccountsign对象", description="账户签解约信息表")
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class BankAccountsign extends Model<BankAccountsign> {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "资金账号")
    @TableId(value = "ACCOUNTCODE")
    private String accountcode;

    @ApiModelProperty(value = "托管银行编号")
    @TableField("CUSBANKID")
    private String cusbankid;

    @ApiModelProperty(value = "签约状态 - 1:未签约 2:签约待审核 3:签约中 4:已签约 5:解约待审核 6:解约中 7:已解约 8:已解绑 9:绑卡中 10:审核拒绝 11:换签待审核")
    @TableField("SIGNSTATUS")
    private Integer signstatus;

    @ApiModelProperty(value = "币种")
    @TableField("CURRENCY")
    private String currency;

    @ApiModelProperty(value = "账户类型(UserType)")
    @TableField("ACCOUNTTYPE")
    private Integer accounttype;

    @ApiModelProperty(value = "资金账号对应的账号名(UserName)")
    @TableField("ACCOUNTNAME")
    private String accountname;

    @ApiModelProperty(value = "银行卡类型")
    @TableField("BANKCARDTYPE")
    private Integer bankcardtype;

    @ApiModelProperty(value = "银行卡号")
    @TableField("BANKACCOUNTNO")
    private String bankaccountno;

    @ApiModelProperty(value = "银行账户类型 - 1-对私; 2-对公")
    @TableField("BANKACCOUNTTYPE")
    private Integer bankaccounttype;

    @ApiModelProperty(value = "银行子账号（签约成功后，很多银行会返回对应的这个虚拟账号）")
    @TableField("BANKCHILDACCOUNT")
    private String bankchildaccount;

    @ApiModelProperty(value = "签约银行ID")
    @TableField("BANKID")
    private String bankid;

    @ApiModelProperty(value = "签约银行支行号")
    @TableField("BRANCHBANKID")
    private String branchbankid;

    @ApiModelProperty(value = "签约银行支行名称")
    @TableField("BRANCHBANKNAME")
    private String branchbankname;

    @ApiModelProperty(value = "签约银行卡账号名")
    @TableField("BANKACCOUNTNAME")
    private String bankaccountname;

    @ApiModelProperty(value = "证件类型")
    @TableField("CARDTYPE")
    private String cardtype;

    @ApiModelProperty(value = "证件号码")
    @TableField("CARDNO")
    private String cardno;

    @ApiModelProperty(value = "开户行省份")
    @TableField("BANKPROVINCE")
    private String bankprovince;

    @ApiModelProperty(value = "开户行城市")
    @TableField("BANKCITY")
    private String bankcity;

    @ApiModelProperty(value = "方向(可以判断那方先发起的签约)")
    @TableField("DIRECT")
    private Integer direct;

    @ApiModelProperty(value = "手机号")
    @TableField("MOBILEPHONE")
    private String mobilephone;

    @ApiModelProperty(value = "扩展信息(JSON字符串)")
    @TableField("EXTENDINFO")
    private String extendinfo;

    @ApiModelProperty(value = "最后一次签约成功的流水号")
    @TableField("EXCHTICKET")
    private String exchticket;

    @ApiModelProperty(value = "更新时间(签解约更新时间)")
    @TableField("UPDATETIME")
    private Date updatetime;

    @ApiModelProperty(value = "最后一次更新的时间")
    @TableField("APPLICATIONTIME")
    private Date applicationtime;

    @ApiModelProperty(value = "调转网址")
    @TableField("NETADDR")
    private String netaddr;

    @ApiModelProperty(value = "审核人")
    @TableField("AUDITID")
    private BigDecimal auditid;

    @ApiModelProperty(value = "审核时间")
    @TableField("AUDITTIME")
    private Date audittime;

    @ApiModelProperty(value = "申请流水")
    @TableField("APPLYEXCHTICKET")
    private String applyexchticket;

    @TableField(exist = false)
    private String cusbankname;
    @TableField(exist = false)
    private String bankname;


    @Override
    public Serializable pkVal() {
        return this.accountcode;
    }

}
