|
@@ -28,8 +28,8 @@ import javax.validation.Validator;
|
|
|
import javax.validation.ValidatorFactory;
|
|
|
import java.io.IOException;
|
|
|
import java.net.SocketTimeoutException;
|
|
|
-import java.util.Random;
|
|
|
-import java.util.Set;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
/**
|
|
@@ -41,6 +41,7 @@ import java.util.concurrent.TimeUnit;
|
|
|
@Service
|
|
|
@Slf4j
|
|
|
public class ChannelServiceImpl implements ChannelService {
|
|
|
+
|
|
|
@Value("${supplier.getTokenUrl}")
|
|
|
private String getTokenUrl;
|
|
|
@Value("${supplier.url}")
|
|
@@ -101,10 +102,10 @@ public class ChannelServiceImpl implements ChannelService {
|
|
|
}
|
|
|
requestObject.setIdCode(requestObject.getIdCode().toUpperCase());
|
|
|
String accessToken = getAccessToken(outTime);
|
|
|
- IdentityInfoResponseObject responseObject = getIdentityInfoResponseObject(requestObject, outTime, accessToken, ret);
|
|
|
+ IdentityInfoResponseObject responseObject = getIdentityInfoResponseObject(requestObject, outTime, accessToken, ret, request);
|
|
|
if (responseObject != null && responseObject.getRetCode().equals(SjjhConstant.RESPONSE_CODE_4022)) {
|
|
|
accessToken = queryAccessToken(outTime);
|
|
|
- responseObject = getIdentityInfoResponseObject(requestObject, outTime, accessToken, ret);
|
|
|
+ responseObject = getIdentityInfoResponseObject(requestObject, outTime, accessToken, ret, request);
|
|
|
}
|
|
|
if (responseObject != null) {
|
|
|
upstreamCode = responseObject.getRetCode() + "-" + responseObject.getResStr();
|
|
@@ -186,10 +187,10 @@ public class ChannelServiceImpl implements ChannelService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private IdentityInfoResponseObject getIdentityInfoResponseObject(TwoElementsRequestObject requestObject, int outTime, String accessToken, ChannelTypeHandleResponseObject ret) {
|
|
|
+ private IdentityInfoResponseObject getIdentityInfoResponseObject(TwoElementsRequestObject requestObject, int outTime, String accessToken, ChannelTypeHandleResponseObject ret,HttpServletRequest request) {
|
|
|
TwoElementsParamObject paramObject = TwoElementsParamObject.getParamObject(accessToken, requestObject.getIdCode(), requestObject.getName(), authMode40);
|
|
|
log.info("supplier10000044.twoElementsCheck接口请求上游参数:{}", JSON.toJSONString(paramObject));
|
|
|
- String responseContext = callService(paramObject, outTime, SjjhConstant.TWO_ELEMENTS_CHECK, ret);
|
|
|
+ String responseContext = callService(paramObject, outTime, SjjhConstant.TWO_ELEMENTS_CHECK, ret,request);
|
|
|
log.info("supplier10000044.{}接口上游返回:{}", SjjhConstant.TWO_ELEMENTS_CHECK, responseContext);
|
|
|
if (StringUtils.isBlank(responseContext)) {
|
|
|
return null;
|
|
@@ -206,13 +207,13 @@ public class ChannelServiceImpl implements ChannelService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private IdentityInfoResponseObject getIdentityInfoResponseObject(PhotoIdentityRequestObject requestObject, int outTime, String accessToken, ChannelTypeHandleResponseObject ret) {
|
|
|
+ private IdentityInfoResponseObject getIdentityInfoResponseObject(PhotoIdentityRequestObject requestObject, int outTime, String accessToken, ChannelTypeHandleResponseObject ret,HttpServletRequest request) {
|
|
|
PhotoIdentityParamObject paramObject = PhotoIdentityParamObject.getParamObject(accessToken, requestObject.getIdCode(),
|
|
|
requestObject.getName(), requestObject.getPhoto(), authMode42);
|
|
|
PhotoIdentityParamObject logParamObject = PhotoIdentityParamObject.getLogParamObject(accessToken, requestObject.getIdCode(),
|
|
|
requestObject.getName(), authMode42);
|
|
|
log.info("supplier10000044.photoIdentityCheck接口请求上游参数:{}", JSON.toJSONString(logParamObject));
|
|
|
- String responseContext = callService(paramObject, outTime, SjjhConstant.PHOTO_IDENTITY_CHECK, ret);
|
|
|
+ String responseContext = callService(paramObject, outTime, SjjhConstant.PHOTO_IDENTITY_CHECK, ret, request);
|
|
|
|
|
|
// String responseContext = "{\"retCode\":0,\"retMessage\":\"成功\",\"apiVersion\":\"3.3.0\",\"certToken\":\"98cec673-a969-462a-b154-47b56b887fcb\",\"resStr\":\"02XX\"}";
|
|
|
log.info("supplier10000044.{}接口上游返回:{}", SjjhConstant.PHOTO_IDENTITY_CHECK, responseContext);
|
|
@@ -231,6 +232,72 @@ public class ChannelServiceImpl implements ChannelService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private String callService(Object paramObject, int outTime, String method, ChannelTypeHandleResponseObject ret,HttpServletRequest request) {
|
|
|
+ try {
|
|
|
+ String jsonStr = objectMapper.writeValueAsString(paramObject);
|
|
|
+
|
|
|
+ //给ChannelId和TraceID赋值
|
|
|
+ Enumeration<String> headerNames = request.getHeaderNames();
|
|
|
+ String traceId="";
|
|
|
+ String channelId="";
|
|
|
+ String reqId="";
|
|
|
+ while (headerNames.hasMoreElements()) {
|
|
|
+ String headerName = headerNames.nextElement();
|
|
|
+ if (SjjhConstant.REQUEST_HEADER_TRACE_ID.equalsIgnoreCase(headerName)) {
|
|
|
+ traceId = request.getHeader(SjjhConstant.REQUEST_HEADER_TRACE_ID);
|
|
|
+ reqId="?reqId="+traceId;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (SjjhConstant.REQUEST_HEADER_CHANNEL_ID.equalsIgnoreCase(headerName)) {
|
|
|
+ channelId = request.getHeader(SjjhConstant.REQUEST_HEADER_CHANNEL_ID);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ MediaType mediaType = MediaType.parse(org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE);
|
|
|
+ RequestBody requestBody = RequestBody.create(mediaType, jsonStr);
|
|
|
+
|
|
|
+ Request okRequest;
|
|
|
+ if (method.equals(SjjhConstant.ID_CARD_VALIDITY_CHECK)) {
|
|
|
+ log.info("supplier10000044.{}-callService的url:{}", idCardValidityUrl+reqId);
|
|
|
+ okRequest = new Request.Builder().post(requestBody).url(idCardValidityUrl+reqId)
|
|
|
+ .addHeader(SjjhConstant.REQUEST_HEADER_TRACE_ID,traceId)
|
|
|
+ .addHeader(SjjhConstant.REQUEST_HEADER_CHANNEL_ID,channelId)
|
|
|
+ .addHeader("kong-random", LocalDateTime.now().toString() + new Random().nextInt(10000))
|
|
|
+ .build();
|
|
|
+ } else {
|
|
|
+ log.info("supplier10000044.{}-callService的url:{}", url+reqId);
|
|
|
+ okRequest = new Request.Builder().post(requestBody).url(url+reqId)
|
|
|
+ .addHeader(SjjhConstant.REQUEST_HEADER_TRACE_ID,traceId)
|
|
|
+ .addHeader(SjjhConstant.REQUEST_HEADER_CHANNEL_ID,channelId)
|
|
|
+ .addHeader("kong-random", LocalDateTime.now().toString() + new Random().nextInt(10000))
|
|
|
+ .build();
|
|
|
+ }
|
|
|
+
|
|
|
+ OkHttpClient client = okHttpClient.newBuilder()
|
|
|
+ .connectTimeout(outTime, TimeUnit.MILLISECONDS)
|
|
|
+ .readTimeout(outTime, TimeUnit.MILLISECONDS)
|
|
|
+ .writeTimeout(outTime, TimeUnit.MILLISECONDS)
|
|
|
+ .retryOnConnectionFailure(false)
|
|
|
+ .build();
|
|
|
+ Response response = client.newCall(okRequest).execute();
|
|
|
+ String responseContext = "";
|
|
|
+ if (response.body() != null) {
|
|
|
+ responseContext = response.body().string();
|
|
|
+ }
|
|
|
+ response.close();
|
|
|
+ return responseContext;
|
|
|
+ } catch (SocketTimeoutException ste) {
|
|
|
+ log.info("supplier10000044.{}接口-SocketTimeoutException:{}", method, ste);
|
|
|
+ ErrorUtils.captureException(ste);
|
|
|
+ ret.setCode(Constant.REQUEST_TIMEOUT);
|
|
|
+ return "";
|
|
|
+ } catch (Exception ioe) {
|
|
|
+ log.info("supplier10000044.{}接口-Exception:{}", method, ioe);
|
|
|
+ ErrorUtils.captureException(ioe);
|
|
|
+ ret.setCode(Constant.FAIL);
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private String callService(Object paramObject, int outTime, String method, ChannelTypeHandleResponseObject ret) {
|
|
|
try {
|
|
|
String jsonStr = objectMapper.writeValueAsString(paramObject);
|
|
@@ -302,10 +369,10 @@ public class ChannelServiceImpl implements ChannelService {
|
|
|
}
|
|
|
requestObject.setIdCode(requestObject.getIdCode().toUpperCase());
|
|
|
String accessToken = getAccessToken(outTime);
|
|
|
- IdentityInfoResponseObject responseObject = getIdentityInfoResponseObject(requestObject, outTime, accessToken, ret);
|
|
|
+ IdentityInfoResponseObject responseObject = getIdentityInfoResponseObject(requestObject, outTime, accessToken, ret, request);
|
|
|
if (responseObject != null && responseObject.getRetCode().equals(SjjhConstant.RESPONSE_CODE_4022)) {
|
|
|
accessToken = queryAccessToken(outTime);
|
|
|
- responseObject = getIdentityInfoResponseObject(requestObject, outTime, accessToken, ret);
|
|
|
+ responseObject = getIdentityInfoResponseObject(requestObject, outTime, accessToken, ret, request);
|
|
|
}
|
|
|
|
|
|
if (responseObject != null) {
|
|
@@ -576,10 +643,10 @@ public class ChannelServiceImpl implements ChannelService {
|
|
|
}
|
|
|
requestObject.setIdCode(requestObject.getIdCode().toUpperCase());
|
|
|
String accessToken = getAccessToken(outTime);
|
|
|
- IdentityInfoResponseObject responseObject = getIdentityInfoResponseObject(requestObject, outTime, accessToken, ret);
|
|
|
+ IdentityInfoResponseObject responseObject = getIdentityInfoResponseObject(requestObject, outTime, accessToken, ret, request);
|
|
|
if (responseObject != null && responseObject.getRetCode().equals(SjjhConstant.RESPONSE_CODE_4022)) {
|
|
|
accessToken = queryAccessToken(outTime);
|
|
|
- responseObject = getIdentityInfoResponseObject(requestObject, outTime, accessToken, ret);
|
|
|
+ responseObject = getIdentityInfoResponseObject(requestObject, outTime, accessToken, ret, request);
|
|
|
}
|
|
|
|
|
|
if (responseObject != null) {
|
|
@@ -695,12 +762,13 @@ public class ChannelServiceImpl implements ChannelService {
|
|
|
request.setAttribute(Constant.LOG_UPSTREAM_RESPONSE_CODE, upstreamCode);
|
|
|
return ret;
|
|
|
}
|
|
|
+
|
|
|
requestObject.setIdCode(requestObject.getIdCode().toUpperCase());
|
|
|
String accessToken = getAccessToken(outTime);
|
|
|
- IdentityInfoResponseObject responseObject = getIdentityInfoResponseObject(requestObject, outTime, accessToken, ret);
|
|
|
+ IdentityInfoResponseObject responseObject = getIdentityInfoResponseObject(requestObject, outTime, accessToken, ret, request);
|
|
|
if (responseObject != null && responseObject.getRetCode().equals(SjjhConstant.RESPONSE_CODE_4022)) {
|
|
|
accessToken = queryAccessToken(outTime);
|
|
|
- responseObject = getIdentityInfoResponseObject(requestObject, outTime, accessToken, ret);
|
|
|
+ responseObject = getIdentityInfoResponseObject(requestObject, outTime, accessToken, ret, request);
|
|
|
}
|
|
|
|
|
|
if (responseObject != null) {
|
|
@@ -892,13 +960,13 @@ public class ChannelServiceImpl implements ChannelService {
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isBlank(requestParamObject.getString("idCode"))
|
|
|
- || StringUtils.isBlank(requestParamObject.getString("name"))
|
|
|
- || (decodeType.equals(SjjhConstant.DECODE_TYPE_MD5)
|
|
|
+ || StringUtils.isBlank(requestParamObject.getString("name"))
|
|
|
+ || (decodeType.equals(SjjhConstant.DECODE_TYPE_MD5)
|
|
|
&& (requestParamObject.getString("idCode").length() != 32
|
|
|
- || requestParamObject.getString("name").length() != 32))
|
|
|
- || (decodeType.equals(SjjhConstant.DECODE_TYPE_SHA256)
|
|
|
+ || requestParamObject.getString("name").length() != 32))
|
|
|
+ || (decodeType.equals(SjjhConstant.DECODE_TYPE_SHA256)
|
|
|
&& (requestParamObject.getString("idCode").length() != 64
|
|
|
- || requestParamObject.getString("name").length() != 64))) {
|
|
|
+ || requestParamObject.getString("name").length() != 64))) {
|
|
|
|
|
|
if (Constant.CUSTOMER_RETURN_ZW.equals(returnType)) {
|
|
|
ret.setResultCode(Constant.INVALID_PARAMETER_CODE);
|
|
@@ -1093,7 +1161,7 @@ public class ChannelServiceImpl implements ChannelService {
|
|
|
}
|
|
|
|
|
|
private String setIdCardValidityResponseObject(ChannelTypeHandleResponseObject ret, String returnType,
|
|
|
- IdCardValidityResponseObject responseObject) {
|
|
|
+ IdCardValidityResponseObject responseObject) {
|
|
|
String retCode = responseObject.getRetCode();
|
|
|
String resStr = "";
|
|
|
String upstreamCode = retCode;
|
|
@@ -1184,4 +1252,5 @@ public class ChannelServiceImpl implements ChannelService {
|
|
|
private int getRandomScore(int min, int max) {
|
|
|
return new Random().nextInt(max)%(max-min+1) + min;
|
|
|
}
|
|
|
+
|
|
|
}
|