package com.qunzhixinxi.hnqz.admin.service.gig;

import com.qunzhixinxi.hnqz.admin.entity.SysUserSub;
import com.qunzhixinxi.hnqz.admin.entity.dto.UserSignCertDTO;
import com.qunzhixinxi.hnqz.admin.entity.vo.SysUserSubVO;
import com.qunzhixinxi.hnqz.admin.enums.GigTypeEnum;
import com.qunzhixinxi.hnqz.admin.enums.SubjectLocation;
import com.qunzhixinxi.hnqz.common.core.util.R;

import java.util.List;
import java.util.Map;

/**
 * 用户签约认证服务
 *
 * @author lixuesong
 * @date 2022年03月03日 14:38
 */
public interface SysUserSignCertService {

	/**
	 * 查询用户签约认证信息
	 *
	 * @param userId
	 * @return
	 */
	List<SysUserSub> listUserSignCert(Integer userId);

	/**
	 * 查询用户签约认证信息
	 *
	 * @param userId
	 * @param gigTypeList
	 * @return
	 */
	List<SysUserSub> listUserSignCert(Integer userId, List<GigTypeEnum> gigTypeList);

	/**
	 * 查询用户签约认证信息
	 *
	 * @param userId
	 * @param deptId
	 * @return
	 */
	List<SysUserSubVO> listUserSignCertForApi(Integer userId, Integer deptId);

	/**
	 * 查询用户认证状态
	 *
	 * @param idCard
	 * @param enterprisCode
	 * @param subjectChannel
	 * @return
	 */
	Map<String, Object> listCertInfo(String idCard, String enterprisCode, List<SubjectLocation> subjectChannel);

	/**
	 * 保存用户基础信息
	 *
	 * @param userSignCertDTO
	 */
	void saveBaseInfo(UserSignCertDTO userSignCertDTO);

	/**
	 * 签协议
	 *
	 * @param userSignCertDTO
	 */
	void signAgreement(UserSignCertDTO userSignCertDTO);

	/**
	 * 人身验证
	 *
	 * @param userSignCertDTO
	 */
	void personalIdentityVerification(UserSignCertDTO userSignCertDTO);

	/**
	 * 批量发起用户签约认证
	 *
	 * @param userSignCertDTO
	 * @return
	 */
	boolean batchChannelCert(UserSignCertDTO userSignCertDTO);


	/**
	 * 税邦云发送绑卡验证码
	 *
	 * @param userSignCertDTO
	 * @return
	 */
    R<?> bindCardVerification(UserSignCertDTO userSignCertDTO);

	/**
	 * 绑卡确认
	 *
	 * @param userSignCertDTO
	 * @return
	 */
	R<Object> bindCardConfirm(UserSignCertDTO userSignCertDTO);

	/**
	 * 签约/增员
	 *
	 * @param userSignCertDTO
	 * @return
	 */
	R<?> toSign(UserSignCertDTO userSignCertDTO);
}
