package com.jeequan.jeepay.core.model.applyment;

import com.alibaba.fastjson.JSONArray;
import com.jeequan.jeepay.core.entity.MchApplyment;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Data
public class ZftpayApplymentInfo extends ApplymentBasicInfo{

    /** 类型转换：标准格式 ---》 接口自定义格式 **/
    public String convertMerchantType(){
//        商户类型 01-企业 02-事业单位 03-民办非企业组织 04-社会团体 05-党政及国家机关 06-个人商户 07-个体工商户
        if(this.merchantType == null){
            return null;
        }

        if(this.merchantType == MchApplyment.MERCHANT_TYPE_PERSONAL){
            return "06";
        }else if(this.merchantType == MchApplyment.MERCHANT_TYPE_INDIVIDUAL){
            return "07";
        }else if(this.merchantType == MchApplyment.MERCHANT_TYPE_ENTERPRISE){
            return "01";
        }
        return null;
    }

    public static final byte APPLY_TYPE_OLD = 1;    // 旧接口
    public static final byte APPLY_TYPE_NEW = 2;    // 新接口

    /** 进件类型 1-普通进件（旧接口） 2-免证件进件（新接口）**/
    public Byte applyType;

    /** 【结算银行卡信息】-开户行所在省 **/
    public String accountInstProvince;

    /** 【结算银行卡信息】-开户行所在市 **/
    public String accountInstCity;

    /** 【结算银行卡信息】-开户行支行名称 **/
    public String accountBranchName;

    /** 【结算银行卡信息】-卡类型：DC-借记卡 CC-信用卡 **/
    public String usageType;

    /** 【结算银行卡信息】-开户行简称缩写 **/
    public String accountInstId;

    /** 结算支付宝账号 **/
    public String alipayLogonId;

    /** 默认结算类型：bankCard-结算到银行卡 alipayAccount-结算到支付宝账号 **/
    public String defaultSettleType;

    /** 【商户行业资质】-资质类型 **/
    public String industryQualificationType;

    /** 【商户行业资质】-资质图片 **/
    public String industryQualificationImage;

    /** 服务类型：当面付、app支付、wap支付、电脑支付、线上资金预授权、新当面资金预授权、商户代扣、小程序支付 **/
    public JSONArray zftService;

    /** 【站点信息】 **/
    public JSONArray siteInfos;

    /** 商户支付宝账号 **/
    public String bindingAlipayLogonId;

    /** 授权函照片 **/
    public String getLicenseAuthLetterImage() {
        return letterOfAuthPic;
    }

    /** 补充资料 【证件类型】 **/
    public String additionalCertType;

    /** 补充资料 【证件号】 **/
    public String additionalCertNo;

    /** 补充资料 【证件图片】 **/
    public String additionalCertImage;

    public static final Map<String, String> MERCHANT_TYPE_MAP = new HashMap<>();
    static {
        MERCHANT_TYPE_MAP.put("01", "201"); // 企业
        MERCHANT_TYPE_MAP.put("02", "218"); // 事业单位
        MERCHANT_TYPE_MAP.put("03", "204"); // 民办非企业组织
        MERCHANT_TYPE_MAP.put("04", "206"); // 社会团体
        MERCHANT_TYPE_MAP.put("05", "219"); // 党政及国家机关
        MERCHANT_TYPE_MAP.put("06", "100"); // 个人商户
        MERCHANT_TYPE_MAP.put("07", "201"); // 个体工商户
    }

    /**
     * @author: xiaoyu
     * @date: 2022/4/12 9:29
     * @describe: 商户签约服务
     */
    public List<String> getServiceList() {
        List<String> list = new ArrayList<>();
        if (this.zftService != null) {
            for (int i = 0; i < this.zftService.size(); i++) {
                list.add(this.zftService.get(i).toString());
            }
        }
        return list;
    }

    /**
     * @author: xiaoyu
     * @date: 2022/4/12 11:44
     * @describe: 行业编码
     */
    public String getMccCodeNum() {
        if (StringUtils.isNotEmpty(this.mccCode)) {
            String[] code = this.mccCode.split("_");

            if (code.length > 1) {
                return code[1];
            }
        }
        return null;
    }

    /**
     * @author: xiaoyu
     * @date: 2022/4/12 14:38
     * @describe: 账号使用类型转换
     */
    public String getUseType() {
        if (MchApplyment.SETT_ACCOUNT_TYPE_CORPORATE.equals(this.getSettAccountType())) {
            return "01";
        }else if (MchApplyment.SETT_ACCOUNT_TYPE_PERSONAL.equals(this.getSettAccountType())) {
            return "02";
        }
        return null;
    }

    @Override
    public String bankBranchNo() {
        return null;
    }
}
