package com.yn.bftl.thirdparty.modules.chinaums.dto.chinaums;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;

/**
 * 银联创建商户DTO
 *
 * @author huabiao
 * @create 2022/12/6  15:28
 **/
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "ChinaumsCreateMchDTO", description = "银联创建商户DTO")
public class ChinaumsCreateMchDTO {

    @ApiModelProperty(value = "平台订单号", hidden = true)
    private String outRequestNo;

    @ApiModelProperty(value = "主体类型：1(\"企业\"),2(\"个体工商户\")", required = true)
    @NotBlank
    private String organizationType;

    @ApiModelProperty(value = "商户简称", required = true)
    @NotBlank
    private String shortName;

    // 营业执照
    @ApiModelProperty(value = "营业执照扫描件", required = true)
    @NotBlank
    private String businessLicenseCopy;

    @ApiModelProperty(value = "营业执照注册号(15位/18位数字或字母)", required = true, notes = "15位/18位数字或字母")
    @NotBlank
    private String businessLicenseNumber;

    @ApiModelProperty(value = "营业执照公司名称(个体工商户若无名称则填写'个体户+经营者姓名')", required = true, notes = "个体工商户若无名称则填写'个体户+经营者姓名'")
    @NotBlank
    private String businessLicenseCompanyName;

    @ApiModelProperty(value = "营业执照注册地址", required = true)
    @NotBlank
    private String businessLicenseCompanyAddress;

    @ApiModelProperty(value = "营业执照有效期", hidden = true)
    private String businessLicenseValidTime;

    // 组织机构信息
    @ApiModelProperty(value = "组织机构代码证件照片")
    private String organizationCertCopy;

    @ApiModelProperty(value = "组织机构代码")
    private String organizationCertNumber;

    @ApiModelProperty(value = "组织机构代码有效期")
    private String organizationCertValidTime;

    // 税务登记信息
    @ApiModelProperty(value = "税务登记证照片")
    private String taxRegistrationCertCopy;

    @ApiModelProperty(value = "税务登记号")
    private String taxRegistrationCertNumber;

    // 银行账户信息
    @ApiModelProperty(value = "账户类型：1(\"对私账户\"),2(\"对公账户\")", required = true)
    @NotBlank
    private String settleAcctType;

    @ApiModelProperty(value = "开户银行编码", required = true)
    @NotBlank
    private String settleAcctBankCode;

    @ApiModelProperty(value = "开户名称", required = true)
    @NotBlank
    private String settleAcctName;

    @ApiModelProperty(value = "开户银行联行号", required = true)
    @NotBlank
    private String settleAcctBankBranchCode;

    @ApiModelProperty(value = "银行账号", required = true)
    @NotBlank
    private String settleAcctBankAcctNo;

    // 法人相关信息
    @ApiModelProperty(value = "法人姓名", required = true)
    @NotBlank
    private String legalPersonIdCardName;

    @ApiModelProperty(value = "法人证件类型:1(\"中国大陆居民-身份证\"),2(\"其他国家或地区居民-护照\"),3(\"中国香港居民–来往内地通行证\"),4(\"中国澳门居民–来往内地通行证\"),5(\"中国台湾居民–来往大陆通行证\"),99(\"其他\")", required = true)
    @NotBlank
    private String legalPersonIdCardType;

    @ApiModelProperty(value = "法人证件人像面照片", required = true)
    @NotBlank
    private String legalPersonIdCardCopy;

    @ApiModelProperty(value = "法人证件国徽面照片", required = true)
    @NotBlank
    private String legalPersonIdCardNational;

    @ApiModelProperty(value = "法人证件号码", required = true)
    @NotBlank
    private String legalPersonIdCardNumber;

    @ApiModelProperty(value = "法人证件有效期", hidden = true)
    private String legalPersonIdCardValidTime;

    // 联系人相关信息
    @ApiModelProperty(value = "联系人姓名")
    private String contactIdCardName;

    @ApiModelProperty(value = "联系人证件类型:1(\"中国大陆居民-身份证\"),2(\"其他国家或地区居民-护照\"),3(\"中国香港居民–来往内地通行证\"),4(\"中国澳门居民–来往内地通行证\"),5(\"中国台湾居民–来往大陆通行证\")", required = true)
    private String contactIdCardType;

    @ApiModelProperty(value = "联系人身份证人像面照片")
    private String contactIdCardCopy;

    @ApiModelProperty(value = "联系人证件国徽面照片")
    private String contactIdCardNational;

    @ApiModelProperty(value = "联系人身份证件号码")
    private String contactIdCardNumber;

    @ApiModelProperty(value = "联系人证件有效期")
    private String contactIdCardValidTime;

    @ApiModelProperty(value = "法人手机号(仅主体类型为 2-个体工商户时必填或者联系人不填写时必填)", required = true)
    @NotBlank
    private String legalPersonMobileNumber;

    @ApiModelProperty(value = "短信验证码(仅主体类型为 2-个体工商户且绑定账户为法人个人账户时必填)", notes = "仅主体类型为 2-个体工商户且绑定账户为法人个人账户时必填")
    private String smsCode;

    @ApiModelProperty(value = "联系人手机号(当法人手机号)")
    private String contactMobileNumber;

    @ApiModelProperty(value = "联系人邮箱", required = true)
    @NotBlank
    private String contactEmail;

    @ApiModelProperty(value = "交易授权码", required = true)
    @NotBlank
    private String password;

    // 受益人相关信息
    @ApiModelProperty(value = "受益所有人姓名", hidden = true)
    private String beneficiaryIdCardName;

    @ApiModelProperty(value = "受益所有人证件类型", hidden = true)
    private String beneficiaryIdCardType;

    @ApiModelProperty(value = "受益所有人证件号码", hidden = true)
    private String beneficiaryIdCardNumber;

    @ApiModelProperty(value = "受益所有人证件有效期限", hidden = true)
    private String beneficiaryIdCardValidTime;

    @ApiModelProperty(value = "受益所有人证件影像件人像面", hidden = true)
    private String beneficiaryIdCardCopy;

    @ApiModelProperty(value = "受益所有人证件影像件国徽面", hidden = true)
    private String beneficiaryIdCardNational;

    @ApiModelProperty(value = "受益所有人地址", hidden = true)
    private String beneficiaryAddress;

    // 实际控股企业信息
    @ApiModelProperty(value = "股东类型", hidden = true)
    private String holdingCompanyType;

    @ApiModelProperty(value = "实际控制企业名称", hidden = true)
    private String holdingCompanyName;

    @ApiModelProperty(value = "实际控制企业营业执照号", hidden = true)
    private String holdingCompanyLicenseNumber;

    @ApiModelProperty(value = "实际控制企业营业期限", hidden = true)
    private String holdingCompanyLicenseValidTime;

    @ApiModelProperty(value = "实际控股人/企业证件类型", hidden = true)
    private String holdingCompanyLicenseType;

    // 企业信息
    @ApiModelProperty(value = "企业注册资本", hidden = true)
    private Integer businessInfoRegisteredCapital;

    @ApiModelProperty(value = "企业注册地电话号码", hidden = true)
    private String businessInfoRegisteredTel;

    @ApiModelProperty(value = "企业经营地址", hidden = true)
    private String businessInfoAddress;

}
