package com.jsowell.adapay.dto;

import lombok.*;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.constraints.Email;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotBlank;
import java.util.List;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SettleAccountDTO {

    // 运营商id
    private String merchantId;

    // 微信小程序appId
    private String wechatAppId;

    // 账户类型：1-对公；2-对私
    private String bankAcctType;

    // 银行卡号
    private String cardId;

    // 银行卡对应的户名
    private String cardName;

    // 证件号，银行账户类型为对私时，必填
    private String certId;

    // 证件类型，仅支持：00-身份证，银行账户类型为对私时，必填
    private String certType;

    // 手机号
    private String telNo;

    // 银行编码，详见附录 银行代码，银行账户类型对公时，必填
    private String bankCode;

    // 开户银行名称
    private String bankName;

    // 企业名称
    @Max(value = 50)
    private String businessName;

    // 省份编码
    @Max(value = 4)
    private String provCode;

    // 地区编码
    @Max(value = 4)
    private String areaCode;

    // 统一社会信用码
    @Max(value = 18)
    private String socialCreditCode;

    // 统一社会信用证有效期 （格式：YYYYMMDD，例如：20190909）
    private String socialCreditCodeExpires;

    // 经营范围
    private String businessScope;

    // 法人姓名
    @NotBlank(message = "法人姓名为必填项")
    private String legalPerson;

    // 法人身份证号码
    @NotBlank(message = "法人身份证号码为必填项")
    private String legalCertId;

    // 法人身份证有效期 （格式：YYYYMMDD，例如：20190909）
    @NotBlank(message = "法人身份证有效期为必填项")
    private String legalCertIdExpires;

    // 法人手机号
    @NotBlank(message = "法人手机号为必填项")
    private String legalMp;

    // 企业地址
    @NotBlank(message = "企业地址为必填项")
    private String address;

    // 邮编
    private String zipCode;

    // 企业电话
    private String telphone;

    // 企业邮箱
    @Email(message = "请填写正确的邮箱地址")
    private String email;

    /**
     * 上传附件，传入的中文文件名称为 UTF-8 字符集 URLEncode 编码后的字符串。
     * 内容须包含三证合一证件照、法人身份证正面照、法人身份证反面照、开户银行许可证照。 压缩 zip包后上传，最大限制为 9 M。
     */
    private MultipartFile attachFile;

    // 银行卡号，如果需要自动开结算账户，本字段必填
    private String cardNo;

    // 地址
    private String location;

    // 性别
    private String gender;
    // 昵称
    private String nickname;

    private String adapayMemberId;

    // 图片列表
    private List<String> imgList;

}
