package com.jeequan.jeepay.thirdparty.util;

import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.jeequan.jeepay.core.model.OCRImgParams;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.util.Date;

/**
 * OCR工具类
 *
 * @author xiaoyu
 * @date 2022/1/12 14:52
 */
@Slf4j
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class OCRUtil {

    /**
     * @author: xiaoyu
     * @date: 2022/1/13 14:32
     * @describe: 身份证有效期格式转化为通用格式
     */
    public static void setIdCardDate(String validPeriod, OCRImgParams ocrImgParams) {
        try {
            String[] strings = validPeriod.split("-");
            String startTime = strings[0];
            String endTime = strings[1];
            if (!"长期".equals(endTime)) {
                endTime = formatDate(endTime);
            }
            // 身份证有效期
            ocrImgParams.setIdcardEffectBegin(formatDate(startTime));
            ocrImgParams.setIdcardEffectEnd(endTime);
        } catch (Exception e) {
            log.error("身份证有效期格式化异常");
        }
    }

    /**
     * @author: xiaoyu
     * @date: 2022/1/13 14:32
     * @describe: 营业执照有效期格式转化为通用格式
     */
    public static void setLicenseDate(String validPeriod, OCRImgParams ocrImgParams) {
        try {
            String[] strings = validPeriod.split("至");
            String startTime = strings[0];
            String endTime = strings[1];
            if (!"长期".equals(endTime)) {
                endTime = formatDate(endTime);
            }
            // 身份证有效期
            ocrImgParams.setLicenseEffectBegin(formatDate(startTime));
            ocrImgParams.setLicenseEffectEnd(endTime);

        } catch (Exception e) {
            log.error("营业执照有效期格式化异常");
        }
    }

    /**
     * @author: xiaoyu
     * @date: 2022/1/13 14:32
     * @describe: 营业执照有效期格式转化为通用格式
     */
    public static void setLicenseDateAli(JSONObject dateJson, OCRImgParams ocrImgParams) {
        try {
            String startTime = dateJson.getString("validFromDate");
            String endTime = dateJson.getString("validToDate");
            if (StringUtils.isEmpty(endTime) || "29991231".equals(endTime)) {
                endTime = "长期";
            } else {
                endTime = formatDate(endTime);
            }
            // 身份证有效期
            ocrImgParams.setLicenseEffectBegin(formatDate(startTime));
            ocrImgParams.setLicenseEffectEnd(endTime);

        } catch (Exception e) {
            log.error("营业执照有效期格式化异常");
        }
    }

    /**
     * @author: xiaoyu
     * @date: 2022/1/13 15:02
     * @describe: 日期格式化 yyyy-MM-dd
     */
    public static String formatDate(String dateTime) {
        Date date = DateUtil.parse(dateTime);
        return DateUtil.format(date, "yyyy-MM-dd");
    }

}
