Browse Source

提交保存

15810770710@163.com 3 years ago
parent
commit
e8c22a203f

+ 11 - 13
pom.xml

@@ -10,13 +10,14 @@
     </parent>
     <groupId>info.aspirecn.iov.sjjh</groupId>
     <artifactId>iov-sjjh-servicenode-supplier-10000044</artifactId>
-    <version>1.0.4</version>
+    <version>1.1.7</version>
     <name>iov-sjjh-servicenode-supplier-10000044</name>
     <description>Demo project for Spring Boot</description>
 
     <properties>
         <java.version>1.8</java.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <log4j2.version>2.17.1</log4j2.version>
     </properties>
 
     <dependencies>
@@ -81,7 +82,7 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-redis</artifactId>
         </dependency>
-                 <dependency>
+        <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
             <version>1.2.70</version>
@@ -104,34 +105,33 @@
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
-                <!-- <configuration>
+                <configuration>
                     <includes>
-
                         <include>
                             <groupId>info.aspirecn.iov.sjjh</groupId>
                             <artifactId>iov-sjjh-commons-lang</artifactId>
                         </include>
                     </includes>
-                </configuration>-->
+                </configuration>
             </plugin>
 
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jar-plugin</artifactId>
-                <!-- <configuration>
+                <configuration>
                     <archive>
                         <manifest>
                             <addClasspath>true</addClasspath>
                             <classpathPrefix>lib/</classpathPrefix>
                         </manifest>
                     </archive>
-                </configuration>-->
+                </configuration>
             </plugin>
 
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-dependency-plugin</artifactId>
-                <!-- <executions>
+                <executions>
                     <execution>
                         <id>copy-dependencies</id>
                         <phase>prepare-package</phase>
@@ -160,10 +160,8 @@
                             </excludeGroupIds>
                         </configuration>
                     </execution>
-                </executions>-->
+                </executions>
             </plugin>
-
-
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-resources-plugin</artifactId>
@@ -182,7 +180,8 @@
                             </delimiters>
                             <resources>
                                 <resource>
-                                    <directory>src/main/resources</directory>
+                                    <directory>src/main/resources/config</directory>
+                                    <targetPath>config</targetPath>
                                     <filtering>true</filtering>
                                     <includes>
                                         <include>**</include>
@@ -195,7 +194,6 @@
                 </executions>
             </plugin>
 
-
         </plugins>
     </build>
 

+ 2 - 1
src/main/java/info/aspirecn/iov/sjjh/supplier10000044/constant/SjjhConstant.java

@@ -10,6 +10,8 @@ public class SjjhConstant {
     public static final String RET_CODE_0 = "0";
 
     public static final int PARA_ZERO = 0;
+    public static final String REQUEST_HEADER_TRACE_ID = "x-b3-traceid";
+    public static final String REQUEST_HEADER_CHANNEL_ID ="channelId" ;
 
     public static String Charge_Log_Key = "isCharge";
 
@@ -75,5 +77,4 @@ public class SjjhConstant {
     public static final String ID_CARD_VALIDITY_5XXX_2 = "用户信息输错或整个用户信息都不在库内";
 
     public static final String DECODE_TYPE_AES = "AES";
-
 }

+ 89 - 20
src/main/java/info/aspirecn/iov/sjjh/supplier10000044/service/ChannelServiceImpl.java

@@ -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;
     }
+
 }

File diff suppressed because it is too large
+ 1 - 3
src/main/java/info/aspirecn/iov/sjjh/supplier10000044/util/AesUtil.java