ali idcard verify
This commit is contained in:
45
src/main/java/com/newyetai/sdk/ali/config/AliProperties.java
Normal file
45
src/main/java/com/newyetai/sdk/ali/config/AliProperties.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package com.newyetai.sdk.ali.config;
|
||||
|
||||
import com.newyetai.sdk.chuanglan.config.ChuangLanCommonProperties;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Builder.Default;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
||||
@ConfigurationProperties(prefix = AliProperties.PREFIX)
|
||||
@Data
|
||||
@Component
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public class AliProperties {
|
||||
|
||||
/** 配置前缀 */
|
||||
public static final String PREFIX = "ali";
|
||||
public static final String IDCARD_PREFIX = PREFIX + ".idcard";
|
||||
|
||||
/** 二要素配置 */
|
||||
private IdcardProperties idcard;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public static class IdcardProperties {
|
||||
|
||||
/** 是否启用 **/
|
||||
@Default
|
||||
private Boolean enable = Boolean.FALSE;
|
||||
/** 次数限制 **/
|
||||
private Long numLimit;
|
||||
private String url;
|
||||
/** */
|
||||
private String appcode;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
27
src/main/java/com/newyetai/sdk/ali/dto/IdCardReq.java
Normal file
27
src/main/java/com/newyetai/sdk/ali/dto/IdCardReq.java
Normal file
@@ -0,0 +1,27 @@
|
||||
package com.newyetai.sdk.ali.dto;
|
||||
|
||||
import com.newyetai.sdk.common.dto.ISdkRequest;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.core.ParameterizedTypeReference;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public class IdCardReq implements ISdkRequest<VerifyRes<IdCardRes>> {
|
||||
|
||||
private static ParameterizedTypeReference<VerifyRes<IdCardRes>> type = new ParameterizedTypeReference<VerifyRes<IdCardRes>>() {
|
||||
};
|
||||
|
||||
private String name;
|
||||
private String idcard;
|
||||
|
||||
@Override
|
||||
public ParameterizedTypeReference<VerifyRes<IdCardRes>> getResponseType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
}
|
||||
27
src/main/java/com/newyetai/sdk/ali/dto/IdCardRes.java
Normal file
27
src/main/java/com/newyetai/sdk/ali/dto/IdCardRes.java
Normal file
@@ -0,0 +1,27 @@
|
||||
package com.newyetai.sdk.ali.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public class IdCardRes implements Serializable {
|
||||
|
||||
/** code为200 data才会有值,400参数格式错误 */
|
||||
public static final Integer SUC_CODE = 200;
|
||||
/** 1.不一致 0.一致 */
|
||||
public static final Integer SUC_RESULT = 0;
|
||||
|
||||
private String birthday;
|
||||
private Integer result;
|
||||
private String address;
|
||||
private String orderNo;
|
||||
private String sex;
|
||||
private String desc;
|
||||
|
||||
}
|
||||
17
src/main/java/com/newyetai/sdk/ali/dto/VerifyRes.java
Normal file
17
src/main/java/com/newyetai/sdk/ali/dto/VerifyRes.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package com.newyetai.sdk.ali.dto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class VerifyRes<T> {
|
||||
|
||||
private String msg;
|
||||
private String success;
|
||||
private Integer code;
|
||||
private T data;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.newyetai.sdk.ali.service;
|
||||
|
||||
import com.newyetai.common.AlitaResult;
|
||||
import com.newyetai.sdk.ali.dto.IdCardReq;
|
||||
import com.newyetai.sdk.ali.dto.IdCardRes;
|
||||
|
||||
public interface AliVerifyService {
|
||||
|
||||
String BEAN_ID = "sdk.aliVerifyService";
|
||||
String MOCK_BEAN_ID = "mock.aliVerifyService";
|
||||
|
||||
AlitaResult<IdCardRes> verify(IdCardReq req);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
package com.newyetai.sdk.ali.service.impl;
|
||||
|
||||
import com.newyetai.common.AlitaResult;
|
||||
import com.newyetai.common.annotation.CheckAndMock;
|
||||
import com.newyetai.common.util.JsonUtils;
|
||||
import com.newyetai.common.util.StrUtils;
|
||||
import com.newyetai.sdk.ali.config.AliProperties;
|
||||
import com.newyetai.sdk.ali.config.AliProperties.IdcardProperties;
|
||||
import com.newyetai.sdk.ali.dto.IdCardReq;
|
||||
import com.newyetai.sdk.ali.dto.IdCardRes;
|
||||
import com.newyetai.sdk.ali.dto.VerifyRes;
|
||||
import com.newyetai.sdk.ali.service.AliVerifyService;
|
||||
import com.newyetai.sdk.common.constant.SdkConstants;
|
||||
import com.newyetai.sdk.common.dto.DefaultSdkInvokeLogDTO;
|
||||
import com.newyetai.sdk.common.util.HttpUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpEntity;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
@Slf4j
|
||||
@Service(AliVerifyService.BEAN_ID)
|
||||
public class AliVerifyServiceImpl implements AliVerifyService {
|
||||
|
||||
private static RestTemplate restTemplate = HttpUtils.restTemplate;
|
||||
@Autowired
|
||||
private AliProperties aliProperties;
|
||||
|
||||
@Override
|
||||
@CheckAndMock(mockClass = MockAliVerifyServiceImpl.class,
|
||||
propertyPrefix = AliProperties.IDCARD_PREFIX)
|
||||
public AlitaResult<IdCardRes> verify(IdCardReq req){
|
||||
return this.verify(req, aliProperties.getIdcard());
|
||||
}
|
||||
|
||||
public static AlitaResult<IdCardRes> verify(IdCardReq req, IdcardProperties idcardProperties){
|
||||
VerifyRes<IdCardRes> res = null;
|
||||
|
||||
try {
|
||||
try {
|
||||
// 构建请求头
|
||||
HttpHeaders header = new HttpHeaders();
|
||||
header.add("Authorization", "APPCODE " + idcardProperties.getAppcode());
|
||||
header.add("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
|
||||
// 发送请求
|
||||
HttpEntity<?> requestEntity = new HttpEntity(StrUtils.buildQueryValue(req), header);
|
||||
|
||||
ResponseEntity<VerifyRes<IdCardRes>> result = restTemplate.exchange(idcardProperties.getUrl(),
|
||||
HttpMethod.POST, requestEntity, req.getResponseType());
|
||||
res = result.getBody();
|
||||
} catch (Exception e) {
|
||||
log.info("invoke error :{}", e);
|
||||
return AlitaResult.error(SdkConstants.SDK_HTTP_INVOKE_ERROR_CODE, e.getMessage());
|
||||
}
|
||||
try {
|
||||
if (IdCardRes.SUC_CODE.equals(res.getCode()) && IdCardRes.SUC_RESULT.equals(res.getData().getResult())) {
|
||||
return AlitaResult.success(res.getData());
|
||||
}
|
||||
return AlitaResult.error(SdkConstants.SDK_HTTP_INVOKE_RESPONSE_FAIL_CODE,
|
||||
res.getCode() + res.getData().getDesc());
|
||||
} catch (Exception e) {
|
||||
return AlitaResult.error(SdkConstants.SDK_RESPONSE_CONVERT_ERROR_CODE,
|
||||
e.getMessage());
|
||||
}
|
||||
} finally {
|
||||
log.info("invoke:{}",
|
||||
JsonUtils
|
||||
.toJsonString(
|
||||
DefaultSdkInvokeLogDTO.builder().requestData(req).responseData(res)
|
||||
.build()));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.newyetai.sdk.ali.service.impl;
|
||||
|
||||
import com.newyetai.common.AlitaResult;
|
||||
import com.newyetai.sdk.ali.dto.IdCardReq;
|
||||
import com.newyetai.sdk.ali.dto.IdCardRes;
|
||||
import com.newyetai.sdk.ali.service.AliVerifyService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Slf4j
|
||||
@Service(AliVerifyService.MOCK_BEAN_ID)
|
||||
public class MockAliVerifyServiceImpl implements AliVerifyService {
|
||||
|
||||
@Override
|
||||
public AlitaResult<IdCardRes> verify(IdCardReq req) {
|
||||
log.info("ali idcard mock...");
|
||||
return AlitaResult.success(IdCardRes.builder().result(IdCardRes.SUC_RESULT).build());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user