ali idcard verify
This commit is contained in:
@@ -8,7 +8,9 @@ public enum FactorVerificationSourceTypeEnum {
|
||||
|
||||
FXQ("放心签", 1),
|
||||
CL("创蓝", 2),
|
||||
SYS("系统", 3);
|
||||
SYS("系统", 3),
|
||||
ALI("阿里", 4),
|
||||
;
|
||||
|
||||
private final String desc;
|
||||
|
||||
|
||||
@@ -40,8 +40,6 @@ import lombok.extern.slf4j.Slf4j;
|
||||
@SuppressWarnings("rawtypes,unchecked")
|
||||
public abstract class AbstractVerify<T extends FactorVerificationDTO> implements IVerify<T>, ITopicMqHandler<T>{
|
||||
|
||||
private static final Integer DEFAULT_TYPE = FactorVerificationSourceTypeEnum.CL.getType();
|
||||
|
||||
static final Map<Integer, FactorVerificationSourceService> SOURCE_SERVICE_MAP = Maps.newConcurrentMap();
|
||||
|
||||
/**
|
||||
@@ -97,14 +95,9 @@ public abstract class AbstractVerify<T extends FactorVerificationDTO> implements
|
||||
protected T syncBeforeVerify(T t) {
|
||||
// 认证源根据配置文件不同调用不同SDK 1放心签、2创蓝
|
||||
String source = EnvironmentUtils.getProperty("alita.authenticationSource");
|
||||
int authenticationSource = DEFAULT_TYPE;
|
||||
int authenticationSource = FactorVerificationSourceTypeEnum.CL.getType();
|
||||
try {
|
||||
authenticationSource = Integer.parseInt(source);
|
||||
//如果不是这两种认证源,用默认的源
|
||||
if (!(FactorVerificationSourceTypeEnum.CL.getType().equals(authenticationSource)
|
||||
|| FactorVerificationSourceTypeEnum.FXQ.getType().equals(authenticationSource))) {
|
||||
authenticationSource = DEFAULT_TYPE;
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
//doNothing
|
||||
}
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
package com.newyetai.alitaforward.verification.source.ali;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.newyetai.alitaforward.verification.constants.FactorVerificationSourceTypeEnum;
|
||||
import com.newyetai.alitaforward.verification.dto.FactorVerificationDTO;
|
||||
import com.newyetai.alitaforward.verification.dto.RealNameTwoFactorVerificationDTO;
|
||||
import com.newyetai.alitaforward.verification.source.FactorVerificationSourceService;
|
||||
import com.newyetai.alitaforward.verification.source.ali.mapstruct.AliVerifyMapMapper;
|
||||
import com.newyetai.common.AlitaResult;
|
||||
import com.newyetai.common.constant.AuthStatusEnum;
|
||||
import com.newyetai.common.util.JsonUtils;
|
||||
import com.newyetai.sdk.ali.dto.IdCardReq;
|
||||
import com.newyetai.sdk.ali.dto.IdCardRes;
|
||||
import com.newyetai.sdk.ali.service.AliVerifyService;
|
||||
import com.newyetai.sdk.common.constant.SdkConstants;
|
||||
import java.util.Objects;
|
||||
import javax.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@SuppressWarnings("unchecked")
|
||||
public class ALiVerifySourceServiceImpl implements FactorVerificationSourceService {
|
||||
|
||||
@Resource(name = AliVerifyService.BEAN_ID)
|
||||
private AliVerifyService aliVerifyService;
|
||||
|
||||
@Override
|
||||
public RealNameTwoFactorVerificationDTO twoVerify(RealNameTwoFactorVerificationDTO verificationDTO) {
|
||||
IdCardReq requestDTO = AliVerifyMapMapper.INSTANCE.toDTO(verificationDTO);
|
||||
log.info("二要素认证:{}", JSONUtil.toJsonStr(requestDTO));
|
||||
AlitaResult<IdCardRes> result = aliVerifyService.verify(requestDTO);
|
||||
handlerResult(result, verificationDTO);
|
||||
return verificationDTO;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void handlerResult(AlitaResult<?> result, FactorVerificationDTO verificationDTO) {
|
||||
verificationDTO.setInvokeData(JsonUtils.toJsonString(result));
|
||||
AuthStatusEnum targetStatus = null;
|
||||
if (SdkConstants.SDK_INVOKE_NOT_REACH_CODE.equals(result.getCode())) {
|
||||
// 接口调起失败,未拿到返回结果,视为未调起
|
||||
verificationDTO.setFailReason("调用异常,未调起第三方");
|
||||
} else {
|
||||
if (Boolean.TRUE.equals(result.getSuccess())) {
|
||||
targetStatus = AuthStatusEnum.AUTH_SUCCESS;
|
||||
} else {
|
||||
targetStatus = AuthStatusEnum.AUTH_FAIL;
|
||||
verificationDTO.setFailReason(result.getMsg());
|
||||
}
|
||||
}
|
||||
if (Objects.nonNull(targetStatus)) {
|
||||
verificationDTO.setStatus(targetStatus.getType());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public FactorVerificationSourceTypeEnum getSourceType() {
|
||||
return FactorVerificationSourceTypeEnum.ALI;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.newyetai.alitaforward.verification.source.ali.mapstruct;
|
||||
|
||||
import com.newyetai.alitaforward.verification.dto.RealNameTwoFactorVerificationDTO;
|
||||
import com.newyetai.sdk.ali.dto.IdCardReq;
|
||||
import com.newyetai.sdk.chuanglan.dto.RealNameTwoBaseRequestDTO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.Mappings;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
|
||||
@Mapper
|
||||
public interface AliVerifyMapMapper {
|
||||
|
||||
AliVerifyMapMapper INSTANCE = Mappers.getMapper(AliVerifyMapMapper.class);
|
||||
|
||||
@Mappings(value = {
|
||||
@Mapping(target = "name", source = "dto.realName"),
|
||||
@Mapping(target = "idcard", source = "dto.cardNo")
|
||||
})
|
||||
IdCardReq toDTO(RealNameTwoFactorVerificationDTO dto);
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user