Explorar el Código

add 迁移api

GITZYY hace 7 meses
padre
commit
f3f5dbba37
Se han modificado 40 ficheros con 3238 adiciones y 111 borrados
  1. 0 40
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/constant/JoinMethodEnums.java
  2. 21 5
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/constant/ServerCodeEnums.java
  3. 4 4
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/LoanDockingApi.java
  4. 5 5
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/AnHuiHengDaoCreditService.java
  5. 5 5
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/BaiXinShunTaiCreditService.java
  6. 5 5
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/BaiYiJinFuCreditService.java
  7. 5 5
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/BeiJingChongHeCreditService.java
  8. 5 5
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/CangZhouSuYiRonogCreditService.java
  9. 5 5
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/CheYouRongCreditService.java
  10. 5 5
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/ChengDuYiHeShengCreditService.java
  11. 5 7
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/ChengHongHuiCreditService.java
  12. 5 5
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/ChongQinDongRunCreditService.java
  13. 5 5
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/ChongQingRuiShangXinCreditService.java
  14. 5 5
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/ChongQingYiYueCreditService.java
  15. 5 5
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/ChuanjinCreditService.java
  16. 110 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/DeLuoXuanAesCreditService.java
  17. 108 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/DeLuoXuanCreditService.java
  18. 115 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/DeZhouXinYiRongCreditService.java
  19. 112 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/DeZhouXinYiRongV2CreditService.java
  20. 34 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/DfrzwCreditService.java
  21. 133 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/FangxinwangiCreditService.java
  22. 121 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/FuChengCreditService.java
  23. 89 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/FuZhouBeiJiuCreditService.java
  24. 132 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/FuZhouBeiYinJinRongCreditService.java
  25. 112 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/GexinjinfuCreditService.java
  26. 101 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/GuanZhouPuHuiCreditService.java
  27. 104 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/GuangDongHaoEnCreditService.java
  28. 93 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/GuangDongHongZhanCreditService.java
  29. 130 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/GuangZhouHuaXinCreditService.java
  30. 115 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/HamiguaCreditService.java
  31. 116 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/HaohanwuyinCreditService.java
  32. 94 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/HeFeiShenDaiCreditService.java
  33. 100 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/HeZeRongXinCreditService.java
  34. 122 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/HengYangJiuZhenCreditService.java
  35. 149 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/HengaiCreditService.java
  36. 105 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/HongShengJinFuCreditService.java
  37. 117 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/HongXinPuHuiCreditService.java
  38. 107 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/HuirongCrmCreditService.java
  39. 133 0
      egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/HuixinCreditService.java
  40. 501 0
      egress-gateway-service-infrastructure/src/main/java/com/hrsk/cloud/eg/infrastructure/utils/StringDecodeUtils.java

+ 0 - 40
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/constant/JoinMethodEnums.java

@@ -1,40 +0,0 @@
-package com.hrsk.cloud.eg.app.constant;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public enum JoinMethodEnums {
-
-    OPEN_API("1", "我方通用API"),
-    BUSI_API("2", "合作方CRM"),
-    CRM_EC("3", "三方CRM(ec)"),
-    CRM_QY("4", "三方CRM(庆鱼)"),
-    CRM_JD("5", "三方CRM(锦蝶)"),
-    CRM_RXK("6", "三方CRM(融享客)"),
-    CRM_XL("7", "三方CRM(鑫鹿)"),
-    CRM_QY_V2("8", "三方CRM(庆鱼2.0)"),
-    CRM_XKD("10", "三方CRM(享客达)"),
-    HUIRONG_CRM("9", "惠融易客CRM"),
-    CRM_QY_V3("11", "三方CRM(庆鱼3.0)"),
-    CRM_JDV3("12", "三方CRM(锦蝶V3)"),
-    OPEN_API_AES("13", "我方通用AES模式");
-
-    private String code;
-    private String msg;
-
-    JoinMethodEnums(String code, String msg) {
-        this.code = code;
-        this.msg = msg;
-    }
-    static Map<String, JoinMethodEnums> map = new HashMap();
-
-    static {
-        for (JoinMethodEnums value : JoinMethodEnums.values()) {
-            map.put(value.code, value);
-        }
-    }
-
-    public static JoinMethodEnums getByCode(String code) {
-        return map.get(code);
-    }
-}

+ 21 - 5
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/constant/ServCodeEnums.java → egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/constant/ServerCodeEnums.java

@@ -9,7 +9,7 @@ import java.util.Map;
  * @author zhangyy
  * @date: 2024/9/10 14:58
  */
-public enum ServCodeEnums {
+public enum ServerCodeEnums {
         Default("dc", "对接我方贷超"),
         DefaultOne("dc_one", "对接我方贷超(只提供了1.3接口)"),
         Djd("djd", "大金贷"),
@@ -149,12 +149,28 @@ public enum ServCodeEnums {
         HengYangJiuZhen("HengYangJiuZhen","衡阳玖臻"),
         XingZheChangZhi("XingZheChangZhi","行者常至"),
         HongShengJinFu("HongShengJinFu","弘盛金服"),
-        JiangXiCheYouRong("JiangXiCheYouRong","江西车优融");
+        JiangXiCheYouRong("JiangXiCheYouRong","江西车优融"),
+
+
+        OPEN_API("1", "我方通用API"),
+        BUSI_API("2", "合作方CRM"),
+        CRM_EC("3", "三方CRM(ec)"),
+        CRM_QY("4", "三方CRM(庆鱼)"),
+        CRM_JD("5", "三方CRM(锦蝶)"),
+        CRM_RXK("6", "三方CRM(融享客)"),
+        CRM_XL("7", "三方CRM(鑫鹿)"),
+        CRM_QY_V2("8", "三方CRM(庆鱼2.0)"),
+        CRM_XKD("10", "三方CRM(享客达)"),
+        HUIRONG_CRM("9", "惠融易客CRM"),
+        CRM_QY_V3("11", "三方CRM(庆鱼3.0)"),
+        CRM_JDV3("12", "三方CRM(锦蝶V3)"),
+        OPEN_API_AES("13", "我方通用AES模式");
+        ;
 
         public String code;
         public String msg;
 
-        ServCodeEnums(String code, String msg) {
+        ServerCodeEnums(String code, String msg) {
             this.code = code;
             this.msg = msg;
         }
@@ -168,10 +184,10 @@ public enum ServCodeEnums {
         }
 
 
-        public static Map<String, ServCodeEnums> map = new HashMap<>();
+        public static Map<String, ServerCodeEnums> map = new HashMap<>();
 
         static {
-            for (ServCodeEnums e : ServCodeEnums.values()) {
+            for (ServerCodeEnums e : ServerCodeEnums.values()) {
                 map.put(e.code, e);
             }
         }

+ 4 - 4
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/DockingApi.java → egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/LoanDockingApi.java

@@ -1,6 +1,6 @@
 package com.hrsk.cloud.eg.app.threedocking;
 
-import com.hrsk.cloud.eg.app.constant.ServCodeEnums;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
 import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
 import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
 import com.hrsk.cloud.eg.vo.response.DataVo;
@@ -8,10 +8,10 @@ import com.hrsk.cloud.eg.vo.response.DataVo;
 /**
  * @author zhangyy
  * @version 1.0
- * @description: dockingApi 三方对接
+ * @description: dockingApi 三方助贷对接
  * @date 2024/9/10 14:31
  */
-public interface DockingApi {
+public interface LoanDockingApi {
 
     /**
      * @description:  撞库接口
@@ -30,6 +30,6 @@ public interface DockingApi {
      * @author zhangyy
      * @date: 2024/9/10 14:33
      */
-    ServCodeEnums getType();
+    ServerCodeEnums getType();
 
 }

+ 5 - 5
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/AnHuiHengDaoCreditService.java

@@ -1,8 +1,8 @@
 package com.hrsk.cloud.eg.app.threedocking.impl;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
-import com.hrsk.cloud.eg.app.constant.ServCodeEnums;
-import com.hrsk.cloud.eg.app.threedocking.DockingApi;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
 import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
 import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
 import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
@@ -23,7 +23,7 @@ import java.util.*;
  **/
 @Service
 @Slf4j
-public class AnHuiHengDaoCreditService implements DockingApi {
+public class AnHuiHengDaoCreditService implements LoanDockingApi {
 
     @Resource
      private RetryRestTemplate httpRestTemplate;
@@ -32,8 +32,8 @@ public class AnHuiHengDaoCreditService implements DockingApi {
     private ProductBusinessApiInfoService apiInfoService;
 
     @Override
-    public ServCodeEnums getType() {
-        return ServCodeEnums.AnHuiHengDao;
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.AnHuiHengDao;
     }
 
     @Data

+ 5 - 5
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/BaiXinShunTaiCreditService.java

@@ -1,8 +1,8 @@
 package com.hrsk.cloud.eg.app.threedocking.impl;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
-import com.hrsk.cloud.eg.app.constant.ServCodeEnums;
-import com.hrsk.cloud.eg.app.threedocking.DockingApi;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
 import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
 import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
 import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
@@ -34,7 +34,7 @@ import java.util.Date;
  **/
 @Slf4j
 @Service
-public class BaiXinShunTaiCreditService implements DockingApi {
+public class BaiXinShunTaiCreditService implements LoanDockingApi {
     public static String code = "UTF-8";
     @Resource
     private RetryRestTemplate httpRestTemplate;
@@ -129,8 +129,8 @@ public class BaiXinShunTaiCreditService implements DockingApi {
     }
 
     @Override
-    public ServCodeEnums getType() {
-        return ServCodeEnums.QingDaoBaiXinSHunTaiCreditService;
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.QingDaoBaiXinSHunTaiCreditService;
     }
 
 

+ 5 - 5
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/BaiYiJinFuCreditService.java

@@ -2,8 +2,8 @@ package com.hrsk.cloud.eg.app.threedocking.impl;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
-import com.hrsk.cloud.eg.app.constant.ServCodeEnums;
-import com.hrsk.cloud.eg.app.threedocking.DockingApi;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
 import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
 import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
 import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
@@ -29,7 +29,7 @@ import java.util.concurrent.TimeUnit;
  **/
 @Slf4j
 @Service
-public class BaiYiJinFuCreditService implements DockingApi {
+public class BaiYiJinFuCreditService implements LoanDockingApi {
 
     @Resource
     private RetryRestTemplate httpRestTemplate;
@@ -144,8 +144,8 @@ public class BaiYiJinFuCreditService implements DockingApi {
     }
 
     @Override
-    public ServCodeEnums getType() {
-        return ServCodeEnums.BaiYiJinFu;
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.BaiYiJinFu;
     }
 
 }

+ 5 - 5
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/BeiJingChongHeCreditService.java

@@ -1,8 +1,8 @@
 package com.hrsk.cloud.eg.app.threedocking.impl;
 
 import com.alibaba.fastjson2.JSONObject;
-import com.hrsk.cloud.eg.app.constant.ServCodeEnums;
-import com.hrsk.cloud.eg.app.threedocking.DockingApi;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
 import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
 import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
 import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
@@ -25,7 +25,7 @@ import javax.crypto.spec.SecretKeySpec;
  **/
 @Slf4j
 @Service
-public class BeiJingChongHeCreditService implements DockingApi {
+public class BeiJingChongHeCreditService implements LoanDockingApi {
 
     @Resource
     private ProductBusinessApiInfoService apiInfoService;
@@ -35,8 +35,8 @@ public class BeiJingChongHeCreditService implements DockingApi {
 
 
     @Override
-    public ServCodeEnums  getType() {
-        return ServCodeEnums.BeiJingChongHe;
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.BeiJingChongHe;
     }
 
     @Data

+ 5 - 5
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/CangZhouSuYiRonogCreditService.java

@@ -2,8 +2,8 @@ package com.hrsk.cloud.eg.app.threedocking.impl;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
-import com.hrsk.cloud.eg.app.constant.ServCodeEnums;
-import com.hrsk.cloud.eg.app.threedocking.DockingApi;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
 import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
 import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
 import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
@@ -22,7 +22,7 @@ import javax.annotation.Resource;
  **/
 @Slf4j
 @Component
-public class CangZhouSuYiRonogCreditService implements DockingApi {
+public class CangZhouSuYiRonogCreditService implements LoanDockingApi {
     @Resource
     private ProductBusinessApiInfoService apiInfoService;
 
@@ -31,8 +31,8 @@ public class CangZhouSuYiRonogCreditService implements DockingApi {
 
 
     @Override
-    public ServCodeEnums  getType() {
-        return ServCodeEnums.CangZhouSuYiRong;
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.CangZhouSuYiRong;
     }
 
     @Data

+ 5 - 5
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/CheYouRongCreditService.java

@@ -2,8 +2,8 @@ package com.hrsk.cloud.eg.app.threedocking.impl;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
-import com.hrsk.cloud.eg.app.constant.ServCodeEnums;
-import com.hrsk.cloud.eg.app.threedocking.DockingApi;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
 import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
 import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
 import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
@@ -25,7 +25,7 @@ import javax.crypto.spec.SecretKeySpec;
  **/
 @Slf4j
 @Component
-public class CheYouRongCreditService implements DockingApi {
+public class CheYouRongCreditService implements LoanDockingApi {
     @Resource
     private ProductBusinessApiInfoService apiInfoService;
 
@@ -35,8 +35,8 @@ public class CheYouRongCreditService implements DockingApi {
 
 
     @Override
-    public ServCodeEnums getType() {
-        return ServCodeEnums.JiangXiCheYouRong;
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.JiangXiCheYouRong;
     }
 
     @Data

+ 5 - 5
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/ChengDuYiHeShengCreditService.java

@@ -2,8 +2,8 @@ package com.hrsk.cloud.eg.app.threedocking.impl;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
-import com.hrsk.cloud.eg.app.constant.ServCodeEnums;
-import com.hrsk.cloud.eg.app.threedocking.DockingApi;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
 import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
 import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
 import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
@@ -25,7 +25,7 @@ import javax.crypto.spec.SecretKeySpec;
  **/
 @Slf4j
 @Component
-public class ChengDuYiHeShengCreditService implements DockingApi {
+public class ChengDuYiHeShengCreditService implements LoanDockingApi {
     @Resource
     private ProductBusinessApiInfoService apiInfoService;
 
@@ -33,8 +33,8 @@ public class ChengDuYiHeShengCreditService implements DockingApi {
     private RetryRestTemplate httpRestTemplate;
 
     @Override
-    public ServCodeEnums getType() {
-        return ServCodeEnums.ChengDuYiHeSheng;
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.ChengDuYiHeSheng;
     }
 
     @Data

+ 5 - 7
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/ChengHongHuiCreditService.java

@@ -1,8 +1,8 @@
 package com.hrsk.cloud.eg.app.threedocking.impl;
 
 import com.alibaba.fastjson2.JSONObject;
-import com.hrsk.cloud.eg.app.constant.ServCodeEnums;
-import com.hrsk.cloud.eg.app.threedocking.DockingApi;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
 import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
 import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
 import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
@@ -12,8 +12,6 @@ import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
 import com.hrsk.cloud.eg.vo.response.DataVo;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.scheduling.annotation.AsyncResult;
-import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -31,7 +29,7 @@ import java.util.Base64;
  **/
 @Service
 @Slf4j
-public class ChengHongHuiCreditService implements DockingApi {
+public class ChengHongHuiCreditService implements LoanDockingApi {
     @Resource
     private ProductBusinessApiInfoService apiInfoService;
 
@@ -40,8 +38,8 @@ public class ChengHongHuiCreditService implements DockingApi {
 
 
     @Override
-    public ServCodeEnums  getType() {
-        return ServCodeEnums.ChengHongHui;
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.ChengHongHui;
     }
 
     @Data

+ 5 - 5
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/ChongQinDongRunCreditService.java

@@ -2,8 +2,8 @@ package com.hrsk.cloud.eg.app.threedocking.impl;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
-import com.hrsk.cloud.eg.app.constant.ServCodeEnums;
-import com.hrsk.cloud.eg.app.threedocking.DockingApi;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
 import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
 import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
 import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
@@ -28,7 +28,7 @@ import java.util.Base64;
  **/
 @Slf4j
 @Component
-public class ChongQinDongRunCreditService implements DockingApi {
+public class ChongQinDongRunCreditService implements LoanDockingApi {
     @Resource
     private ProductBusinessApiInfoService apiInfoService;
 
@@ -39,8 +39,8 @@ public class ChongQinDongRunCreditService implements DockingApi {
 
 
     @Override
-    public ServCodeEnums getType() {
-        return ServCodeEnums.ChongQinDongRunCreditService;
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.ChongQinDongRunCreditService;
     }
 
     @Data

+ 5 - 5
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/ChongQingRuiShangXinCreditService.java

@@ -2,8 +2,8 @@ package com.hrsk.cloud.eg.app.threedocking.impl;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
-import com.hrsk.cloud.eg.app.constant.ServCodeEnums;
-import com.hrsk.cloud.eg.app.threedocking.DockingApi;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
 import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
 import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
 import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
@@ -29,7 +29,7 @@ import java.security.Key;
  **/
 @Slf4j
 @Service
-public class ChongQingRuiShangXinCreditService implements DockingApi {
+public class ChongQingRuiShangXinCreditService implements LoanDockingApi {
 
     @Resource
     private ProductBusinessApiInfoService apiInfoService;
@@ -38,8 +38,8 @@ public class ChongQingRuiShangXinCreditService implements DockingApi {
     private RetryRestTemplate httpRestTemplate;
 
     @Override
-    public ServCodeEnums  getType() {
-        return ServCodeEnums.ChongQingRuiShuangXin;
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.ChongQingRuiShuangXin;
     }
 
     @Data

+ 5 - 5
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/ChongQingYiYueCreditService.java

@@ -2,8 +2,8 @@ package com.hrsk.cloud.eg.app.threedocking.impl;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
-import com.hrsk.cloud.eg.app.constant.ServCodeEnums;
-import com.hrsk.cloud.eg.app.threedocking.DockingApi;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
 import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
 import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
 import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
@@ -23,15 +23,15 @@ import javax.annotation.Resource;
  **/
 @Slf4j
 @Service
-public class ChongQingYiYueCreditService implements DockingApi {
+public class ChongQingYiYueCreditService implements LoanDockingApi {
     @Resource
     private ProductBusinessApiInfoService apiInfoService;
 
     @Resource
     private RetryRestTemplate httpRestTemplate;
     @Override
-    public ServCodeEnums getType() {
-        return ServCodeEnums.ChongQingYiYue;
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.ChongQingYiYue;
     }
 
     @Data

+ 5 - 5
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/ChuanjinCreditService.java

@@ -3,8 +3,8 @@ package com.hrsk.cloud.eg.app.threedocking.impl;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
-import com.hrsk.cloud.eg.app.constant.ServCodeEnums;
-import com.hrsk.cloud.eg.app.threedocking.DockingApi;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
 import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
 import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
 import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
@@ -26,7 +26,7 @@ import java.util.Objects;
  **/
 @Service
 @Slf4j
-public class ChuanjinCreditService implements DockingApi {
+public class ChuanjinCreditService implements LoanDockingApi {
 
     private final static String qualityCheckPath = "customers/check/MD5Encrypt";
     private final static String applyPath = "customers";
@@ -37,8 +37,8 @@ public class ChuanjinCreditService implements DockingApi {
     @Resource
     private RetryRestTemplate httpRestTemplate;
     @Override
-    public ServCodeEnums getType() {
-        return ServCodeEnums.ChuanJin;
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.ChuanJin;
     }
     @Data
     private static class CheckInfo {

+ 110 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/DeLuoXuanAesCreditService.java

@@ -0,0 +1,110 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * @Author Liu Tao
+ * @Date 2024 06 24 10 58
+ **/
+@Slf4j
+@Service
+public class DeLuoXuanAesCreditService implements LoanDockingApi {
+
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+    @Override
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.DeLuoXuanAES;
+    }
+    @Data
+    private static class CheckInfo{
+        private String md5Phone;// 手机号md5
+        private Integer company_id;//公司编号
+    }
+    @Data
+    private static class ApplyInfo{
+        private String username;//姓名:xxx
+        private String phone; //手机号
+        private String city; //城市
+        private Integer loan; //贷款金额
+        private Integer price;//放款金额
+        private String content; //备注
+        private Integer gjj; //1-有公积金;2-无公积金
+        private String company; //工作单位
+        private Integer ispayroll;//1-有代发:2-无代发
+        private Integer house; //房产:1-本地房;2-无;3-外地房
+        private Integer car; //1-有车;2-无车
+        private Integer insurance; //保单:1-有 2-无
+        private Integer xyk;//信用卡 0-无 1-有
+        private Integer credit_loan; //信用贷款 1-无 2-有
+        private Integer shebao; //社保 1-有 -2无
+        private Integer pay_tax; //企业纳税 1-有 2-无
+        private Integer particles;//微粒贷 1-有 2-无
+        private Integer business_license;//营业执照 0-无 1-有
+        private Integer write_id;//无
+        private Integer sex;//性别 0-男 1-女
+        private Integer age;//年龄
+        private Integer job;//0自由职业1企业主2白领3公务员
+        private Integer degree;//1-高中以下 2-专科 3-本科及以上
+        private String source;//渠道名(平台提供)
+        private Integer platform_id;//不需要回传值为 0,回传必传(平台提供)
+    }
+
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit DeLuoXuanAesCreditService qualityCheck begin...userId:{}",userInfo.getUserId());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject config = JSONObject.parseObject(configJson);
+            log.info("德诺轩AES对接参数:{}", JSON.toJSONString(config));
+            String phoneMd5 = userInfo.getPhoneMd5() == null ? Md5Util.encoderByMd5(userInfo.getUserMobile()) : userInfo.getPhoneMd5();
+            CheckInfo checkInfo = new CheckInfo();
+            checkInfo.setMd5Phone(phoneMd5);
+            checkInfo.setCompany_id(config.getInteger("company_id"));
+            String url = config.getString("checkUrl");
+            log.info("credit qualityCheck DeLuoXuanAesCreditService request userId:{}, url:{}, CheckInfo:{}",userInfo.getUserId(), url, phoneMd5);
+            String response = null;
+            try{
+                response =httpRestTemplate.restTemplate().postForObject(url,checkInfo, String.class);
+            }catch (Exception e){
+                log.error("德诺轩AES准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck DeLuoXuanAesCreditService response userId:{}, result:{}",userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(),product.getPlanName());
+            }
+            JSONObject jsonObject=JSONObject.parseObject(response);
+            if (jsonObject == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            if (jsonObject.getInteger("code")==0) {
+                return DataVo.success(0, "德诺轩AES撞库成功", product.getPlanId());
+            } else {
+                return DataVo.fail(1, "德诺轩AES撞库失败,请联系系统管理员", product.getPlanId());
+            }
+        } catch (Exception e) {
+            log.error("德诺轩AES撞库失败", e);
+            return DataVo.fail(1, "德诺轩AES撞库失败,请联系系统管理员", product.getPlanId());
+        }
+    }
+
+
+}

+ 108 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/DeLuoXuanCreditService.java

@@ -0,0 +1,108 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * @Author Liu Tao
+ * @Date 2024 06 18 13 50
+ **/
+@Slf4j
+@Service
+public class DeLuoXuanCreditService implements LoanDockingApi {
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+
+
+    @Override
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.DeLuoXuan;
+    }
+    @Data
+    private static class CheckInfo{
+        private String md5Phone;// 手机号md5
+    }
+    @Data
+    private static class ApplyInfo{
+        private String username;//姓名:xxx
+        private String phone; //手机号
+        private String city; //城市
+        private Integer loan; //贷款金额
+        private Integer price;//放款金额
+        private String content; //备注
+        private Integer gjj; //1-有公积金;2-无公积金
+        private String company; //工作单位
+        private Integer ispayroll;//1-有代发:2-无代发
+        private Integer house; //房产:1-本地房;2-无;3-外地房
+        private Integer car; //1-有车;2-无车
+        private Integer insurance; //保单:1-有 2-无
+        private Integer xyk;//信用卡 0-无 1-有
+        private Integer credit_loan; //信用贷款 1-无 2-有
+        private Integer shebao; //社保 1-有 -2无
+        private Integer pay_tax; //企业纳税 1-有 2-无
+        private Integer particles;//微粒贷 1-有 2-无
+        private Integer business_license;//营业执照 0-无 1-有
+        private Integer write_id;//无
+        private String promotion_prefix;//来源
+        private Integer sex;//性别 0-男 1-女
+        private Integer age;//年龄
+        private Integer job;//0自由职业1企业主2白领3公务员
+        private Integer degree;//1-高中以下 2-专科 3-本科及以上
+
+    }
+
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit DeLuoXuanCreditService qualityCheck begin...userId:{}",userInfo.getUserId());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject config = JSONObject.parseObject(configJson);
+            log.info("德诺轩对接参数:{}", JSON.toJSONString(config));
+            String phoneMd5 = userInfo.getPhoneMd5() == null ? Md5Util.encoderByMd5(userInfo.getUserMobile()) : userInfo.getPhoneMd5();
+            CheckInfo checkInfo = new CheckInfo();
+            checkInfo.setMd5Phone(phoneMd5);
+            String url = config.getString("checkUrl");
+            log.info("credit qualityCheck DeLuoXuanCreditService request userId:{}, url:{}, CheckInfo:{}",userInfo.getUserId(), url, phoneMd5);
+            String response = null;
+            try{
+                response =httpRestTemplate.restTemplate().postForObject(url,checkInfo, String.class);
+            }catch (Exception e){
+                log.error("德诺轩准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck DeLuoXuanCreditService response userId:{}, result:{}",userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(),product.getPlanName());
+            }
+            JSONObject jsonObject=JSONObject.parseObject(response);
+            if (jsonObject == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            if (jsonObject.getInteger("code")==100) {
+                return DataVo.success(0, "德诺轩撞库成功", product.getPlanId());
+            } else {
+                return DataVo.fail(1, "德诺轩撞库失败,请联系系统管理员", product.getPlanId());
+            }
+        } catch (Exception e) {
+            log.error("德诺轩撞库失败", e);
+            return DataVo.fail(1, "德诺轩撞库失败,请联系系统管理员", product.getPlanId());
+        }
+    }
+
+}

+ 115 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/DeZhouXinYiRongCreditService.java

@@ -0,0 +1,115 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+
+/**
+ * @Author Liu Tao
+ * @Date 2023 10 09 16 18
+ *  德州鑫易融API
+ **/
+@Slf4j
+@Service
+public class DeZhouXinYiRongCreditService implements LoanDockingApi {
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+
+    @Override
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.DeZhouXinYiRong;
+    }
+
+    @Data
+    private static class CheckInfo{
+        private String mobile;//md5 的手机号
+        private String wxapp_id;//公司id
+    }
+
+    @Data
+    private static class ApplyInfo{
+        private Integer wxapp_id; //公司ID 是
+
+        private Integer channel_id; //渠道ID,否
+
+        private String name; //客户姓名 是
+
+        private String mobile;//手机号码 是
+
+        private Integer loans_price; //贷款金额,否
+
+        private Integer age;//年龄
+
+        private Integer sex; //性别(1:为男,2为女)
+
+        private Integer property;//名下房产 1:本地房 2:外地房 3:无房
+
+        private Integer vehicle;//	名下车 1:有 2:无
+
+        private Integer guarantee;//保单 1:有 2:无
+
+        private Integer drop;//代发 1:有 2:无
+
+        private Integer credit_card;//信用卡 1:有 2:无
+
+        private Integer social;//社保 1:有 2:无
+
+        private Integer fund;//公积金 1:有 2:无
+    }
+
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit DeZhouXinYiRongCreditService qualityCheck begin...userId:{}",userInfo.getUserId());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject config = JSONObject.parseObject(configJson);
+            log.info("德州鑫易融对接参数:{}", JSONObject.toJSONString(config));
+            CheckInfo checkInfo = new CheckInfo();
+            String phoneMd5 = userInfo.getPhoneMd5() == null ? Md5Util.encoderByMd5(userInfo.getUserMobile()) : userInfo.getPhoneMd5();
+            checkInfo.setMobile(phoneMd5);
+            checkInfo.setWxapp_id(config.getString("wxapp_id"));
+            String url=config.getString("http")+config.getString("index")+config.getString("parameter1")+config.getString("parameter2")+config.getString("parameter3")+config.getString("checkParmeter");
+            log.info("credit qualityCheck DeZhouXinYiRongCreditService request userId:{}, url:{}, CheckInfo:{}",userInfo.getUserId(), url, checkInfo);
+            String response = null;
+            try{
+                response =httpRestTemplate.restTemplate().postForObject(url,checkInfo, String.class);
+            }catch (Exception e){
+                log.error("德州鑫易融准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck DeZhouXinYiRongCreditService response userId:{}, result:{}",userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(),product.getPlanName());
+            }
+            JSONObject jsonObject=JSONObject.parseObject(response);
+
+            if (jsonObject == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            if (jsonObject.getInteger("code") == 0) {
+                return DataVo.success(0, "德州鑫易融撞库成功", product.getPlanId());
+            } else {
+                return DataVo.fail(1, "德州鑫易融撞库失败,请联系系统管理员", product.getPlanId());
+            }
+        } catch (Exception e) {
+            log.error("德州鑫易融撞库失败", e);
+            return DataVo.fail(1, "德州鑫易融撞库失败,请联系系统管理员", product.getPlanId());
+        }
+
+    }
+
+
+}

+ 112 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/DeZhouXinYiRongV2CreditService.java

@@ -0,0 +1,112 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * @Author Liu Tao
+ * @Date 2023 10 16 10 44
+ * 德州鑫易融V2API
+ **/
+@Slf4j
+@Service
+public class DeZhouXinYiRongV2CreditService implements LoanDockingApi {
+
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+
+    @Override
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.DeZhouXinYiRongV2;
+    }
+
+    @Data
+    private static class CheckInfo{
+        private String mobile_md5;//md5 的手机号
+    }
+
+    @Data
+    private static class ApplyInfo{
+        private String name; //姓名
+
+        private String mobile; //11位手机号
+
+        private Integer sex; //性别 (1男 2女)
+
+        private Integer loan_limit;//额度 (比如: 100000,单位:元)
+
+        private Integer room; //是否有房产(1:有  0:无)
+
+        private Integer car;//是否有车产( 1:有  0:无)
+
+        private Integer accumulation; //是否有公积金 ( 1:有  0:无)
+
+        private Integer social;//是否有社保 ( 1:有  0:无 )
+
+        private Integer policy;//是否有保单 (  1:有  0:无 )
+
+        private Integer business;//是否有营业执照 ( 1:有  0:无 )
+
+        private Integer issued;//是否有打卡工资 ( 1:有  0:无 )
+
+        private Integer enterprise;//是否有企业纳税 (  1:有  0:无 )
+
+    }
+
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit DeZhouXinYiRongV2CreditService qualityCheck begin...userId:{}",userInfo.getUserId());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject config = JSONObject.parseObject(configJson);
+            log.info("德州鑫易融V2对接参数:{}", JSON.toJSONString(config));
+            CheckInfo checkInfo = new CheckInfo();
+            String phoneMd5 = userInfo.getPhoneMd5() == null ? Md5Util.encoderByMd5(userInfo.getUserMobile()) : userInfo.getPhoneMd5();
+            checkInfo.setMobile_md5(phoneMd5);
+            String url=config.getString("checkUrl")+"?company="+config.getString("company")+"&mobile_md5="+checkInfo.getMobile_md5();
+            log.info("credit qualityCheck DeZhouXinYiRongV2CreditService request userId:{}, url:{}, CheckInfo:{}",userInfo.getUserId(), url, checkInfo);
+            String response = null;
+            try{
+                response =httpRestTemplate.restTemplate().postForObject(url,checkInfo, String.class);
+            }catch (Exception e){
+                log.error("德州鑫易融V2准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck DeZhouXinYiRongV2CreditService response userId:{}, result:{}",userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(),product.getPlanName());
+            }
+            JSONObject jsonObject=JSONObject.parseObject(response);
+
+            if (jsonObject == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            if (jsonObject.getInteger("code") == 0) {
+                return DataVo.success(0, "德州鑫易融V2撞库成功", product.getPlanId());
+            } else {
+                return DataVo.fail(1, "德州鑫易融V2撞库失败,请联系系统管理员", product.getPlanId());
+            }
+        } catch (Exception e) {
+            log.error("德州鑫易融V2撞库失败", e);
+            return DataVo.fail(1, "德州鑫易融V2撞库失败,请联系系统管理员", product.getPlanId());
+        }
+
+    }
+
+}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 34 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/DfrzwCreditService.java


+ 133 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/FangxinwangiCreditService.java

@@ -0,0 +1,133 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpResponse;
+import org.apache.http.util.EntityUtils;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * 放心网API接单
+ */
+@Service
+@Slf4j
+public class FangxinwangiCreditService implements LoanDockingApi {
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+
+    private final String qualityCheckPath = "/api/VenderExists/Post";
+
+    private final String applyPath = "/api/Venders/Save";
+
+
+    @Override
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.Fangxinwang;
+    }
+
+    @Data
+    private static class CheckInfo{
+        private String phone;
+    }
+    @Data
+    private static class ResultHt{
+        private Integer code;
+        private String msg;
+    }
+    @Data
+    private static class ApplyInfo{
+
+        String channeld;
+        String name;
+        String phoneNumber;
+        Integer sex;
+        int age;
+        String city;
+        int loanAmount;
+        int house;
+        int car;
+        int houseFund;
+        int socialInsurance;
+        int lifeInsurance;
+        String vender = "惠融易客";
+    }
+    /**
+     * 撞库 实现单个用户撞库
+     *
+     * @param userInfo
+     * @param product
+     * @return
+     *  {"channelSource":"birong","url":"http://apitest.shlyxxjs.com","key":"mgjr@3des123#dhjr9763089"}
+     */
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit FangxinwangCreditService qualityCheck begin...userId:{}",userInfo.getUserId());
+//            XdProductJointConfig xdProductJointConfig = xdProductJointConfigMapper.selectById(product.getJointType());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject fangxinwangJointDTO = JSON.parseObject(configJson);
+            log.info("放心网对接参数:{}", JSON.toJSONString(fangxinwangJointDTO));
+            String url = fangxinwangJointDTO.getString("url") + qualityCheckPath;
+            CheckInfo checkInfo = new CheckInfo();
+            checkInfo.setPhone(userInfo.getUserMobile() != null ? Md5Util.encoderByMd5(userInfo.getUserMobile()) : userInfo.getPhoneMd5());
+            String requestBody = JSON.toJSONString(checkInfo);
+            log.info("credit qualityCheck FangxinwangCreditService request userId:{},requestBody:{}",userInfo.getUserId(), url,requestBody);
+            ResultHt response = null;
+            try{
+                Map<String, String> head = new HashMap<>();
+                head.put("Content-Type", "application/json");
+                HttpResponse httpResponse = httpRestTemplate.restTemplate().postForObject(url, null, null, head, null, requestBody);
+                String responseStr = EntityUtils.toString(httpResponse.getEntity());
+                response = JSONObject.parseObject(responseStr,ResultHt.class);
+            }catch (Exception e){
+                log.error("放心网准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck FangxinwangCreditService response userId:{}, result:{}",userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(),product.getPlanName());
+            }
+            return Objects.equals(0, response.getCode()) ? DataVo.success(0, "放心网撞库成功", product.getPlanId())
+                    : DataVo.fail(response.getMsg(), product.getPlanId());
+        } catch (Exception e) {
+            log.error("放心网撞库失败", e);
+            return DataVo.fail(1, "放心网撞库失败,请联系系统管理员", product.getPlanId());
+        }
+
+    }
+
+
+    private void wrapSex(ApplyInfo applyInfoApi, String policeSex) {
+        int sex = 0;
+        switch (policeSex){
+            case "男":
+                sex = 1;
+                break;
+            case "女":
+                sex = 2;
+                break;
+            default:
+                sex = 0;
+        }
+        applyInfoApi.setSex(sex);
+    }
+
+
+}

+ 121 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/FuChengCreditService.java

@@ -0,0 +1,121 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.http.HttpResponse;
+import org.apache.http.util.EntityUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.crypto.Cipher;
+import javax.crypto.spec.SecretKeySpec;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Author Liu Tao
+ * @Date 2024 04 23 14 36
+ **/
+@Slf4j
+@Service
+public class FuChengCreditService implements LoanDockingApi {
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+
+
+    @Override
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.FuCheng;
+    }
+
+    @Data
+    private static class CheckInfo{
+        private String phoneMd5;// 手机号md5
+    }
+    @Data
+    private static class ApplyInfo{
+        private String phone;//手机号(明文)
+        private String name; //客户姓名
+        private String city; //城市编码(例:310101)
+        private Integer amount; //贷款金额,单位万元
+        private Integer car;//是否有车  0 没有  1有
+        private Integer house;//是否有房  0没有  1有
+        private Integer socialSecurity; //是否有社保
+        private Integer accumulationFund; //是否有公积金
+        private Integer businessLicense; //是否有营业执照
+    }
+
+
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit FuChengCreditService qualityCheck begin...userId:{}",userInfo.getUserId());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject config = JSONObject.parseObject(configJson);
+            log.info("福程对接参数:{}", JSON.toJSONString(config));
+            String phoneMd5 = userInfo.getPhoneMd5() == null ? Md5Util.encoderByMd5(userInfo.getUserMobile()) : userInfo.getPhoneMd5();
+            CheckInfo checkInfo = new CheckInfo();
+            checkInfo.setPhoneMd5(phoneMd5);
+            JSONObject json = new JSONObject(){{
+                put("data",encrypt(JSON.toJSONString(checkInfo),config.getString("key")));
+            }};
+            String url = config.getString("checkUrl");
+            log.info("credit qualityCheck FuChengCreditService request userId:{}, url:{}, CheckInfo:{}",userInfo.getUserId(), url, phoneMd5);
+            JSONObject response = null;
+            try{
+                Map<String, String> head = new HashMap<>();
+                head.put("Content-Type", "application/json");
+                head.put("channelSign", config.getString("channelSign"));
+                HttpResponse httpResponse = httpRestTemplate.restTemplate().postForObject(url, null, null, head, null, json.toJSONString());
+                String responseStr = EntityUtils.toString(httpResponse.getEntity());
+                response = JSONObject.parseObject(responseStr);
+            }catch (Exception e){
+                log.error("福程准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck FuChengCreditService response userId:{}, result:{}",userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            if (response.getString("code").equals("200")) {
+                return DataVo.success(0, "福程撞库成功", product.getPlanId());
+            } else {
+                return DataVo.fail(1, "福程撞库失败,请联系系统管理员", product.getPlanId());
+            }
+        } catch (Exception e) {
+            return DataVo.fail(1, "福程撞库失败,请联系系统管理员", product.getPlanId());
+        }
+    }
+
+    public static String encrypt(String sSrc, String sKey) throws Exception {
+        if (sKey == null) {
+            System.out.print("Key为空null");
+            return null;
+        }
+        if (sKey.length() != 16) {
+            System.out.print("Key长度不是16位");
+            return null;
+        }
+        byte[] raw = sKey.getBytes("utf-8");
+        SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
+        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");//"算法/模式/补码方式"
+        cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
+        byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8"));
+
+        return Base64.encodeBase64String(encrypted);//此处使用BASE64做转码功能,同时能起到2次加密的作用。
+    }
+}

+ 89 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/FuZhouBeiJiuCreditService.java

@@ -0,0 +1,89 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+
+/**
+ * @Author Liu Tao
+ * @Date 2024 06 25 14 48
+ **/
+@Slf4j
+@Service
+public class FuZhouBeiJiuCreditService implements LoanDockingApi {
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+
+    @Override
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.FuZhouBeiJiu;
+    }
+
+    @Data
+    private static class ApplyInfo {
+        private String name; //(必填)客户姓名
+        private String phone; //客户电话
+        private String quota; //额度
+        private String city; //0(0:福州,1:泉州)
+        private String forCondition; //跟进条件 车房公积金等数据
+        private String source; //来源.配置为2
+    }
+
+
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit FuZhouBeiJiuCreditService qualityCheck begin...userId:{}",userInfo.getUserId());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject config = JSONObject.parseObject(configJson);
+            log.info("福州北久对接参数:{}", JSON.toJSONString(config));
+            String phoneMd5 = userInfo.getPhoneMd5() == null ? Md5Util.encoderByMd5(userInfo.getUserMobile()) : userInfo.getPhoneMd5();
+            String url = config.getString("checkUrl");
+            JSONArray jsonArray = new JSONArray();
+            jsonArray.add(phoneMd5);
+            JSONObject json = new JSONObject(){{
+                put("data", jsonArray);
+            }};
+            log.info("credit qualityCheck FuZhouBeiJiuCreditService request userId:{}, url:{}, CheckInfo:{}",userInfo.getUserId(), url, json);
+            String response = null;
+            try {
+                response = httpRestTemplate.restTemplate().postForObject(url, json, String.class);
+            } catch (Exception e) {
+                log.error("福州北久准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck FuZhouBeiJiuCreditService response userId:{}, result:{}", userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            JSONObject jsonObject = JSONObject.parseObject(response);
+            if (jsonObject == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            if (jsonObject.getString("result").equals("success")) {
+                return DataVo.success(0, "福州北久撞库成功", product.getPlanId());
+            } else {
+                return DataVo.fail(1, "福州北久撞库失败,请联系系统管理员", product.getPlanId());
+            }
+        } catch (Exception e) {
+            log.error("福州北久撞库失败", e);
+            return DataVo.fail(1, "福州北久撞库失败,请联系系统管理员", product.getPlanId());
+        }
+    }
+
+}

+ 132 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/FuZhouBeiYinJinRongCreditService.java

@@ -0,0 +1,132 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * @Author Liu Tao
+ * @Date 2023 11 06 11 58
+ **/
+@Slf4j
+@Service
+public class FuZhouBeiYinJinRongCreditService implements LoanDockingApi {
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+
+    @Override
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.FuZhouBeiYinJinRong;
+    }
+
+    @Data
+    private static class CheckInfo{
+        private String phone;//md5 的手机号
+        private String channelCode;//渠道号
+    }
+
+    @Data
+    private static class ApplyInfo{
+        private String channelCode;//渠道编号
+        private String phone;//手机号(RSA加密后)
+        private String idCardNo;//否,身份证号码(RSA加密后)
+        private String name;//姓名(RSA加密后)
+        private Integer loanAmount;//贷款额度/单位:万元
+        private String loanLimit;//借款期限 1.1个月 2.3个月 3.6个月 4.9个月 5.12个月 6.24个月 7.36个月 8.36个月以上
+        private String loanUse;//借款用途 1.购车贷款 2.购房贷款 3.装修贷款 4.教育贷款 5.消费贷款 6.过桥贷款 7.结婚贷款 8.旅游贷款 9.医疗贷款 10.其他贷款
+        private String sex;//性别 1:男 2:女 3:未知
+        private Integer age;//年龄
+        private String cityOfWork;//工作城市,结尾不要带‘市’
+        private Integer cityOfWorkCode;//工作城市代码,重庆:500100
+        private Integer revenue;//月收入/元
+        private String profession;//职业 0.无固定职业 1.工薪族 2.生意人
+        private String reservedFunds;//公积金 0.无 1.有
+        private String socialSecurity;//社保 0.无 1.有
+        private String creditCard;//信用卡 0.无 1.有
+        private String zhima;//芝麻分 0.无 1.550分以下 2.550-600分 3.600-650分 4.650-700分 5.700分及以上
+        private String car;//车产 0.无 1.有
+        private String house;//房产 0.无 1.本地房 2.外地房
+        private String insurance;//寿险保单 0.无 1.有
+        private String education;//学历 0.高中及以下 1.大专 2.本科 3.本科以上
+        private String salary;//工资代发 0.无 1.有
+        private String weili;//微粒贷 0.无 1.有
+        private String businessLicense;//营业执照 0.无 1.有
+        private String enterpriseTaxes;//企业纳税 0.无企税 1.有企税
+        private String marital;//婚姻状况 0.未婚/单身 1.离异 2.已婚
+
+
+
+    }
+
+
+
+    /**
+     * 撞库 实现单个用户撞库
+     *
+     * @param userInfo
+     * @param product
+     * @return
+     * {
+     * 	"checkUrl": "http://110.40.178.43:8888/channel/openapi/checkuser",
+     * 	"applyUrl": "http://110.40.178.43:8888/channel/openapi/pushuser",
+     * 	"channelCode": "huirongyikefuzhou",
+     * 	"sourcecode": "21070",
+     * 	"publicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsLuutChHG1O_PG6Xo7IE6EMr9S5DdIc4PX2T0OoWqf7-jLMvdgq0ueEBPXC-JmyE-vHFkejVwZBwte7eoVaW6KeW0v1FYuN_hDA7bra__zWpLKnlyvYs8TsqkwbCq5EhL7pnhi08ypoEEXQVsyjjBy7cttDMWz7b4bjkEPSdWulmTKeOadLJKdGA95MpC1kbA_TlKJf4bwaBluWSFdb7jyms-KtzcCygQLVD5z1NcPIQVe44HXGUYqelThZ0MwokcnLS2ow7RpkE3_-ut0Lrwk9zT2gJ3_gPEL6IE1XXXvsDZwsKdv252AfBiZwUqVc26XsMd7pd-jowK1QiLnOmSQIDAQAB"
+     * }
+     */
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit FuZhouBeiYinJinRongCreditService qualityCheck begin...userId:{}",userInfo.getUserId());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject config = JSONObject.parseObject(configJson);
+            log.info("福州北银金融对接参数:{}", JSON.toJSONString(config));
+            CheckInfo checkInfo = new CheckInfo();
+            String phoneMd5 = userInfo.getPhoneMd5() == null ? Md5Util.encoderByMd5(userInfo.getUserMobile()) : userInfo.getPhoneMd5();
+            checkInfo.setPhone(phoneMd5);
+            checkInfo.setChannelCode(config.getString("channelCode"));
+            String url = config.getString("checkUrl");
+            log.info("credit qualityCheck FuZhouBeiYinJinRongCreditService request userId:{}, url:{}, CheckInfo:{}",userInfo.getUserId(), url, checkInfo);
+            String response = null;
+            try{
+                response =httpRestTemplate.restTemplate().postForObject(url,checkInfo, String.class);
+            }catch (Exception e){
+                log.error("福州北银金融准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck FuZhouBeiYinJinRongCreditService response userId:{}, result:{}",userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(),product.getPlanName());
+            }
+            JSONObject jsonObject=JSONObject.parseObject(response);
+
+            if (jsonObject == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            if (jsonObject.getInteger("code") ==0 ) {
+                return DataVo.success(0, "福州北银金融撞库成功", product.getPlanId());
+            } else {
+                return DataVo.fail(1, "福州北银金融撞库失败,请联系系统管理员", product.getPlanId());
+            }
+        } catch (Exception e) {
+            log.error("福州北银金融撞库失败", e);
+            return DataVo.fail(1, "福州北银金融撞库失败,请联系系统管理员", product.getPlanId());
+        }
+
+    }
+}

+ 112 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/GexinjinfuCreditService.java

@@ -0,0 +1,112 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpResponse;
+import org.apache.http.util.EntityUtils;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * 格鑫金服API接单
+ */
+@Service
+@Slf4j
+public class GexinjinfuCreditService implements LoanDockingApi {
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+
+    private final String qualityCheckPath = "/api/rsatg/checkmobile";
+
+    private final String applyPath = "/api/rsatg/add";
+
+
+    @Override
+    public ServerCodeEnums  getType() {
+        return ServerCodeEnums.Gexinjinfu;
+    }
+
+    @Data
+    public static class CheckData{
+
+        private String channel_code;
+        private String mobile_md5;
+        private String channel_secret_key;
+    }
+
+    @Data
+    private static class CheckInfo{
+        private String client_id;
+
+        private String client_secret;
+
+        private CheckData data;
+
+
+    }
+    @Data
+    private static class ResultHt{
+        private Integer status;
+        private String msg;
+    }
+
+
+    /**
+     * 撞库 实现单个用户撞库
+     *
+     * @param userInfo
+     * @param product
+     * @return
+     *  {"channelSource":"birong","url":"http://apitest.shlyxxjs.com","key":"mgjr@3des123#dhjr9763089"}
+     */
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit GexinjinfuCreditService qualityCheck begin...userId:{}",userInfo.getUserId());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject gexinjinfuJointDTO = JSON.parseObject(configJson);
+            log.info("格鑫金服对接参数:{}", JSON.toJSONString(gexinjinfuJointDTO));
+            String md5 = userInfo.getPhoneMd5() == null ? Md5Util.encoderByMd5(userInfo.getUserMobile()) : userInfo.getPhoneMd5();
+            String url = gexinjinfuJointDTO.getString("url") + qualityCheckPath  + "?mobnum_md5=" +  md5;
+            log.info("credit qualityCheck GexinjinfuCreditService request userId:{}, url:{}, checkData:{}",userInfo.getUserId(), url);
+            ResultHt response = null;
+            try{
+                Map<String, String> head = new HashMap<>();
+                head.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
+                HttpResponse httpResponse = httpRestTemplate.restTemplate().getForObject(url, null, null, head, null);
+                String responseStr = EntityUtils.toString(httpResponse.getEntity());
+                response = JSONObject.parseObject(responseStr,ResultHt.class);
+            }catch (Exception e){
+                log.error("格鑫金服准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck GexinjinfuCreditService response userId:{}, result:{}",userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(),product.getPlanName());
+            }
+            return Objects.equals(200, response.getStatus()) ? DataVo.success(0, "格鑫金服撞库成功", product.getPlanId())
+                    : DataVo.fail(response.getMsg(), product.getPlanId());
+        } catch (Exception e) {
+            log.error("格鑫金服撞库失败", e);
+            return DataVo.fail(1, "格鑫金服撞库失败,请联系系统管理员", product.getPlanId());
+        }
+
+    }
+
+}

+ 101 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/GuanZhouPuHuiCreditService.java

@@ -0,0 +1,101 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+
+/**
+ * @Author Liu Tao
+ * @Date 2023 12 14 15 55
+ **/
+@Slf4j
+@Service
+public class GuanZhouPuHuiCreditService  implements LoanDockingApi {
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+
+    @Override
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.GuanZhouPuHui;
+    }
+
+    @Data
+    private static class CheckInfo{
+        private String mobile;//Md5(mobile)
+    }
+
+    @Data
+    private static class ApplyInfo{
+        private Integer file_id;
+        private String name; //姓名
+        private String mobile; //手机号码
+        private Integer age; //年龄
+        private Integer sex;//性别(1:为男,2:为女,无传0)
+        private String city; //城市(如武汉市)
+        private Integer is_house; //是否有房(是传1,否传0)
+        private Integer is_car; //是否有车(是传1,否传0)
+        private Integer is_company; //是否有公司营业执照(是传1,否传0)
+        private Integer is_credit; //是否有信用卡 (是传1,否传0)
+        private Integer is_insurance; //是否有保单(是传1,否传0)
+        private Integer is_social; //是否有社保(是传1,否传0)
+        private Integer is_fund; //是否有公积金(是传1,否传0)
+        private Integer is_work; //是否有打卡工资(是传1,否传0)
+        private Integer is_tax; //是否有营业税(是传1,否传0)
+        private String webank; //微粒贷额度(单位:元)
+        private String money_demand; //申请额度(单位:元)
+        private String remarks; //备注
+    }
+
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit GuanZhouPuHuiCreditService qualityCheck begin...userId:{}",userInfo.getUserId());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject config = JSONObject.parseObject(configJson);
+            log.info("广州普惠对接参数:{}", JSONObject.toJSONString(config));
+            String Phone_md5=(userInfo.getPhoneMd5() == null ? Md5Util.encoderByMd5(userInfo.getUserMobile()) : userInfo.getPhoneMd5());
+            CheckInfo checkInfo=new CheckInfo();
+            checkInfo.setMobile(Phone_md5);
+            String url = config.getString("checkUrl");
+            log.info("credit qualityCheck GuanZhouPuHuiCreditService request userId:{}, url:{}, CheckInfo:{}",userInfo.getUserId(), url, checkInfo);
+            String response = null;
+            try{
+                response =httpRestTemplate.restTemplate().postForObject(url,checkInfo, String.class);
+            }catch (Exception e){
+                log.error("广州普惠准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck GuanZhouPuHuiCreditService response userId:{}, result:{}",userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(),product.getPlanName());
+            }
+            JSONObject jsonObject=JSONObject.parseObject(response);
+            log.info("credit qualityCheck GuanZhouPuHuiCreditService response md5Phone:{}, jsonObject:{}",userInfo.getUserId(), jsonObject);
+            if (jsonObject == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            if (jsonObject.getInteger("code")==0) {
+                return DataVo.success(0, "广州普惠撞库成功", product.getPlanId());
+            } else {
+                return DataVo.fail(1, "广州普惠撞库失败,请联系系统管理员", product.getPlanId());
+            }
+        } catch (Exception e) {
+            log.error("广州普惠撞库失败", e);
+            return DataVo.fail(1, "广州普惠撞库失败,请联系系统管理员", product.getPlanId());
+        }
+    }
+
+}

+ 104 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/GuangDongHaoEnCreditService.java

@@ -0,0 +1,104 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+
+/**
+ * @Author Liu Tao
+ * @Date 2023 09 22 17 08
+ *广东昊恩API
+ **/
+@Slf4j
+@Service
+public class GuangDongHaoEnCreditService implements LoanDockingApi {
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+
+    @Override
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.GuangDongHaoEn;
+    }
+
+    @Data
+    private static class CheckInfo{
+        private String appid;//数据标识
+        private String mobileEncrypt;//手机号MD5加密32位小写字符串
+    }
+
+    @Data
+    private static class ApplyInfo{
+        private String appid; //数据标识
+        private String name; //姓名
+        private String mobile;//手机号
+        private String cardNo;//身份证
+        private Integer gender;//性别; 0-女 1-男
+        private String city;//城市(格式:xx市)
+        private Integer amount;//申请金额(万)
+        private String period;//申请期限(月)
+        private Integer monthlyIncome;//月收入(元)
+        private Integer age;//年龄(18-99)
+        private Integer houseType;//房产; 0-无 1-有
+        private Integer carType;//车产; 0-无 1-有
+        private Integer socialInsurance;//社保; 0-无 1-有
+        private Integer commercialInsurance;//商业保险; 0-无 1-有
+        private Integer accumulationFund;//公积金; 0-无 1-有
+        private Integer entrepreneur;//是否企业主; 0-否 1-是
+        private Integer credit;//信用情况
+        private Integer zhima;//芝麻分
+        private Integer additional;//其他信息
+    }
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit GuangDongHaoEnCreditService qualityCheck begin...userId:{}",userInfo.getUserId());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject config = JSONObject.parseObject(configJson);
+            log.info("广东昊恩对接参数:{}", JSONObject.toJSONString(config));
+            CheckInfo checkInfo = new CheckInfo();
+            String phoneMd5 = userInfo.getPhoneMd5() == null ? Md5Util.encoderByMd5(userInfo.getUserMobile()) : userInfo.getPhoneMd5();
+            checkInfo.setMobileEncrypt(phoneMd5);
+            checkInfo.setAppid(config.getString("appid"));
+            String url = config.getString("checkUrl");
+            log.info("credit qualityCheck GuangDongHaoEnCreditService request userId:{}, url:{}, CheckInfo:{}",userInfo.getUserId(), url, checkInfo);
+            String response = null;
+            try{
+                response =httpRestTemplate.restTemplate().postForObject(url,checkInfo, String.class);
+            }catch (Exception e){
+                log.error("广东昊恩准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck GuangDongHaoEnCreditService response userId:{}, result:{}",userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(),product.getPlanName());
+            }
+            JSONObject jsonObject=JSONObject.parseObject(response);
+
+            if (jsonObject == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            if (jsonObject.getInteger("code") == 200) {
+                return DataVo.success(0, "广东昊恩撞库成功", product.getPlanId());
+            } else {
+                return DataVo.fail(1, "广东昊恩撞库失败,请联系系统管理员", product.getPlanId());
+            }
+        } catch (Exception e) {
+            log.error("广东昊恩撞库失败", e);
+            return DataVo.fail(1, "广东昊恩撞库失败,请联系系统管理员", product.getPlanId());
+        }
+    }
+
+}

+ 93 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/GuangDongHongZhanCreditService.java

@@ -0,0 +1,93 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+
+/**
+ * @Author zjc
+ * @Date 2024 08 14 16 36
+ **/
+@Slf4j
+@Service
+    public class GuangDongHongZhanCreditService implements LoanDockingApi {
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+    @Override
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.GuangDongHongZhan;
+    }
+
+    @Data
+    private static class CheckInfo{
+        private String mobile;//md5加密后的手机号,32位小写
+    }
+
+
+    @Data
+    private static class ApplyInfo {
+
+        private String loanName;//姓名
+        private String phone;//手机号码
+        private String loanMoney;//贷款金额 元
+        private String area;//城市
+        private String situation;//备注
+    }
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit GuangDongHongZhanCreditService qualityCheck begin...userId:{}",userInfo.getUserId());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject config = JSONObject.parseObject(configJson);
+            log.info("广东鸿展对接参数:{}", JSONObject.toJSONString(config));
+            CheckInfo checkInfo = new CheckInfo();
+            String phoneMd5 = userInfo.getPhoneMd5() == null ? Md5Util.encoderByMd5(userInfo.getUserMobile()) : userInfo.getPhoneMd5();
+            checkInfo.setMobile(phoneMd5);
+
+
+            String url = config.getString("checkUrl");
+
+            log.info("credit qualityCheck GuangDongHongZhanCreditService request userId:{}, url:{}, checkInfo:{}",userInfo.getUserId(), url, checkInfo);
+            String response = null;
+            try{
+                response =httpRestTemplate.restTemplate().postForObject(url,checkInfo, String.class);
+            }catch (Exception e){
+                log.error("广东鸿展准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck GuangDongHongZhanCreditService response userId:{}, result:{}",userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(),product.getPlanName());
+            }
+            JSONObject jsonObject=JSONObject.parseObject(response);
+
+            if (jsonObject == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            if (jsonObject.getInteger("code") ==0 && jsonObject.getBoolean("data")) {
+                return DataVo.success(0, "广东鸿展撞库成功", product.getPlanId());
+            } else {
+                return DataVo.fail(1, "广东鸿展撞库失败,请联系系统管理员", product.getPlanId());
+            }
+        } catch (Exception e) {
+            log.error("广东鸿展撞库失败", e);
+            return DataVo.fail(1, "广东鸿展撞库失败,请联系系统管理员", product.getPlanId());
+        }
+
+    }
+
+
+}

+ 130 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/GuangZhouHuaXinCreditService.java

@@ -0,0 +1,130 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+
+
+/**
+ * @Author Liu Tao
+ * @Date 2024 07 22 14 13
+ **/
+@Service
+@Slf4j
+public class GuangZhouHuaXinCreditService implements LoanDockingApi {
+
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+
+    @Override
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.GuangZhouHuaXin;
+    }
+
+    @Data
+    private static class CheckInfo {
+        private String appKey;// Md5(mobile)
+        private String sign;// Md5签名
+        private String timestamp;// 时间戳 到秒级 例:1704042061,10位
+        private String phoneMd5;// 明文电话号码Md5加密值(小写),用于判断是否重复
+    }
+
+
+    @Data
+    private static class ApplyInfo {
+        private String appKey;//渠道代码【接收方提供】
+        private String sign;//Md5签名
+        private String timestamp;//时间戳
+        private String phone;//手机
+        private String phoneMd5;//明文电话号码Md5加密值(小写),用于判断是否重复
+        private String province;//省
+        private String city;//市
+        private String realName;//真实姓名
+        private String idCard;//身份证号,如果没有该字段,传“无”
+        private int age;//年龄
+        private Integer gender;//性别;0:女 1:男
+        private String wageMonth;//月收入 (没有传“0”),单位“元”,具体的数字,例如:10000,或者,25000
+        private Integer education;//教育程度:1、初中;2、 高中 ;3、 中专 ;4、 大专 ;5、 本科及以上(没有传5)
+        private Integer socialSecurity;//社保信息: 0、 无社保信息;1、 六个月以下;2、 六到十二个月; 3、 十二个月以上(没有传0)
+        private Integer overdue;//信用记录:1、无信用卡或贷款;2、一年内逾期超过3次且超过90天; 3、 一年内逾期不超过3次且少于90天;4、 信用良好并无逾期 (没有传4)
+        private Integer profession;//职业 : 1、 上班职员;2、 自由职业;3、 个体户;4、企业主(没有传1)
+        private Integer paymentForm;//工资发放形式:0、 无 ;1、 现金发放;2、 转账工资;3、 银行代发;4、 打卡+现金; (没有传3)
+        private Integer workTime;//工作时间:1、 六个月以下;2、 六到十二个月;3、十二个月以上 (没有传3)
+        private Integer house;//房产信息:1 无房产 2 商品房 3 自建房 (没有传1)
+        private Integer accumulationFound;//公积金信息:0、无公积金;1、 六个月以下;2、 六到十二个月;3、 十二个月以上 (没有传0)
+        private Integer loanAmount;//贷款额度: 1,5万以下; 2,5-10万(推荐);3,10-20万(推荐); 4,20万以上; (没有传2)
+        private Integer car;//车产信息:1 无车产;2 全款车;3 按揭车(没有传1)
+        private Integer carAmount;//车辆价值:0:无;1:0-8万;2:9-15万;3:15-20万;4:20万以上(没有传0)
+        private Integer carYear;//车子购买年限:0:无;1,8年以上; 2,8年以下(没有传0)
+        private Integer carMortgageStatus;//车子当前抵押状态:0,无;1:当前抵押中;2:当前无抵押(没有传0)
+        private Integer isCarOwner;//车产是否本人名下:0:否 1:是(没有传0)
+        private Integer loanTime;//贷款时间:1、 1~3个月;2、 3~6个月;3、 6~12个月;4、12~24个月;5、>24个月(没有传1)
+        private Integer commercialInsurance;//商业保险:1、 无; 2、投保人寿险且投保两年以下;3、投保人寿险且投保两年以上(没有传1)
+        private Integer creditCardLimit;//信用卡额度:1、 无;2、 3000以下;3、3千到1万; 4、1万到3万; 5、3万以上(没有传1)
+        private Integer weiLiDai;//微粒贷:0 、无;1 、500 ~ 2999;2 、3000~5999; 3、6000~9999;4 10000 ~ 29999; 5 、30000~99999 ;6、>100000;(没有传0)
+        private Integer zhiMa;//芝麻分数:0,无;1、小于500; 2,500~599; 3,600~649; 4,650~699; 5,700以上; (没有传0)
+        private Integer baiTiao;//京东白条 0,无;1,3000以下;2,3000~4999;3,5000以上(没有传0
+        private Integer huaBei;//蚂蚁花呗 0,无;1,3000以下;2,3000~4999;3,5000以上(没有传0)
+
+    }
+
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit GuangZhouHuaXinCreditService qualityCheck begin...userId:{}",userInfo.getUserId());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject config = JSONObject.parseObject(configJson);
+            log.info("广州华鑫对接参数:{}", JSONObject.toJSONString(config));
+            String phoneMd5 = userInfo.getPhoneMd5() == null ? Md5Util.encoderByMd5(userInfo.getUserMobile()) : userInfo.getPhoneMd5();
+            String url = config.getString("checkUrl");
+            //签名
+            StringBuffer sb = new StringBuffer();
+            long currentTimeMillis = System.currentTimeMillis()/1000;
+            sb.append(config.getString("AppKey")+config.getString("AppSecret")+phoneMd5+currentTimeMillis);
+            String sign = Md5Util.encoderByMd5(sb.toString()).toLowerCase();
+            CheckInfo checkInfo = new CheckInfo();
+            checkInfo.setPhoneMd5(phoneMd5);
+            checkInfo.setTimestamp(String.valueOf(currentTimeMillis));
+            checkInfo.setAppKey(config.getString("AppKey"));
+            checkInfo.setSign(sign);
+            log.info("credit qualityCheck GuangZhouHuaXinCreditService request userId:{}, url:{}, CheckInfo:{}",userInfo.getUserId(), url, checkInfo);
+            String response = null;
+            try {
+                response = httpRestTemplate.restTemplate().postForObject(url, checkInfo, String.class);
+            } catch (Exception e) {
+                log.error("广州华鑫准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck GuangZhouHuaXinCreditService response userId:{}, result:{}", userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            JSONObject jsonObject = JSONObject.parseObject(response);
+            if (jsonObject == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            if (jsonObject.getInteger("code").equals(200) && "SUCCESS".equals(jsonObject.getString("msg"))) {
+                return DataVo.success(0, "广州华鑫撞库成功", product.getPlanId());
+            } else {
+                return DataVo.fail(1, "广州华鑫撞库失败,请联系系统管理员", product.getPlanId());
+            }
+        } catch (Exception e) {
+            log.error("广州华鑫撞库失败", e);
+            return DataVo.fail(1, "广州华鑫撞库失败,请联系系统管理员", product.getPlanId());
+        }
+    }
+
+}

+ 115 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/HamiguaCreditService.java

@@ -0,0 +1,115 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpResponse;
+import org.apache.http.util.EntityUtils;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * 哈密瓜API接单
+ */
+@Service
+@Slf4j
+public class HamiguaCreditService implements LoanDockingApi {
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+
+    private final String qualityCheckPath = "/v1/api/customer/repeat/check";
+
+    private final String applyPath = "/v1/api/customer/media/create";
+
+    @Override
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.Hamigua;
+    }
+
+    @Data
+    public static class CheckData{
+        private String mobile_md5;
+        private String city;
+    }
+
+    @Data
+    private static class CheckInfo{
+        private String client_id;
+
+        private String client_secret;
+
+        private CheckData data;
+
+
+    }
+    @Data
+    private static class ResultHt{
+        private Integer code;
+        private String message;
+    }
+
+    /**
+     * 撞库 实现单个用户撞库
+     *
+     * @param userInfo
+     * @param product
+     * @return
+     *  {"channelSource":"birong","url":"http://apitest.shlyxxjs.com","key":"mgjr@3des123#dhjr9763089"}
+     */
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit HamiguaCreditService qualityCheck begin...userId:{}",userInfo.getUserId());
+//            XdProductJointConfig xdProductJointConfig = xdProductJointConfigMapper.selectById(product.getJointType());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject hamiguaJointDTO = JSON.parseObject(configJson);
+            log.info("哈密瓜对接参数:{}", JSON.toJSONString(hamiguaJointDTO));
+//            CheckInfo checkInfo = new CheckInfo();
+            CheckData checkData = new CheckData();
+            checkData.setCity(userInfo.getCompanyCity());
+            checkData.setMobile_md5(userInfo.getPhoneMd5());
+//            checkInfo.setClient_id(hamiguaJointDTO.getClientId());
+//            checkInfo.setClient_secret(hamiguaJointDTO.getClientSecret());
+//            checkInfo.setData(checkData);
+            String url = hamiguaJointDTO.getString("url") + qualityCheckPath;
+            log.info("credit qualityCheck HamiguaCreditService request userId:{}, url:{}, checkData:{}",userInfo.getUserId(), url, checkData);
+            ResultHt response = null;
+            try{
+                Map<String, String> head = new HashMap<>();
+                head.put("Content-Type", "application/json");
+                head.put("secret", hamiguaJointDTO.getString("clientSecret"));
+                HttpResponse httpResponse = httpRestTemplate.restTemplate().postForObject(url, null, null, head, null, JSON.toJSONString(checkData));
+                String responseStr = EntityUtils.toString(httpResponse.getEntity());
+                response = JSONObject.parseObject(responseStr,ResultHt.class);
+            }catch (Exception e){
+                log.error("哈密瓜准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck HamiguaCreditService response userId:{}, result:{}",userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(),product.getPlanName());
+            }
+            return Objects.equals(10, response.getCode()) ? DataVo.success(0, "哈密瓜撞库成功", product.getPlanId())
+                    : DataVo.fail(response.getMessage(), product.getPlanId());
+        } catch (Exception e) {
+            log.error("哈密瓜撞库失败", e);
+            return DataVo.fail(1, "哈密瓜撞库失败,请联系系统管理员", product.getPlanId());
+        }
+
+    }
+
+}

+ 116 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/HaohanwuyinCreditService.java

@@ -0,0 +1,116 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpResponse;
+import org.apache.http.util.EntityUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+/**
+ * 灏瀚无崟API接单
+ */
+@Service
+@Slf4j
+public class HaohanwuyinCreditService implements LoanDockingApi {
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+
+
+    private final String qualityCheckPath = "/api/customer/collisionLibrary";
+
+    private final String applyPath = "/api/customer/pushCustomer";
+
+    @Override
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.Haohanwuyin;
+    }
+
+    @Data
+    public static class CheckData{
+
+        private String channel_code;
+        private String mobile_md5;
+        private String channel_secret_key;
+    }
+
+    @Data
+    private static class CheckInfo{
+        private String client_id;
+
+        private String client_secret;
+
+        private CheckData data;
+
+
+    }
+    @Data
+    private static class ResultHt{
+        private Integer code;
+        private String msg;
+    }
+
+
+    /**
+     * 撞库 实现单个用户撞库
+     *
+     * @param userInfo
+     * @param product
+     * @return
+     *  {"channelSource":"birong","url":"http://apitest.shlyxxjs.com","key":"mgjr@3des123#dhjr9763089"}
+     */
+
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit HaohanwuyinCreditService qualityCheck begin...userId:{}",userInfo.getUserId());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            com.alibaba.fastjson2.JSONObject HaohanwuyinJointDTO = JSON.parseObject(configJson);
+            log.info("灏瀚无崟对接参数:{}", JSON.toJSONString(HaohanwuyinJointDTO));
+            Map<String,String> checkData = new HashMap<>();
+            checkData.put("channel_code", HaohanwuyinJointDTO.getString("channelCode"));
+            checkData.put("channel_secret_key", HaohanwuyinJointDTO.getString("channelSecretKey"));
+            String phoneMd5 = userInfo.getPhoneMd5() == null ? Md5Util.encoderByMd5(userInfo.getUserMobile()) : userInfo.getPhoneMd5();
+            checkData.put("md5_phone", phoneMd5);
+            String url = HaohanwuyinJointDTO.getString("url") + qualityCheckPath;
+            log.info("credit qualityCheck HaohanwuyinCreditService request userId:{}, url:{}, checkData:{}",userInfo.getUserId(), url, checkData);
+            ResultHt response = null;
+            try{
+                Map<String, String> head = new HashMap<>();
+                head.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
+                HttpResponse httpResponse = httpRestTemplate.restTemplate().postForObject(url, null, null, head, null, checkData);
+                String responseStr = EntityUtils.toString(httpResponse.getEntity());
+                response = JSONObject.parseObject(responseStr,ResultHt.class);
+            }catch (Exception e){
+                log.error("灏瀚无崟准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck HaohanwuyinCreditService response userId:{}, result:{}",userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(),product.getPlanName());
+            }
+            return Objects.equals(0, response.getCode()) ? DataVo.success(0, "灏瀚无崟撞库成功", product.getPlanId())
+                    : DataVo.fail(response.getMsg(), product.getPlanId());
+        } catch (Exception e) {
+            log.error("灏瀚无崟撞库失败", e);
+            return DataVo.fail(1, "灏瀚无崟撞库失败,请联系系统管理员", product.getPlanId());
+        }
+
+    }
+
+}

+ 94 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/HeFeiShenDaiCreditService.java

@@ -0,0 +1,94 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+
+/**
+ * @Author Liu Tao
+ * @Date 2023 12 07 10 53
+ **/
+@Slf4j
+@Service
+public class HeFeiShenDaiCreditService implements LoanDockingApi {
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+
+
+
+    @Override
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.HeFeiShenDai;
+    }
+
+    @Data
+    private static class ApplyInfo{
+        private String name; //客户姓名
+        private String phone; //手机号
+        private String gender; //性别
+        private Integer age; //年龄
+        private String grade;//星级
+        private Integer limit; //额度
+        private Integer annual_income; //年收入
+        private Integer remark_condition; //条件备注
+        private String is_married; //是否结婚
+        private String source_from; //来源
+        private String mortgages; //条件信息
+        private String education; //学历
+        private String profession; //职业
+    }
+
+
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit HeFeiShenDaiCreditService qualityCheck begin...userId:{}",userInfo.getUserId());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject config = JSONObject.parseObject(configJson);
+            log.info("合肥盛代对接参数:{}", JSONObject.toJSONString(config));
+            String Phone_md5=(userInfo.getPhoneMd5() == null ? Md5Util.encoderByMd5(userInfo.getUserMobile()) : userInfo.getPhoneMd5());
+            String url = config.getString("checkUrl")+Phone_md5;
+            log.info("credit qualityCheck HeFeiShenDaiCreditService request userId:{}, url:{}, CheckInfo:{}",userInfo.getUserId(), url, Phone_md5);
+            String response = null;
+            try{
+                response =httpRestTemplate.restTemplate().getForObject(url, String.class);
+            }catch (Exception e){
+                log.error("合肥盛代准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck HeFeiShenDaiCreditService response userId:{}, result:{}",userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(),product.getPlanName());
+            }
+            JSONObject jsonObject=JSONObject.parseObject(response);
+            log.info("credit qualityCheck HeFeiShenDaiCreditService response md5Phone:{}, jsonObject:{}",userInfo.getUserId(), jsonObject);
+            if (jsonObject == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            if (jsonObject.getInteger("code")==0&&jsonObject.getString("data").equals("0")) {
+                return DataVo.success(0, "合肥盛代撞库成功", product.getPlanId());
+            } else {
+                return DataVo.fail(1, "合肥盛代撞库失败,请联系系统管理员", product.getPlanId());
+            }
+        } catch (Exception e) {
+            log.error("合肥盛代撞库失败", e);
+            return DataVo.fail(1, "合肥盛代撞库失败,请联系系统管理员", product.getPlanId());
+        }
+    }
+
+
+}

+ 100 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/HeZeRongXinCreditService.java

@@ -0,0 +1,100 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * @Author Liu Tao
+ * @Date 2023 09 21 15 30
+ * 菏泽融信API
+ **/
+@Slf4j
+@Service
+public class HeZeRongXinCreditService implements LoanDockingApi {
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+
+    @Override
+    public ServerCodeEnums  getType() {
+        return ServerCodeEnums.HeZeRongXin;
+    }
+    @Data
+    private static class CheckInfo{
+        private String mobile_md5;//md5 的手机号
+    }
+    @Data
+    private static class ApplyInfo{
+        private String name; //姓名
+        private String mobile; //11位手机号
+        private Integer sex;//姓名
+        private Integer loan_limit;//额度 (比如: 100000,单位:元)
+        private Integer room;//是否有房产(1:有  0:无)
+        private Integer car;//是否有车产( 1:有  0:无)
+        private Integer accumulation;//是否有公积金 ( 1:有  0:无)
+        private Integer social;//是否有社保 ( 1:有  0:无 )
+        private Integer policy;//是否有保单 (  1:有  0:无 )
+        private Integer business;//是否有营业执照 ( 1:有  0:无 )
+        private Integer issued;//是否有打卡工资 ( 1:有  0:无 )
+        private Integer enterprise;//是否有企业纳税 (  1:有  0:无 )
+        private Integer credit;//是否有信用卡 (  1:有  0:无 )
+    }
+
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit HeZeRongXinCreditService qualityCheck begin...userId:{}",userInfo.getUserId());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject config = JSONObject.parseObject(configJson);
+            log.info("菏泽融信对接参数:{}", JSON.toJSONString(config));
+            CheckInfo checkInfo = new CheckInfo();
+            String phoneMd5 = userInfo.getPhoneMd5() == null ? Md5Util.encoderByMd5(userInfo.getUserMobile()) : userInfo.getPhoneMd5();
+            checkInfo.setMobile_md5(phoneMd5);
+            String checkUrl = config.getString("checkUrl");
+            String url=checkUrl+"?company="+config.getInteger("checkCompany")+"&mobile_md5="+checkInfo.getMobile_md5();
+            log.info("credit qualityCheck HeZeRongXinCreditService request userId:{}, url:{}, CheckInfo:{}",userInfo.getUserId(), url, checkInfo);
+            String response = null;
+            try{
+                response =httpRestTemplate.restTemplate().postForObject(url,checkInfo, String.class);
+            }catch (Exception e){
+                log.error("菏泽融信准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck HeZeRongXinCreditService response userId:{}, result:{}",userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(),product.getPlanName());
+            }
+            JSONObject jsonObject=JSONObject.parseObject(response);
+
+            if (jsonObject == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            if (jsonObject.getInteger("code") == 0) {
+                return DataVo.success(0, "菏泽融信撞库成功", product.getPlanId());
+            } else {
+                return DataVo.fail(1, "菏泽融信撞库失败,请联系系统管理员", product.getPlanId());
+            }
+        } catch (Exception e) {
+            log.error("菏泽融信撞库失败", e);
+            return DataVo.fail(1, "菏泽融信撞库失败,请联系系统管理员", product.getPlanId());
+        }
+
+    }
+
+
+}

+ 122 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/HengYangJiuZhenCreditService.java

@@ -0,0 +1,122 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.stereotype.Component;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import javax.annotation.Resource;
+import java.util.Collections;
+
+/**
+ * @Author zjc
+ * @Date 2024 07 17 14 53
+ **/
+@Slf4j
+@Component
+public class HengYangJiuZhenCreditService implements LoanDockingApi {
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+
+
+    @Override
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.HengYangJiuZhen;
+    }
+
+    @Data
+    private static class CheckInfo{
+        private String phone;
+        private String source;
+        private String city;
+    }
+
+    @Data
+    private static class ApplyInfo{
+        private String qdName;//渠道ID
+        private String name;//姓名
+        private String phone;//手机号
+        private Integer price;//贷款金额
+        private Integer house;//是否有房,1有,0无
+        private Integer car;//是否有⻋,1有,0无
+        private Integer insurance;//是否有寿险,1有,0无
+        private Integer fund;//是否有公积⾦,1有,0无
+        private Integer socital;//是否有社保,1有,0无
+        private String city;//所在城市
+
+        private Integer xyk;//信用卡
+        private Integer wld;
+        private Integer qyns;
+        private Integer df;
+        private String source;
+        private Integer age;
+        private Integer loan_periods;//
+        private Integer business_license;//营业执照(0无1有)
+
+
+    }
+
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+//            log.info("credit YunHaiLianDongCreditService qualityCheck begin...userId:{}", userInfo.getUserId());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject config = JSONObject.parseObject(configJson);
+
+            String url = config.getString("checkUrl");
+
+            MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
+            params.put("phone", Collections.singletonList(userInfo.getPhoneMd5()));
+            params.put("source", Collections.singletonList(config.getString("source")));
+            params.put("city", Collections.singletonList(userInfo.getCityAllName()));
+            HttpHeaders headers = new HttpHeaders();
+            headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+            HttpEntity<MultiValueMap<String, String>> httpEntity = new HttpEntity<>(params, headers);
+
+
+            log.info("credit qualityCheck HengYangJiuZhenCreditService request userId:{}, url:{}, params:{}", userInfo.getUserId(), url, params);
+            String response = null;
+            try {
+//                response =getRestTemplate().postForObject(url,checkInfo, String.class);
+                response = httpRestTemplate.restTemplate().postForEntity(url, httpEntity, String.class).getBody();
+            } catch (Exception e) {
+                log.error("衡阳玖臻准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck HengYangJiuZhenCreditService response userId:{}, result:{}", userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            JSONObject jsonObject = JSONObject.parseObject(response);
+//            log.info("credit qualityCheck YunHaiLianDongCreditService response userId:{}, jsonObject:{}", userInfo.getUserId(), jsonObject);
+            if (jsonObject == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            if (jsonObject.getInteger("status") == 200) {
+                return DataVo.success(0, "衡阳玖臻撞库成功", product.getPlanId());
+            } else {
+                return DataVo.fail(1, "衡阳玖臻撞库失败,请联系系统管理员", product.getPlanId());
+            }
+        } catch (Exception e) {
+            log.error("衡阳玖臻撞库失败", e);
+            return DataVo.fail(1, "衡阳玖臻撞库失败,请联系系统管理员", product.getPlanId());
+        }
+    }
+
+
+
+}

+ 149 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/HengaiCreditService.java

@@ -0,0 +1,149 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.core.env.Environment;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+/**
+ * @Descrption
+ * @Author: chend
+ * @Date: 2022/12/5
+ * @Version V1.0
+ **/
+@Service
+@Slf4j
+public class HengaiCreditService implements LoanDockingApi {
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+
+
+    private final String qualityCheckPathTest = "/api/source/test_filter";
+
+    private final String qualityCheckPathProd = "/api/source/filter";
+
+    private final String applyPathTest = "/api/source/test_post_customer";
+
+    private final String applyPathProd = "/api/source/post_customer";
+
+    private final String devUrl = "http://apitest.shlyxxjs.com";
+
+    private final String prodUrl = "https://api.shlyxxjs.com";
+
+    @Resource
+    private Environment env;
+    @Override
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.HengAi;
+    }
+
+    @Data
+    private static class CheckInfo {
+        private int source_code;
+
+        private int timestamp;
+
+        private String access_key;
+
+        private String md5_phone;
+
+
+    }
+
+    @Data
+    private static class ResultHa {
+        private int errcode;
+        private String msg;
+    }
+
+    @Data
+    private static class HengaiPushData {
+        private String name;
+        private String phone;
+        private Integer intention_amount;//意向金额(额度)	 单位 元 例如(50000)
+        private Integer age; //年龄(未知传0)
+        private String city;
+        private Integer credit_score; //芝麻信用分
+        private Integer has_social_security; //是否有社保
+        private Integer has_provident_fund;      //是否有公积金	Int 1有 2无
+        private Integer has_car;  //是否有车	Int 1有 2无
+        private Integer has_house;  //是否有房	Int 1有 2无
+        private Integer has_business_license;  //是否有营业执照	Int 1有 2无
+        private Integer has_policy;  //是否有保单	Int 1有 2无
+        private Integer has_credit_card;  //是否有信用卡	Int 1有 2无
+        private Integer has_jdbaitiao;  //是否有京东白条	Int 1有 2无
+        private Integer has_weilidai;  //是否有微粒贷	Int 1有 2无
+        private Integer has_huabei;  //是否有花呗	Int 1有 2无
+        private String desc;  //备注	String
+    }
+
+
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit HengaiCreditService qualityCheck begin...userId:{}", userInfo.getUserId());
+//            XdProductJointConfig xdProductJointConfig = xdProductJointConfigMapper.selectById(product.getJointType());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject config = JSONObject.parseObject(configJson);
+            log.info("恒爱对接参数:{}", JSON.toJSONString(config));
+            CheckInfo checkInfo = new CheckInfo();
+            String phoneMd5 = userInfo.getPhoneMd5() == null ? Md5Util.encoderByMd5(userInfo.getUserMobile()) : userInfo.getPhoneMd5();
+            checkInfo.setMd5_phone(phoneMd5);
+            checkInfo.setSource_code(config.getIntValue("channelSource"));
+            String timestamp = String.valueOf(new Date().getTime() / 1000);
+            checkInfo.setTimestamp(Integer.valueOf(timestamp));
+            String accessKey = config.getIntValue("channelSource") + config.getString("key") + timestamp;
+            checkInfo.setAccess_key(Md5Util.encoderByMd5(accessKey));
+
+            String proFile = env.getActiveProfiles()[0];
+            String url;
+            if (proFile.indexOf("prod") >= 0) {
+                url = config.getString("url") + qualityCheckPathProd;
+            } else {
+                url = config.getString("url") + qualityCheckPathTest;
+            }
+            log.info("credit qualityCheck HengaiCreditService request userId:{}, url:{}, CheckInfo:{}", userInfo.getUserId(), url, checkInfo);
+            ResultHa response = null;
+            try {
+                HttpHeaders headers = new HttpHeaders();
+                headers.setContentType(MediaType.valueOf("application/json;UTF-8"));
+                HttpEntity<CheckInfo> entity = new HttpEntity(checkInfo, headers);
+                response = httpRestTemplate.restTemplate().postForObject(url, entity, ResultHa.class);
+            } catch (Exception e) {
+                log.error("恒爱准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck HengaiCreditService response userId:{}, result:{}", userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            return 0 == response.getErrcode() ? DataVo.success(0, "恒爱撞库成功", product.getPlanId())
+                    : DataVo.fail(response.getMsg(), product.getPlanId());
+
+        } catch (Exception e) {
+            log.error("恒爱撞库失败", e);
+            return DataVo.fail(1, "恒爱撞库失败,请联系系统管理员", product.getPlanId());
+        }
+    }
+
+
+}

+ 105 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/HongShengJinFuCreditService.java

@@ -0,0 +1,105 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.stereotype.Service;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import javax.annotation.Resource;
+
+
+/**
+ * @Author Liu Tao
+ * @Date 2024 09 03 09 49
+ **/
+@Slf4j
+@Service
+public class HongShengJinFuCreditService implements LoanDockingApi {
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+
+
+    @Override
+    public ServerCodeEnums  getType() {
+        return ServerCodeEnums.HongShengJinFu;
+    }
+
+    @Data
+    private static class CheckInfo {
+        private String md5;// 手机号(32位MD5加密字符串)
+    }
+
+    @Data
+    private static class ApplyInfo {
+        private String name;//客户姓名
+        private String sex; //性别(“男”或“女”)
+        private String mobile; //手机号
+        private String check_num;//验证码(无则留空)
+        private Integer money;//贷款额度(如:20,即单位为万)
+        private String city; //城市不包含市
+        private Integer age;//年龄
+        private String shebao; //社保(“有”或“无”)
+        private String gongjijin; //公积金(“有”或“无”)
+        private String credit_card;//信用卡(“有”或“无”)
+        private String baodan_is;//保单(“有”或“无”)
+        private String license; //营业执照(“有”或“无”)
+        private String house;//房(“有”或“无”)
+        private String car; //是否有车(“有”或“无”)
+        private String isbankpay; //银行代发(“是”或“否”)
+        private String source;//(必填)贷款来源(固定值,具体需要和对接人确定)
+        private String meiti;//媒体名称(投放媒体名称,第三方私下内容以便其对数据分析)
+        private String remark;
+    }
+
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject config = JSONObject.parseObject(configJson);
+            log.info("弘盛金服对接参数:{}", JSONObject.toJSONString(config));
+            String phoneMd5 = userInfo.getPhoneMd5() == null ? Md5Util.encoderByMd5(userInfo.getUserMobile()) : userInfo.getPhoneMd5();
+            String url = config.getString("checkUrl");
+            log.info("弘盛金服开始撞库,请求地址:{},md5:{}", url, phoneMd5);
+            MultiValueMap<String, String> params= new LinkedMultiValueMap<String, String>();
+            params.add("md5", phoneMd5);
+            String response = null;
+            try{
+                HttpHeaders headers = new HttpHeaders();
+                headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+                HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(params, headers);
+                response = httpRestTemplate.restTemplate().postForEntity(url, requestEntity, String.class).getBody();
+            } catch (Exception e) {
+                log.error("弘盛金服准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("弘盛金服撞库响应:{},md5:{}", response, phoneMd5);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            JSONObject jsonObject = JSONObject.parseObject(response);
+            if (jsonObject.getString("code").equals("12")) {
+                return DataVo.success(0, "弘盛金服撞库成功", product.getPlanId());
+            } else {
+                return DataVo.fail(1, "弘盛金服撞库失败,请联系系统管理员", product.getPlanId());
+            }
+        } catch (Exception e) {
+            return DataVo.fail(1, "弘盛金服撞库失败,请联系系统管理员", product.getPlanId());
+        }
+    }
+
+}

+ 117 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/HongXinPuHuiCreditService.java

@@ -0,0 +1,117 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpResponse;
+import org.apache.http.util.EntityUtils;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Author Liu Tao
+ * @Date 2024 07 04 13 49
+ **/
+@Slf4j
+@Service
+public class HongXinPuHuiCreditService implements LoanDockingApi {
+
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+
+
+
+    @Override
+    public ServerCodeEnums  getType() {
+        return ServerCodeEnums.HongXinPuHui;
+    }
+
+    @Data
+    private static class CheckInfo{
+        private String mobile_md5;//md5加密后的手机号,32位小写
+        private Integer company;//指定推送商户id,当前默认都传“3
+        private Integer is_encrypt;//是否加密,1:是  0:否
+    }
+
+
+    @Data
+    private static class ApplyInfo {
+        private String name;//姓名
+        private String mobile;//加密字符串
+        private Integer channel;//渠道来源(固定传16)
+        private Integer company;//商户id,默认传“3”
+        private Integer sex;//性别 (1男 2女)
+        private Integer loan_limit;//额度 (比如: 100000,单位:元)
+        private Integer room;//是否有房产(1:有  0:无)
+        private Integer car;//是否有车产( 1:有  0:无)
+        private Integer accumulation;//是否有公积金 ( 1:有  0:无)
+        private Integer social;//是否有社保 ( 1:有  0:无 )
+        private Integer policy;//是否有保单 (  1:有  0:无 )
+        private Integer business;//是否有营业执照 ( 1:有  0:无 )
+        private Integer issued;//是否有打卡工资 ( 1:有  0:无 )
+        private Integer enterprise;//是否有企业纳税 (  1:有  0:无 )
+        private Integer credit;//是否有信用卡 (  1:有  0:无 )
+        private Integer is_encrypt;//是否加密(1:是 0:否)
+    }
+
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit HongXinPuHuiCreditService qualityCheck begin...userId:{}",userInfo.getUserId());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject config = JSONObject.parseObject(configJson);
+            log.info("弘鑫普惠对接参数:{}", JSONObject.toJSONString(config));
+            CheckInfo checkInfo = new CheckInfo();
+            String phoneMd5 = userInfo.getPhoneMd5() == null ? Md5Util.encoderByMd5(userInfo.getUserMobile()) : userInfo.getPhoneMd5();
+            checkInfo.setMobile_md5(phoneMd5);
+            checkInfo.setCompany(config.getInteger("company"));
+            checkInfo.setIs_encrypt(0);
+
+            Map<String, String> requestData = new HashMap<>();
+            requestData.put("mobile_md5", String.valueOf(checkInfo.getMobile_md5()));
+            requestData.put("company", String.valueOf(checkInfo.getCompany()));
+            requestData.put("is_encrypt", String.valueOf(checkInfo.getIs_encrypt()));
+            String url = config.getString("checkUrl");
+            log.info("credit qualityCheck HongXinPuHuiCreditService request userId:{}, url:{}, CheckInfo:{}",userInfo.getUserId(), url, checkInfo);
+            JSONObject response = null;
+            try{
+                Map<String, String> head = new HashMap<>();
+                head.put("Content-Type", "application/x-www-form-urlencoded");
+                HttpResponse httpResponse = httpRestTemplate.restTemplate().postForObject(url, null, null, head, null, requestData);
+                String responseStr = EntityUtils.toString(httpResponse.getEntity());
+                response = JSONObject.parseObject(responseStr);
+            }catch (Exception e){
+                log.error("弘鑫普惠准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck HongXinPuHuiCreditService response userId:{}, result:{}",userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            if (response.getInteger("code")==0) {
+                return DataVo.success(0, "弘鑫普惠撞库成功", product.getPlanId());
+            } else {
+                return DataVo.fail(1, "弘鑫普惠撞库失败,请联系系统管理员", product.getPlanId());
+            }
+        } catch (Exception e) {
+            log.error("弘鑫普惠撞库失败", e);
+            return DataVo.fail(1, "弘鑫普惠撞库失败,请联系系统管理员", product.getPlanId());
+        }
+
+    }
+
+
+}

+ 107 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/HuirongCrmCreditService.java

@@ -0,0 +1,107 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.Md5Util;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.http.HttpResponse;
+import org.apache.http.util.EntityUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+/**
+ * 惠融crmAPI接单
+ */
+@Service
+@Slf4j
+public class HuirongCrmCreditService implements LoanDockingApi {
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+    @Override
+    public ServerCodeEnums getType() {
+        return ServerCodeEnums.HUIRONG_CRM;
+    }
+
+    @Data
+    public static class CheckData {
+        private String chanelCode;
+        private String secretKey;
+        private String attackPhone;
+        private String merchantNo;
+    }
+
+    @Data
+    private static class ResultHt {
+        private Integer code;
+        private String msg;
+        private JSONObject data;
+    }
+
+
+
+    /**
+     * 撞库 实现单个用户撞库
+     *
+     * @return {"channelSource":"birong","url":"http://apitest.shlyxxjs.com","key":"mgjr@3des123#dhjr9763089"}
+     */
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit HuirongCrmCreditService qualityCheck begin...userId:{}", userInfo.getUserId());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            JSONObject huirongJointDTO = JSON.parseObject(apiInfo.getThreeSystemConfig());
+            String url = huirongJointDTO.getString("checkUrl");
+            CheckData checkData = new CheckData();
+            if(StringUtils.isNotBlank(userInfo.getUserMobile())){
+                checkData.setAttackPhone(Md5Util.encoderByMd5(userInfo.getUserMobile()));
+            }else{
+                checkData.setAttackPhone(userInfo.getPhoneMd5());
+            }
+
+            checkData.setSecretKey(huirongJointDTO.getString("secretKey"));
+            checkData.setChanelCode(huirongJointDTO.getString("chanelCode"));
+            checkData.setMerchantNo(product.getBid());
+
+            checkData.setMerchantNo(product.getBid());
+            String requestJson = JSON.toJSONString(checkData);
+            log.info("credit qualityCheck HuirongCrmCreditService request userId:{}, url:{},requestParam:{}", userInfo.getUserId(), url, requestJson);
+            ResultHt response = null;
+            try {
+                Map<String, String> head = new HashMap<>();
+                head.put("Content-Type", "application/json");
+                HttpResponse httpResponse = httpRestTemplate.restTemplate().postForObject(url, null, null, head, null, requestJson);
+                String responseStr = EntityUtils.toString(httpResponse.getEntity());
+                response = JSONObject.parseObject(responseStr, ResultHt.class);
+            } catch (Exception e) {
+                log.error("惠融crm准入异常,异常信息:{}", e.getMessage(), e);
+            }
+            log.info("credit qualityCheck HuirongCrmCreditService response userId:{}, result:{}", userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+            JSONObject data = response.getData();
+            Integer status = data.getInteger("status");
+            return Objects.equals(0, status) ? DataVo.success(0, "惠融crm撞库成功", product.getPlanId())
+                    : DataVo.fail(response.getMsg(), product.getPlanId());
+        } catch (Exception e) {
+            log.error("惠融crm撞库失败", e);
+            return DataVo.fail(1, "惠融crm撞库失败,请联系系统管理员", product.getPlanId());
+        }
+
+    }
+
+}

+ 133 - 0
egress-gateway-service-app/src/main/java/com/hrsk/cloud/eg/app/threedocking/impl/HuixinCreditService.java

@@ -0,0 +1,133 @@
+package com.hrsk.cloud.eg.app.threedocking.impl;
+import com.alibaba.fastjson2.JSONObject;
+import com.hrsk.cloud.eg.app.constant.ServerCodeEnums;
+import com.hrsk.cloud.eg.app.threedocking.LoanDockingApi;
+import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
+import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
+import com.hrsk.cloud.eg.infrastructure.config.client.config.RetryRestTemplate;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
+import com.hrsk.cloud.eg.infrastructure.utils.StringDecodeUtils;
+import com.hrsk.cloud.eg.vo.response.DataVo;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+/**
+ * @Descrption
+ * @Author: chend
+ * @Date: 2023/5/15
+ * @Version V1.0
+ **/
+@Component
+@Slf4j
+public class HuixinCreditService implements LoanDockingApi {
+    @Resource
+    private ProductBusinessApiInfoService apiInfoService;
+
+    @Resource
+    private RetryRestTemplate httpRestTemplate;
+    private final String qualityCheckPath = "pushdata.ashx?type=CheckMobilePhone";
+
+    private final String applyPath = "pushdata.ashx";
+
+
+    @Override
+    public ServerCodeEnums  getType() {
+        return ServerCodeEnums.Huixin;
+    }
+
+    @Data
+    public static class HuiXinJointDTO {
+
+        private String url;
+
+        private String merNo;
+
+        private String encKey;
+
+        private String sourceType;
+    }
+
+
+    @Data
+    public static class CheckData {
+        private String merNo;
+        private String params;
+    }
+
+    @Data
+    private static class CheckInfo {
+        private String phoneMd5;
+
+        private String sign;
+
+
+    }
+
+    @Data
+    private static class ResultHt {
+        private String code;
+        private String msg;
+        private boolean status;
+    }
+
+
+    /**
+     * 撞库 实现单个用户撞库
+     *
+     * @param userInfo
+     * @param product
+     * @return {"channelSource":"birong","url":"http://apitest.shlyxxjs.com","key":"mgjr@3des123#dhjr9763089"}
+     */
+    public DataVo qualityCheck(UserInBaseInfoDto userInfo, PlanDto product) {
+        try {
+            log.info("credit HuixinCreditService qualityCheck begin...userId:{}", userInfo.getUserId());
+//            XdProductJointConfig xdProductJointConfig = xdProductJointConfigMapper.selectById(product.getJointType());
+            ProductBusinessApiInfoDo apiInfo = apiInfoService.getById(product.getApiId());
+            String configJson = apiInfo.getThreeSystemConfig();
+            JSONObject huiXinJointDTO = JSONObject.parseObject(configJson);
+            log.info("汇鑫对接参数:{}", JSONObject.toJSONString(huiXinJointDTO));
+
+            String phoneMd5 = userInfo.getPhoneMd5();
+            JSONObject param = new JSONObject() {{
+                put("phoneMd5", phoneMd5);
+            }};
+
+            String url = huiXinJointDTO.getString("url") + qualityCheckPath;
+            log.info("credit qualityCheck HuixinCreditService request userId:{}, url:{}, data:{}", userInfo.getUserId(), url, param);
+
+            ResponseEntity<String> response = null;
+            try {
+                HttpHeaders headers = new HttpHeaders();
+                headers.setContentType(MediaType.valueOf("application/json;UTF-8"));
+                HttpEntity<ResultHt> entity = new HttpEntity(param, headers);
+                response = httpRestTemplate.restTemplate().postForEntity(url, entity, String.class);
+            } catch (Exception e) {
+                log.error("汇鑫准入异常,异常信息:{}", e.getMessage(), e);
+            }
+
+            log.info("credit qualityCheck HuixinCreditService response userId:{}, result:{}", userInfo.getUserId(), response);
+            if (response == null) {
+                return DataVo.timeout(product.getPlanId(), product.getPlanName());
+            }
+
+            JSONObject jsonObject = JSONObject.parseObject(StringDecodeUtils.decodeUnicode(response.getBody()));
+
+            return Objects.equals(200, jsonObject.getInteger("code")) && Objects.equals("true", jsonObject.getString("status")) ?
+                    DataVo.success(0, "汇鑫撞库成功", product.getPlanId())
+                    : DataVo.fail(jsonObject.getString("msg"), product.getPlanId());
+        } catch (Exception e) {
+            log.error("汇鑫撞库失败", e);
+            return DataVo.fail(1, "汇鑫撞库失败,请联系系统管理员", product.getPlanId());
+        }
+
+    }
+}

+ 501 - 0
egress-gateway-service-infrastructure/src/main/java/com/hrsk/cloud/eg/infrastructure/utils/StringDecodeUtils.java

@@ -0,0 +1,501 @@
+package com.hrsk.cloud.eg.infrastructure.utils;
+
+
+import org.apache.commons.lang3.ArrayUtils;
+
+import java.lang.reflect.Array;
+import java.lang.reflect.Method;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.regex.Pattern;
+
+/**
+ * 字符操作公用类
+ */
+public class StringDecodeUtils {
+
+    /**
+     * 将字符串后几位替换成另一个值
+     *
+     * @param str        源字符串
+     * @param lastStr    要替换的字符串
+     * @param lastLength 需要替换的源字符串后几位
+     * @return
+     */
+    public static String replaceLast(String str, String lastStr, int lastLength) {
+        if (notNullAndEmpty(str) && lastStr != null && str.length() >= lastLength) {
+            str = str.substring(0, str.length() - lastLength) + lastStr;
+        }
+        return str;
+    }
+
+    /**
+     * 字符空NULL判断
+     *
+     * @param @param  obj
+     * @param @return 设定文件
+     * @return Boolean 返回类型
+     * @throws
+     * @Title: isNullEmpty
+     * @Description: TODO
+     */
+    public static Boolean notNullAndEmpty(Object obj) {
+        return (obj != null && !"".equals(obj.toString()) && !"null".equalsIgnoreCase(obj.toString()));
+    }
+
+    /**
+     * unicode转汉字
+     *
+     * @param @param  theString
+     * @param @return 设定文件
+     * @return String 返回类型
+     * @throws
+     * @Title: decodeUnicode
+     * @Description: TODO
+     */
+    public static String decodeUnicode(String theString) {
+        char aChar;
+        int len = theString.length();
+        StringBuffer outBuffer = new StringBuffer(len);
+        for (int x = 0; x < len; ) {
+            aChar = theString.charAt(x++);
+            if (aChar == '\\') {
+                aChar = theString.charAt(x++);
+                if (aChar == 'u') {
+                    int value = 0;
+                    for (int i = 0; i < 4; i++) {
+                        aChar = theString.charAt(x++);
+                        switch (aChar) {
+                            case '0':
+                            case '1':
+                            case '2':
+                            case '3':
+                            case '4':
+                            case '5':
+                            case '6':
+                            case '7':
+                            case '8':
+                            case '9':
+                                value = (value << 4) + aChar - '0';
+                                break;
+                            case 'a':
+                            case 'b':
+                            case 'c':
+                            case 'd':
+                            case 'e':
+                            case 'f':
+                                value = (value << 4) + 10 + aChar - 'a';
+                                break;
+                            case 'A':
+                            case 'B':
+                            case 'C':
+                            case 'D':
+                            case 'E':
+                            case 'F':
+                                value = (value << 4) + 10 + aChar - 'A';
+                                break;
+                            default:
+                                throw new IllegalArgumentException(
+                                        "Malformed      encoding.");
+                        }
+
+                    }
+                    outBuffer.append((char) value);
+                } else {
+                    if (aChar == 't') {
+                        aChar = '\t';
+                    } else if (aChar == 'r') {
+                        aChar = '\r';
+                    } else if (aChar == 'n') {
+                        aChar = '\n';
+                    } else if (aChar == 'f') {
+                        aChar = '\f';
+                    }
+                    outBuffer.append(aChar);
+                }
+            } else {
+                outBuffer.append(aChar);
+            }
+
+        }
+        return outBuffer.toString();
+
+    }
+
+    /**
+     * 空值检查
+     *
+     * @param pInput 要检查的字符串
+     * @return boolean 返回检查结果,但传入的字符串为空的场合,返回真
+     */
+    public static boolean isNull(Object pInput) {
+        // 判断参数是否为空或者’’
+        if (pInput == null || "’’".equals(pInput) || "".equals(pInput)
+                || "null".equals(pInput) || "\"null\"".equals(pInput)) {
+            return true;
+        } else if ("java.lang.String".equals(pInput.getClass().getName())) {
+            // 判断传入的参数的String类型的
+            // 替换各种空格
+            String tmpInput = Pattern.compile("[\\r|\\n|\\u3000]").matcher(
+                    (String) pInput).replaceAll("");
+            // 匹配空
+            return Pattern.compile("^(\\s)*$").matcher(tmpInput).matches();
+        } else {
+            // 方法类
+            Method method = null;
+            try {
+                // 访问传入参数的size方法
+                method = pInput.getClass().getMethod("size");
+                // 判断size大小
+                // size为0的场合
+                if (Integer.parseInt(String.valueOf(method.invoke(pInput))) == 0) {
+                    return true;
+                } else {
+                    return false;
+                }
+            } catch (Exception e) {
+                try {
+                    // 访问传入参数的getItemCount方法
+                    method = pInput.getClass().getMethod("getItemCount");
+                    // 判断size大小
+                    // getItemCount为0的场合
+                    if (Integer.parseInt(String.valueOf(method.invoke(pInput))) == 0) {
+                        return true;
+                    } else {
+                        return false;
+                    }
+                } catch (Exception ex) {
+                    try {
+                        // 判断传入参数的长度
+                        // 长度为0的场合
+                        if (Array.getLength(pInput) == 0) {
+                            return true;
+                        } else {
+                            return false;
+                        }
+                    } catch (Exception exx) {
+                        try {
+                            // 访问传入参数的hasNext方法
+                            method = Iterator.class.getMethod("hasNext");
+                            // 转换hasNext的值
+                            return !Boolean.valueOf(String.valueOf(method
+                                    .invoke(pInput))) ? true : false;
+                        } catch (Exception exxx) {
+                            // 以上场合不满足返回假
+                            return false;
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    public static Long obj2Long(Object val) {
+        if (notNullAndEmpty(val)) {
+            return Long.valueOf(val.toString().trim());
+        } else {
+            return 0L;
+        }
+    }
+
+    public static Float obj2Float(Object val) {
+        if (notNullAndEmpty(val)) {
+            return Float.parseFloat(val.toString().trim());
+        } else {
+            return 0F;
+        }
+    }
+
+    /**
+     * Object to Double
+     *
+     * @return Double
+     * @throws Exception
+     * @author 刘滔
+     * @see
+     */
+    public static Double obj2Dou(Object val) {
+        if (notNullAndEmpty(val)) {
+            return Double.parseDouble(val.toString().trim());
+        } else {
+            return 0d;
+        }
+    }
+
+    /**
+     * Object to int
+     *
+     * @return Integer
+     * @throws Exception
+     * @author 刘滔
+     * @see
+     */
+    public static int obj2Int(Object val) {
+        if (notNullAndEmpty(val)) {
+            return Integer.parseInt(val.toString().trim());
+        } else {
+            return 0;
+        }
+    }
+
+    /**
+     * Object to String
+     *
+     * @return String
+     * @throws Exception
+     * @author 刘滔
+     * @see
+     */
+    public static String obj2Str(Object val) {
+        if (notNullAndEmpty(val)) {
+            return val.toString().trim();
+        } else {
+            return "";
+        }
+    }
+
+    /**
+     * Object to boolean
+     *
+     * @param Object
+     * @return boolean
+     * @throws Exception
+     * @author 刘滔
+     * @see
+     */
+//	 public static boolean obj2Bln(Object val){
+//	 if(org.apache.commons.lang.xwork.StringUtils.equalsIgnoreCase("1",
+//	 val.toString().trim())){
+//	 return true;
+//	 }else{
+//	 return false;
+//	 }
+//	 }
+
+    /**
+     * 返回唯一图片名称
+     *
+     * @param @return 设定文件
+     * @return String 返回类型
+     * @throws
+     * @Title: createImgName
+     */
+    public static String createImgName() {
+        Random r = new Random();
+        String name = new SimpleDateFormat("yyyyMMddHHmmssSSS")
+                .format(new Date())
+                + r.nextInt(100000) + ".jpg";
+        return name;
+    }
+
+    /**
+     * 获取文件后缀
+     *
+     * @param fileName
+     * @return
+     * @author 刘滔
+     * @see
+     */
+    public static String getExtention(String fileName) {
+        if (isNull(fileName)) {
+            return "";
+        }
+        int pos = fileName.lastIndexOf(".");
+        return fileName.substring(pos);
+    }
+
+    /**
+     * 返回唯一名称字符串
+     *
+     * @param @return 设定文件
+     * @return String 返回类型
+     * @throws
+     * @Title: createName
+     */
+    public static String createName() {
+        Random r = new Random();
+        String name = new SimpleDateFormat("yMdHHssSSS").format(new Date());
+        return name;
+    }
+
+    /**
+     * 将两个数组合并成一个数组
+     *
+     * @param first
+     * @param second
+     * @return
+     * @author 刘滔
+     * @see
+     */
+    public static String[] concat(String[] first, String[] second) {
+        if (isNull(first) && isNull(second)) {
+            return null;
+        }
+        if (isNull(first) && !isNull(second)) {
+            return second;
+        }
+        if (!isNull(first) && isNull(second)) {
+            return first;
+        }
+        String[] both = (String[]) ArrayUtils.addAll(first, second);
+        return both;
+    }
+
+    /**
+     * 字符串数组合并
+     *
+     * @param first
+     * @param second
+     * @return
+     * @author 刘滔
+     * @see
+     */
+    public static String[] concat2(String[] first, String[] second) {
+        // if (isNull(first) && isNull(second)) {
+        // return null;
+        // }
+        // if(isNull(first) && !isNull(second)) {
+        // return second;
+        // }
+        // if(!isNull(first) && isNull(second)) {
+        // return first;
+        // }
+        String[] both = new String[first.length + second.length];
+        System.arraycopy(first, 0, both, 0, first.length);
+        System.arraycopy(second, 0, both, first.length, second.length);
+        return both;
+    }
+
+    /**
+     *
+     * 可将多个数组合并
+     *
+     * @param first
+     * @param rest
+     * @return
+     * @author 刘滔
+     * @see
+     */
+    // public static T[] concatAll(T[] first, T[]... rest) {
+    // int totalLength = first.length;
+    // for (T[] array : rest) {
+    // totalLength += array.length;
+    // }
+    // T[] result = Arrays.copyOf(first, totalLength);
+    // int offset = first.length;
+    // for (T[] array : rest) {
+    // System.arraycopy(array, 0, result, offset, array.length);
+    // offset += array.length;
+    // }
+    // return result;
+    // }
+
+    /**
+     * 将路径中的斜杠统一
+     *
+     * @param path
+     * @author 刘滔
+     * @see
+     */
+    public static String replacePath(String path) {
+        if (path == "" || path == null) {
+            return "";
+        }
+        char[] chars = path.toCharArray();
+        StringBuffer sbStr = new StringBuffer(256);
+        int len = chars.length;
+        for (int i = 0; i < len; i++) {
+            if ('\\' == chars[i]) {
+                sbStr.append('/');
+            } else {
+                sbStr.append(chars[i]);
+            }
+        }
+        return sbStr.toString();
+    }
+
+    /**
+     * 将字符串转换成数组
+     *
+     * @param str
+     * @return
+     * @author 刘滔
+     * @see
+     */
+    public static String[] toArray(String str) {
+        if (isNull(str)) {
+            return null;
+        }
+        StringTokenizer sTokenizer = new StringTokenizer(str, ",");
+        List<String> sList = new ArrayList<String>();
+        while (sTokenizer.hasMoreTokens()) {
+            sList.add(sTokenizer.nextToken());
+        }
+        int size = sList.size();
+        String[] result = new String[size];
+        for (int i = 0; i < size; i++) {
+            result[i] = sList.get(i);
+        }
+        return result;
+    }
+    /**
+     * 将List<Map>转为x,y轴的图表二维数组,Map的key必须为VAL_X和VAL_Y
+     * @Title: listMapToArray
+     * @Description: TODO
+     * @param @param list
+     * @param @return    设定文件
+     * @return Object[][]    返回类型
+     * @throws
+     */
+//	public static Object[][] listMapToArray(List<Map> list,String type){
+//		Object[][] xy=new Object[list.size()][2];
+//		for (int i = 0; i < list.size(); i++) {
+//			Map m=list.get(i);
+//			if(type=="d"||type.equals("d")){
+//				Date d=new Date(m.get("VAL_X").toString());
+//				String strd=DateUtils.formatDate(d, DateUtils.YYYYMMDDHHMMSSPATTERN);
+//				strd=DateUtils.addHour(strd, 8);
+//				xy[i][0]=DateUtils.parseDate(strd).getTime();
+//			}else{
+//				xy[i][0]=m.get("VAL_X");
+//			}
+//			xy[i][1]=m.get("VAL_Y");
+//		}
+//		return xy;
+//	}
+
+    /**
+     * 格式化时间
+     *
+     * @param date
+     * @param format
+     * @return
+     */
+    public static String getFormDate(Date date, String format) {
+        if (null == date) {
+            return null;
+        }
+        SimpleDateFormat sf = new SimpleDateFormat(format);
+        return sf.format(date);
+
+    }
+	
+	/*public static void main(String[] args) {
+//		String strs = "25";
+//		String[] str = toArray(strs);
+//		int gidLen = str.length;
+//		Long[] gids = new Long[gidLen];
+//		for (int i = 0; i < gidLen; i++) {
+//			log.info(">>> " + StringUtils.obj2Long(str[i]));
+//			gids[i] = StringUtils.obj2Long(str[i]);
+//			log.info(gids[i]);
+//		}
+		Date d=new Date();
+		log.info(d.getTime());
+		// for (String string : str) {
+		// log.info(obj2Long(25));
+		// }
+
+	}*/
+
+}

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio