package com.cusc.nirvana.user.rnr.fp.dto;

import com.alibaba.fastjson.JSON;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.CollectionUtils;

import java.util.List;

/**
 * @author stayAnd
 * @date 2022/4/18
 */
@Data
@Slf4j
public class RnrResponseDTO {

	/**
	 * 实名状态
	 */
	private Boolean rnrResult;

	/**
	 * 活体认证结果
	 */
	private Boolean livenessResult;

	/**
	 * 活体失败原因
	 */
	private String livenessFailMsg;

	/**
	 * 活体人证 返回的图片1
	 */
	private String livenessPic1;

	/**
	 * 活体人证 返回的图片2
	 */
	private String livenessPic2;

	/**
	 * 所有人 ocr认证的 结果
	 */
	private Boolean allOcrResult;

	/**
	 * 人证比对结果
	 */
	private Boolean idCompareResult;

	/**
	 * 认证对比失败原因
	 */
	private String idCompareFailMsg;

	/**
	 * 人脸对比结果
	 */
	private Boolean faceCompareResult;

	/**
	 * 人脸对比失败原因
	 */
	private String faceCompareFailMsg;

	/**
	 * 活体视频对应的人 ocr的结果
	 */
	private OcrResultInfo videoPerosonOcResult;

	/**
	 * 其他人 ocr的结果
	 */
	private List<OcrResultInfo> personListOcrResult;



	/**
	 * ocr 认证的结果
	 */
	@Data
	public static class OcrResultInfo{

		/**
		 * 人的原名
		 */
		private String orgianFullName;

		/**
		 * ocr人证结果
		 */
		private Boolean ocrResult;


		/**
		 * ocr失败原因
		 */
		private List<String> ocrFailMsg;

		/**
		 * 身份核查信息
		 */
		private Boolean certCheckResult;


		/**
		 * ocr人证识别返回的 姓名
		 */
		private String ocrFullName;

		/**
		 * ocr人证识别返回的 身份证证件号
		 */
		private String ocrCertNumber;

		/**
		 * ocr人证识别返回的 性别（男/女）
		 */
		private String ocrGender;

		/**
		 * ocr人证识别返回的 住址
		 */
		private String ocrAddress;

		/**
		 * ocr人证识别返回的 生日，格式为YYYY-MM-DD
		 */
		private String ocrBirthday;

		/**
		 * ocr人证识别返回的 民族（汉字）
		 */
		private String ocrRace;

		/**
		 * ocr人证识别返回的 签发机关
		 */
		private String ocrIssued;

		/**
		 * ocr人证识别返回的 有效日期
		 */
		private String ocrValidDate;
	}


	/**
	 * 获取车主的ocr扫面的身份证有效期开始时间
	 * @return
	 */
	public  String getCarOwnerEffectiveOcrTime(){
		String effctive = "";
		try {
			if (!CollectionUtils.isEmpty(this.getPersonListOcrResult())) {
				effctive = this.getPersonListOcrResult().get(0).getOcrValidDate();
			} else if(null != this.getVideoPerosonOcResult()){
				effctive = this.getVideoPerosonOcResult().getOcrValidDate();
			}else {
				return effctive;
			}
			return effctive.split("-")[0];
		} catch (Exception e) {
			log.error("getCarOwnerEffectiveOcrTime has error getPersonListOcrResult{}, getVideoPerosonOcResult{}",JSON.toJSONString(this.getPersonListOcrResult()),JSON.toJSONString(this.getVideoPerosonOcResult()),e);
		}
		return effctive;
	}

}
