فهرست منبع

add openapi rsa 对接撞库

GITZYY 9 ماه پیش
والد
کامیت
8d29c03c95

+ 2 - 0
README.md

@@ -106,3 +106,5 @@ mvn archetype:generate -DarchetypeCatalog=local
 1 http/https 统一返回信息实体DataVo
 2 spel 表达式接受并且转化所有的信息为map,map解析的结果用#root “#root” 为map 的根
 
+# eg eg_api
+1 code 编码信息 eg+前缀+'历史loan-web-api对接code值'

+ 3 - 1
egress-gateway-service-domain/src/main/java/com/hrsk/cloud/eg/domain/api/ApiFactory.java

@@ -24,7 +24,9 @@ public class ApiFactory {
     public Api createApi(ApiConfig apiConfig,Object input){
         BizPreconditions.checkArgument(apiConfig!=null,"API配置不能为空!");
         BizPreconditions.checkArgument(StringUtils.isNotBlank(apiConfig.getType()),"API配置类型不能为空!");
-        if(StringUtils.equals(ApiTypeEnums.HTTP.getType(),apiConfig.getType())){
+        if(StringUtils.equals(ApiTypeEnums.HTTP.getType(),apiConfig.getType())
+          ||StringUtils.equals(ApiTypeEnums.HTTPS.getType(), apiConfig.getType())
+         ){
             return createHttpApi((HttpApiConfig)apiConfig,input);
         }else {
             log.error("不支持的API类型:{}!",apiConfig.getType());

+ 3 - 1
egress-gateway-service-domain/src/main/java/com/hrsk/cloud/eg/domain/api/common/ApiTypeEnums.java

@@ -9,7 +9,9 @@ import lombok.Getter;
 @Getter
 public enum ApiTypeEnums {
 
-    HTTP("http","http类型");
+    HTTP("http","http类型"),
+    HTTPS("https","https类型");
+    ;
     /**
      * 类型
      */

+ 68 - 8
egress-gateway-service-infrastructure/src/main/java/com/hrsk/cloud/eg/infrastructure/business/GenerateHttpApiConfigService.java → egress-gateway-service-infrastructure/src/main/java/com/hrsk/cloud/eg/infrastructure/business/GenerateCheckIntoHttpApiConfigService.java

@@ -3,14 +3,10 @@ package com.hrsk.cloud.eg.infrastructure.business;
 import com.alibaba.fastjson2.JSONObject;
 import com.google.common.collect.Lists;
 import com.hrsk.cloud.eg.constant.BusinessPrefixEnum;
-import com.hrsk.cloud.eg.domain.api.FunctionObject;
 import com.hrsk.cloud.eg.domain.api.HttpApiConfig;
 import com.hrsk.cloud.eg.domain.api.KeyValueObject;
-import com.hrsk.cloud.eg.domain.api.ValueObject;
 import com.hrsk.cloud.eg.domain.api.common.ApiPayloadTypeEnum;
 import com.hrsk.cloud.eg.domain.api.common.ValueObjectTypeEnum;
-import com.hrsk.cloud.eg.domain.common.utils.GsonUtils;
-import com.hrsk.cloud.eg.domain.common.utils.SnowflakeIdWorker;
 import com.hrsk.cloud.eg.infrastructure.config.client.HessianUtils;
 import com.hrsk.cloud.eg.infrastructure.repository.database.entity.EgApiDo;
 import com.hrsk.cloud.eg.infrastructure.repository.database.entity.EgApiEndpointDo;
@@ -30,7 +26,7 @@ import java.util.List;
  */
 @Slf4j
 @Service
-public class GenerateHttpApiConfigService {
+public class GenerateCheckIntoHttpApiConfigService {
 
     @Resource
     private EgApiService egApiService;
@@ -50,13 +46,77 @@ public class GenerateHttpApiConfigService {
         egApiDo.setApiCode("EG:"+BusinessPrefixEnum.CHECK_INTO_PREFIX.getCode()+":HUIRONG_CRM:9");
         egApiDo.setApiName(BusinessPrefixEnum.CHECK_INTO_PREFIX.getMsg());
         egApiService.save(egApiDo);
+        JSONObject jsonObject = JSONObject.parseObject(huiRonApiConfig);
         EgApiEndpointDo egApiEndpointDo=new EgApiEndpointDo();
         egApiEndpointDo.setApiCode(egApiDo.getApiCode());
         egApiEndpointDo.setApiId(egApiDo.getId());
-        egApiEndpointDo.setApiConfig(HessianUtils.serialize(createCheckIntoBean(huiRonApiConfig)));
+        egApiEndpointDo.setApiName(jsonObject.getString("name"));
+        egApiEndpointDo.setApiConfig(HessianUtils.serialize(createHuiRonCheckIntoBean(huiRonApiConfig)));
         egApiEndpointService.save(egApiEndpointDo);
     }
 
+    /**
+     * @description: 对接我们openapiRsa文档转化
+     * @param:
+     * @return:
+     * @author zhangyy
+     * @date: 2024/9/4 10:42
+     */
+    public void  generateOpenApiRSAConfig(String openApiConfig) {
+        EgApiDo egApiDo=new EgApiDo();
+        egApiDo.setApiCode("EG:"+BusinessPrefixEnum.CHECK_INTO_PREFIX.getCode()+":OPEN_API:1");
+        egApiDo.setApiName(BusinessPrefixEnum.CHECK_INTO_PREFIX.getMsg());
+        egApiService.save(egApiDo);
+        JSONObject jsonObject = JSONObject.parseObject(openApiConfig);
+        EgApiEndpointDo egApiEndpointDo=new EgApiEndpointDo();
+        egApiEndpointDo.setApiCode(egApiDo.getApiCode());
+        egApiEndpointDo.setApiId(egApiDo.getId());
+        egApiEndpointDo.setApiName(jsonObject.getString("name"));
+        egApiEndpointDo.setApiConfig(HessianUtils.serialize(createOpenApiRsaCheckIntoBean(openApiConfig)));
+        egApiEndpointService.save(egApiEndpointDo);
+    }
+
+    /**
+     * @description: openapi Rsa 信息
+     * @author zhangyy
+     * @date 2024/9/4 10:56
+     * @version 1.0
+     */
+    private HttpApiConfig createOpenApiRsaCheckIntoBean(String param) {
+        JSONObject jsonObject=JSONObject.parseObject(param);
+        HttpApiConfig httpApiConfig = new HttpApiConfig();
+        httpApiConfig.setUrl(jsonObject.getString("openapiCheckUrl"));
+        httpApiConfig.setMethod("POST");
+        httpApiConfig.setContentType(ApiPayloadTypeEnum.APPLICATION_JSON.getCode());
+        List<KeyValueObject> headers = Lists.newArrayList();
+        KeyValueObject head=new KeyValueObject();
+        head.setType(ValueObjectTypeEnum.BASIC.getType());
+        head.setKey("Content-Type");
+        head.setValue("application/json");
+        headers.add(head);
+        httpApiConfig.setHeader(headers);
+        JSONObject body=new  JSONObject();
+        KeyValueObject attackPhone=new KeyValueObject();
+        attackPhone.setType("spel");
+        attackPhone.setValue("#param.user.phoneMd5");
+        KeyValueObject merchantNo=new KeyValueObject();
+        merchantNo.setType("spel");
+        merchantNo.setValue("#param.user.companyCity");
+        body.put("phoneMd5","#"+JSONObject.toJSONString(attackPhone));
+        body.put("city","#"+JSONObject.toJSONString(merchantNo));
+        //主体
+        httpApiConfig.setContent(JSONObject.toJSONString(body));
+        JSONObject resultObj=new  JSONObject();
+        KeyValueObject status=new KeyValueObject();
+        status.setType("spel");
+        status.setValue("#root[data][status]");
+        resultObj.put("status","#"+JSONObject.toJSONString(status));
+        httpApiConfig.setResult(JSONObject.toJSONString(resultObj));
+        String jsonString = JSONObject.toJSONString(httpApiConfig);
+        log.info("open api  rsa{}",jsonString);
+        return httpApiConfig;
+    }
+
     /**
      * @description: 创建撞库httpApi信息
      * @param:
@@ -64,7 +124,7 @@ public class GenerateHttpApiConfigService {
      * @author zhangyy
      * @date: 2024/8/30 09:31
      */
-    public HttpApiConfig createCheckIntoBean(String param){
+    public HttpApiConfig createHuiRonCheckIntoBean(String param){
         JSONObject jsonObject=JSONObject.parseObject(param);
         HttpApiConfig httpApiConfig = new HttpApiConfig();
         httpApiConfig.setUrl(jsonObject.getString("checkUrl"));
@@ -95,7 +155,7 @@ public class GenerateHttpApiConfigService {
         resultObj.put("status","#"+JSONObject.toJSONString(status));
         httpApiConfig.setResult(JSONObject.toJSONString(resultObj));
         String jsonString = JSONObject.toJSONString(httpApiConfig);
-        log.info("json input data {}",jsonString);
+        log.info("huiRon api {}",jsonString);
          return httpApiConfig;
     }
 

+ 5 - 0
egress-gateway-service-infrastructure/src/main/java/com/hrsk/cloud/eg/infrastructure/exception/ExceptionAdvice.java

@@ -22,6 +22,11 @@ import javax.validation.ConstraintViolationException;
 @Slf4j
 public class ExceptionAdvice {
 
+    /**
+     * 捕捉mvc handler 下的异常
+     * @param exception
+     * @return
+     */
     @ExceptionHandler(Exception.class)
     public ResponseEntity<DefaultResponseVo> exception(Exception exception) {
         DefaultResponseVo result = new DefaultResponseVo<>();

+ 5 - 0
egress-gateway-service-infrastructure/src/main/java/com/hrsk/cloud/eg/infrastructure/repository/database/entity/EgApiEndpointDo.java

@@ -23,6 +23,11 @@ public class EgApiEndpointDo extends BaseDo implements Serializable {
      * 通道类型
      */
     private String apiCode;
+
+    /**
+     * api名称
+     */
+    private String apiName;
     /**
      * 通道配置
      */

+ 0 - 3
egress-gateway-service-infrastructure/src/main/java/com/hrsk/cloud/eg/infrastructure/repository/database/entity/ProductBusinessApiInfoDo.java

@@ -70,8 +70,6 @@ public class ProductBusinessApiInfoDo implements Serializable {
 
     private String updater;
 
-    private String productIds;
-
     private Date createTime;
 
     private Date updateTime;
@@ -131,7 +129,6 @@ public class ProductBusinessApiInfoDo implements Serializable {
     /**
      * 技术维护人
      * */
-    @TableField("maintenance")
     private String maintenance;
 
 

+ 9 - 1
egress-gateway-service-infrastructure/src/main/java/com/hrsk/cloud/eg/infrastructure/service/ProductBusinessApiInfoService.java

@@ -3,6 +3,8 @@ package com.hrsk.cloud.eg.infrastructure.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
 
+import java.util.List;
+
 /**
  * 商户对接配置信息表业务层
  *
@@ -11,5 +13,11 @@ import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusine
  */
 public interface ProductBusinessApiInfoService extends IService<ProductBusinessApiInfoDo> {
 
-
+    /**
+     * 查询对应的 jointCode 大类对接方式
+     *
+     * @param apiCode
+     * @return
+     */
+  List<ProductBusinessApiInfoDo>  selectByJointCodeForList(String apiCode);
 }

+ 17 - 0
egress-gateway-service-infrastructure/src/main/java/com/hrsk/cloud/eg/infrastructure/service/impl/ProductBusinessApiInfoServiceImpl.java

@@ -1,11 +1,17 @@
 package com.hrsk.cloud.eg.infrastructure.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
 import com.hrsk.cloud.eg.infrastructure.repository.database.mapper.ProductBusinessApiInfoMapper;
 import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Collections;
+import java.util.List;
 
 /**
  * 商户对接配置信息表业务层
@@ -18,4 +24,15 @@ import org.springframework.stereotype.Service;
 public class ProductBusinessApiInfoServiceImpl extends ServiceImpl<ProductBusinessApiInfoMapper, ProductBusinessApiInfoDo> implements ProductBusinessApiInfoService {
 
 
+    @Override
+    public List<ProductBusinessApiInfoDo> selectByJointCodeForList(String apiCode) {
+        LambdaQueryWrapper<ProductBusinessApiInfoDo> queryChainWrapper=new LambdaQueryWrapper<>();
+        queryChainWrapper.eq(ProductBusinessApiInfoDo::getJoinMethod,apiCode);
+        queryChainWrapper.orderByDesc(ProductBusinessApiInfoDo::getCreateTime);
+        List<ProductBusinessApiInfoDo> productBusinessApiInfoDos = baseMapper.selectList(queryChainWrapper);
+        if (CollectionUtils.isEmpty(productBusinessApiInfoDos)) {
+            return Collections.emptyList();
+        }
+        return productBusinessApiInfoDos;
+    }
 }

+ 1 - 0
egress-gateway-service-infrastructure/src/main/resources/mapper/EgApiEndpointMapper.xml

@@ -14,6 +14,7 @@
         <result column="api_config" property="apiConfig"/>
         <result column="api_code" property="apiCode"/>
         <result column="api_id" property="apiId"/>
+        <result column="api_name" property="apiName"/>
 
     </resultMap>
 

+ 40 - 7
start/src/test/java/StartTest.java

@@ -1,9 +1,12 @@
+import com.alibaba.fastjson2.JSONObject;
 import com.hrsk.cloud.eg.Application;
 import com.hrsk.cloud.eg.domain.api.ApiGateway;
 import com.hrsk.cloud.eg.dto.data.CheckIntoParamDto;
 import com.hrsk.cloud.eg.dto.data.egPlan.PlanDto;
 import com.hrsk.cloud.eg.dto.data.user.UserInBaseInfoDto;
-import com.hrsk.cloud.eg.infrastructure.business.GenerateHttpApiConfigService;
+import com.hrsk.cloud.eg.infrastructure.business.GenerateCheckIntoHttpApiConfigService;
+import com.hrsk.cloud.eg.infrastructure.repository.database.entity.ProductBusinessApiInfoDo;
+import com.hrsk.cloud.eg.infrastructure.service.EgApiEndpointService;
 import com.hrsk.cloud.eg.infrastructure.service.ProductBusinessApiInfoService;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -30,21 +33,34 @@ import java.util.Map;
 public class StartTest {
 
     @Resource
-    private GenerateHttpApiConfigService generateHttpApiConfigService;
+    private GenerateCheckIntoHttpApiConfigService generateCHeckIntoHttpApiConfigService;
 
     @Resource
-    private ProductBusinessApiInfoService productBusinessApiInfoService  ;
+    private ProductBusinessApiInfoService productBusinessApiInfoService;
+
+    @Resource
+    private EgApiEndpointService egApiEndpointService;
 
     @Resource
     private ApiGateway apiGateway;
     @Test
-  public void createApiTest(){
-        String input="{\"priviteKey\":\"MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIIftRt0MixH4UKwHEYD2TT9LblcgXaZYOMsBqW8zDnDfTuu6-LZz7EaRR4E4xRYsHHpL_lzhytnYd3MxAMt8kQYkrQHDGiZuw9CO5DxQdy4ysS6e6yKiGJC-1rubYicLAko322nV9f9xZ3aWl9xyjzVkQCeyxkU83UDe9SBBpbLAgMBAAECgYANTQZrLv5t7k8FTREmyv_p3bNNzjnhkJ4JupdXW6wYf3YOoruz7YXAWaoU_nTjwIkQq8BepEN92Ux0qpiippCr5ekXUnF4ya8TAKxc9J93jEXW_0grMbut3FOxQM6q2a4IWb0ahVNq7_6wbUNQavfR5HoBShhD798V89q9UWBO6QJBAL8JUqQseATgDkUjPunBUS2OhENqerDKfOmLAGa4o60b49nUG0Hr3WLm47qNM8-Hnozs-lqvnKWFyKntsin9ds8CQQCuX6Qgdy8_X-NhxtKfRkynCnKi5J5E8FEJvXyi_rMqQxWwDcu_4NRMUKD7FkmLjTf4xqfpBUg6k6CLNTO5JZ9FAkBUS1LR6mVTEWJ6k2DRWGHvjjFCZhuZIuAXVSRqLxLZ8bKKjZMxdVgMqgDWcjPoYNlPKcoWdeLTDsNKZ_3zlUn1AkEAjaLwHNLSlOadOoGV-XvPrWsGHJwYlqShHolEoNzDyRM-nYdHNa84olhnuiurR2hIy5EJOHRq6_GX2Rs4zS3rBQJACI2mG2n9L3y4J6bEs40KvURo4x4iu8c9nuUsLZppkfQNiy4VaZBJqXeXfWV0nRyvd0qWR7D_S91EI90FY_tBWQ\",\"secretKey\":\"3A4093B3E9A46A59A441E0B728260939\",\"applyUrl\":\"http://loan-crm-api.pre.jiebide.xin/crm/custom/add\",\"publicKey\":\"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCCH7UbdDIsR-FCsBxGA9k0_S25XIF2mWDjLAalvMw5w307ruvi2c-xGkUeBOMUWLBx6S_5c4crZ2HdzMQDLfJEGJK0BwxombsPQjuQ8UHcuMrEunusiohiQvta7m2InCwJKN9tp1fX_cWd2lpfcco81ZEAnssZFPN1A3vUgQaWywIDAQAB\",\"checkUrl\":\"http://loan-crm-api.pre.jiebide.xin/crm/custom/checkAttackData\",\"channelCode\":\"CHANEL240717000000005\"}";
-        generateHttpApiConfigService.generateHuiRonHuiRonApiConfig(input);
+  public void createHuiRonApiTest(){
+        List<ProductBusinessApiInfoDo> productBusinessApiInfoDos = productBusinessApiInfoService.selectByJointCodeForList("9");
+        String jsonString = JSONObject.toJSONString(productBusinessApiInfoDos.get(0));
+        generateCHeckIntoHttpApiConfigService.generateHuiRonHuiRonApiConfig(jsonString);
   }
 
     @Test
-    public void apiTest(){
+    public void createOpenApiRsaTest(){
+        List<ProductBusinessApiInfoDo> productBusinessApiInfoDos = productBusinessApiInfoService.selectByJointCodeForList("1");
+        String jsonString = JSONObject.toJSONString(productBusinessApiInfoDos.get(0));
+        generateCHeckIntoHttpApiConfigService.generateOpenApiRSAConfig(jsonString);
+    }
+
+
+
+    @Test
+    public void apiHuiRonTest(){
       Long apiId= 441293753667392L;
         UserInBaseInfoDto user =new UserInBaseInfoDto();
         user.setPhoneMd5("b5500dfab55f42b340d31326561e16cb");
@@ -57,6 +73,23 @@ public class StartTest {
         apiGateway.checkIntoRequest(checkin);
     }
 
+
+    @Test
+    public void openApiRsaTest(){
+        Long apiId= 441312253769280L;
+        UserInBaseInfoDto user =new UserInBaseInfoDto();
+        user.setPhoneMd5("b5500dfab55f42b340d31326561e16cb");
+        user.setCompanyCity("重庆");
+        PlanDto  plan =new PlanDto();
+        plan.setApiId(apiId);
+        plan.setBid("aff1c7b30d8b240826030235business");
+        CheckIntoParamDto checkin =new CheckIntoParamDto();
+        checkin.setPlan(plan);
+        checkin.setUser(user);
+        apiGateway.checkIntoRequest(checkin);
+    }
+
+
     @Test
     public void spel(){
         Map<String,Object> map =new HashMap<>();