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


import com.cusc.nirvana.common.result.Response;
import com.cusc.nirvana.user.rnr.fp.dto.*;
import com.cusc.nirvana.user.rnr.mg.dto.MgRnrCardInfoDTO;
import com.cusc.nirvana.user.rnr.mg.dto.MgRnrInfoDTO;
import com.cusc.nirvana.user.rnr.mg.dto.RnrOrderDTO;
import com.cusc.nirvana.user.rnr.mg.dto.RnrRelationDTO;

import java.util.List;

/**
 * @author stayAnd
 * @date 2022/4/18
 */
public interface IRnrService {


	/**
	 * 人脸对比,人证对比
	 */
	RnrResponseDTO doIdAndFaceCompare(RnrRequestDTO dto, String[] livenessPic, Integer subjectType);

	/**
	 * 获取活体数字验证码
	 * @param dto 请求参数
	 * @return
	 */
	LivenessCodeResponseDTO getLivenessCode(LivenessCodeRequestDTO dto);


	/**
	 * 个人实名
	 * @param serialNumber serialNumber
	 * @param requestId requestId
	 * @param dto dto
	 * @return 0认证通过 1-人工审核中
	 */
	Integer personRnr(String serialNumber, String requestId, RnrRelationDTO dto);

	/**
	 * 个人二手车实名
	 * @param serialNumber serialNumber
	 * @param requestId requestId
	 * @param dto dto
	 * @return 0认证通过 1-人工审核中
	 */
    Integer personSecondHandRnr(String serialNumber, String requestId, RnrRelationDTO dto);


	/**
	 * 企业责任人实名
	 * @param dto
	 * @param livenessPic
	 * @return
	 */
	RnrResponseDTO doPersonRnr(RnrRequestDTO dto,String[] livenessPic);

	/**
	 * 参数类型转换
	 * @param dto
	 * @return
	 */
	RnrRequestDTO rnrPersonRelationDto2RnrRequestDTO(RnrRelationDTO dto);

	/**
	 * 校验个人信息
	 */
	boolean checkPersonData(String serialNumber, String requestId, RnrRelationDTO dto);

	/**
	 * H5实名
	 * @param serialNumber
	 * @param dto
	 */
	void personRnrH5(String serialNumber, RnrRelationDTO dto);

	Integer personH5CallBack(PersonH5CallBackRequestDTO dto);

	/**
	 * 一证十卡
	 * @param dto
	 */
	void cardNumberCheck(RnrRelationDTO dto);

	void iccidListCheck(RnrRelationDTO dto);

	String getRnrLivenessType(String tenantNo);

	/**
	 * 本地系统将实名结果回传给智网
	 * @param dtoList  实名卡信息列表
	 * @param rnrBizzType 实名业务类型RnrBizzTypeEnum
	 * @param serialNumber  请求ID
	 * @param orgId 组织id
	 * @param resultCode 业务结果类型ResultCodeEnum
	 */
	Response notifyResult(List<MgRnrCardInfoDTO> dtoList, String rnrBizzType, String serialNumber, String orgId, String resultCode);

	/**
	 * h5接口
	 * @param dto
	 */
	Response<LiveLoginRespDTO> h5LiveLoginUrl(LiveLoginReqDTO dto);

	RnrRequestDTO h5InfoToRnrRequest(boolean isTrust,RnrOrderDTO orderDTO, String rnrId, MgRnrInfoDTO rnrInfo);

	/**
	 * 获取H5活体检测URL
	 * @param dto
	 * @return
	 */
	Response<LivenessResultDTO> h5LivenessResult(LiveLoginReqDTO dto);

	/**
	 * h5验证身份证信息
	 * @param dto
	 * @return
	 */
	Response<RnrResponseDTO> h5ValidationOCR(H5ValidationOCRReqDTO dto);

	/**
	 * 修改实名信息为无效
	 * @param bean
	 * @return
	 */
	Response updateRnrInValid(RnrOrderDTO bean);
}
