package com.jeequan.jeepay.core.entity;

import com.jeequan.jeepay.core.constants.CS;
import com.jeequan.jeepay.core.exception.openapi.ParamException;
import lombok.Getter;
import lombok.Setter;
import org.springframework.util.Assert;

/**
 * TODO
 * 分账结算信息
 * @author crystal
 * @date 2024/5/15 13:58
 */
@Setter
@Getter
public class DivisionSettleInfo {

    private String settleType;

    /**
     * 身份证人像面
     */
    private String idCardFrontUrl;

    /**
     * 身份证国徽面
     */
    private String idCardBackUrl;


    /**
     * 身份证名称
     */
    private String idCardName;


    /**
     * 身份证号码
     */
    private String idCardNo;


    /**
     * 身份证有效开始日期
     */
    private String idCardStartDate;


    /**
     * 身份证有效结束日期
     */
    private String idCardEndDate;


    /**
     * 是否长期 1：是 0：否
     */
    private Byte isLongTerm;

    /**
     * 结算卡卡号面
     */
    private String bankCardFrontUrl;

    /**
     * 银行卡背面
     */
    private String bankCardBackUrl;

    /**
     * 结算卡号
     */
    private String bankCardNo;

    /**
     * 开户地区 省-市-区
     */
    private String bankAreaName;

    /**
     * 开户地区CODE 省CODE-市CODE-区CODE
     */
    private String bankAreaCode;

    /**
     * 开户银行
     */
    private String bankName;

    /**
     * 开户支行联行号
     */
    private String bankBranchNo;

    /**
     * 开户支行名称
     */
    private String bankBranchName;

    /**
     * 银行卡预留手机号
     */
    private String phone;

    /**
     * 校验参数
     */
    public void preCheck(String settleType) {
        Assert.notNull(this.getIdCardName(),"姓名不能空");
        Assert.notNull(this.getIdCardFrontUrl(),"身份证头像面不能为空");
        Assert.notNull(this.getIdCardBackUrl(),"身份证国徽面不能为空");
        Assert.notNull(this.getIdCardNo(),"身份证号不能为空");
        Assert.notNull(this.getIdCardStartDate(),"身份证有效期开始时间不能为空");
        if(this.getIsLongTerm() == null || CS.NO == this.getIsLongTerm()){
            Assert.notNull(this.getIdCardEndDate(),"身份证有效期截至时间不能为空");
        }else{
            this.setIdCardEndDate("长期");
        }
        if("BANK".equals(settleType)){
            Assert.notNull(this.getBankCardNo(),"银行卡卡号不能为空");
            Assert.notNull(this.getBankCardFrontUrl(),"银行卡卡号面不能为空");
            Assert.notNull(this.getBankCardBackUrl(),"银行卡背面不能为空");
            Assert.notNull(this.getBankAreaName(),"开户地区名称不能为空");
            Assert.notNull(this.getBankAreaCode(),"开户地区编码不能为空");
            Assert.notNull(this.getBankName(),"开户行名称不能为空");
            Assert.notNull(this.getBankBranchNo(),"开户支行联行号不能为空");
            Assert.notNull(this.getBankBranchName(),"开户支行名称不能为空");
        }else if("ZFB".equals(settleType)){
            Assert.notNull(this.getBankCardNo(),"支付宝登录账号不能为空");
        }else{
            throw new ParamException("暂不支持当前方式");

        }
    }
}
