package com.jianshui.common.utils;

import cn.hutool.core.util.ReUtil;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @Description 发票工具类
 * @Author 巩权林
 * @Date 2022/3/30 21:46
 **/
public class InvoiceUtils {

    /**
     * 根据税号 判断购买方类型
     *
     * @param taxno
     * @return 01 企业，02 机关事业单位，03个人，04 其他
     */
    public static String checkBuyerType(String taxno) {

        // 先判断是否是税号
        String regularExpression = "/^[A-Z0-9]{15}$|^[A-Z0-9]{17}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$/";
        if (taxno != null) {
            boolean matches = taxno.matches(regularExpression);
            if (matches) {
                return "01";
            }

            // 判断是否是身份证
            if (IdcardUtils.isIdcardNumber(taxno)) {
                return "03";
            }

            // TODO 判断是否是机关事业单位
            // 先不判断了
        }

        return "04";
    }

    /**
     * 手机号验证
     *
     * @param raw
     * @return 返回手机号
     * @author ：shijing
     * 2016年12月5日下午4:34:46
     */
    public static String getMobile(final String raw) {
        String regularExpression = "[1][3,4,5,7,8][0-9]{9}";
        ReUtil.findAll(regularExpression, raw, 0, new ArrayList<String>());
        List<String> resultFindAll = ReUtil.findAll(regularExpression, raw, 0, new ArrayList<String>());
        if (resultFindAll.size() > 0) {
            return resultFindAll.get(0);
        }
        return "";
    }

    /**
     * 有区号
     *
     * @param raw
     * @return 验证通过返回true
     * @author ：shijing
     * 2016年12月5日下午4:34:21
     */
    public static String getPhone(final String raw) {
        String regularExpression = "[0-9]{1,3}-[0-9]{5,10}";
        ReUtil.findAll(regularExpression, raw, 0, new ArrayList<String>());
        List<String> resultFindAll = ReUtil.findAll(regularExpression, raw, 0, new ArrayList<String>());
        if (resultFindAll.size() > 0) {
            return resultFindAll.get(0);
        }
        return getPhone2(raw);
    }

    public static String getPhone2(final String raw) {
        String regularExpression = "[1-9]{1}[0-9]{5,8}";
        ReUtil.findAll(regularExpression, raw, 0, new ArrayList<String>());
        List<String> resultFindAll = ReUtil.findAll(regularExpression, raw, 0, new ArrayList<String>());
        if (resultFindAll.size() > 0) {
            return resultFindAll.get(0);
        }
        return "";
    }
}
