Parcourir la source

增加接口回调

longhu il y a 3 semaines
Parent
commit
ffc4185580

+ 5 - 5
pom.xml

@@ -111,6 +111,11 @@
             <version>2.0.57</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.basedevelop</groupId>
+            <artifactId>basedevelop</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
 
 
         <dependency>
@@ -118,11 +123,6 @@
             <artifactId>spring-boot-starter-data-jpa</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>com.basedevelop</groupId>
-            <artifactId>basedevelop</artifactId>
-            <version>1.0-SNAPSHOT</version>
-        </dependency>
 
         <dependency>
             <groupId>org.mybatis.spring.boot</groupId>

+ 1 - 1
src/main/java/com/hr/controller/IpInterfaceCallbackController.java

@@ -27,7 +27,7 @@ public class IpInterfaceCallbackController {
     /**
      * 分页查询
      *
-     * @param ipInterfaceParam 筛选条件
+     * @param ipInterfaceCalledQueryParam 筛选条件
      * @return 查询结果
      */
     @Operation(summary = "分页查询接口调用记录")

+ 26 - 0
src/main/java/com/hr/controller/TestCallBackController.java

@@ -0,0 +1,26 @@
+package com.hr.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.hr.externelSystem.BizHandlerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/callback")
+public class TestCallBackController {
+
+    @Autowired
+    private BizHandlerFactory bizHandlerFactory;
+
+    @RequestMapping("/test")
+    public Boolean test(@RequestBody JSONObject json) {
+        // 根据序列号查询到对应的业务id
+        String businessNo = "aabbccddee";
+        String interfaceNo = "aiwen";
+        Boolean result = bizHandlerFactory.doCallBack(interfaceNo,businessNo,json);
+        return result;
+
+    }
+}

+ 2 - 0
src/main/java/com/hr/dto/ApiLogDto.java

@@ -14,4 +14,6 @@ public class ApiLogDto {
     private String url;
 
     private String requestParam;
+
+    private String businessNo;
 }

+ 8 - 0
src/main/java/com/hr/externelSystem/AiwenIpService.java

@@ -7,6 +7,8 @@ import com.hr.dto.AiwenDto;
 import com.hr.dto.ApiLogDto;
 import com.hr.param.AiwenParam;
 import com.hr.repository.domain.IpInterfacePO;
+import com.hr.repository.domain.IpOrderPO;
+import com.hr.repository.domain.IpTokenInterfacePO;
 import com.hr.service.FeishuMsgSendService;
 import com.hr.vo.AiwenParseIpInfoVO;
 import com.hr.vo.ServiceTypeVO;
@@ -68,6 +70,7 @@ public class AiwenIpService implements BizHandler<AiwenParam,AiwenParseIpInfoVO>
     @Override
     public AiwenParseIpInfoVO handle(AiwenParam aiwenIpParam, IpInterfacePO ipInterfacePO, ApiLogDto logDto) {
         {
+            logDto.setBusinessNo("aabbccddee");
             String interfaceConfig = ipInterfacePO.getInterfaceConfig();
             AiwenDto aiwenDto = JSON.parseObject(interfaceConfig, AiwenDto.class);
             log.info("埃文解析的ip地址: {}", aiwenIpParam.getIp());
@@ -224,6 +227,11 @@ public class AiwenIpService implements BizHandler<AiwenParam,AiwenParseIpInfoVO>
         return AiwenParam.class;
     }
 
+    @Override
+    public Boolean doCallBack(IpOrderPO ipOrderPO, JSONObject callbackParam) {
+        return null;
+    }
+
 
     /**
      * 获取昨天日期字符串,格式为 yyyyMMdd

+ 5 - 0
src/main/java/com/hr/externelSystem/BizHandler.java

@@ -1,8 +1,11 @@
 package com.hr.externelSystem;
 
 
+import com.alibaba.fastjson.JSONObject;
 import com.hr.dto.ApiLogDto;
 import com.hr.repository.domain.IpInterfacePO;
+import com.hr.repository.domain.IpOrderPO;
+import com.hr.repository.domain.IpTokenInterfacePO;
 import com.hr.vo.ServiceTypeVO;
 
 public interface BizHandler<T,R> {
@@ -10,4 +13,6 @@ public interface BizHandler<T,R> {
     ServiceTypeVO getType();
     R handle(T t, IpInterfacePO ipInterfacePO,ApiLogDto logDto);
     Class<T> getRequestClass();
+
+    Boolean doCallBack( IpOrderPO ipOrderPO, JSONObject callbackParam);
 }

+ 35 - 3
src/main/java/com/hr/externelSystem/BizHandlerFactory.java

@@ -1,5 +1,6 @@
 package com.hr.externelSystem;
 
+import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson2.JSON;
 import com.hr.dto.AggregateQueryDTO;
 import com.hr.dto.ApiLogDto;
@@ -60,21 +61,22 @@ public class BizHandlerFactory {
             Class requestClass = handler.getRequestClass();
             Object o = JSON.parseObject(decrypt, requestClass);
             wrapOrder(req, dto, ipOrderPO, ipInterfacePO,ipLogPO);
-            ipOrderPO.setOrderStatus("handle");
+            ipOrderPO.setStatus("handle");
             ipOrderRepository.save(ipOrderPO);
             ipLogRepository.save(ipLogPO);
             Object handle = handler.handle(o, ipInterfacePO,logDto);
             ipLogPO.setSystemResponse(JSON.toJSONString(handle));
             String errorMessage = logDto.getErrorMessage();
             if(StringUtils.isEmpty(errorMessage)){
-                ipOrderPO.setOrderStatus("success");
+                ipOrderPO.setStatus("success");
                 ipLogPO.setStatus("success");
 
             }else{
-                ipOrderPO.setOrderStatus("fail");
+                ipOrderPO.setStatus("fail");
                 ipLogPO.setStatus("fail");
             }
             ipOrderPO.setUpdateTime(LocalDateTime.now());
+            ipOrderPO.setBusinessNo(ipOrderPO.getOrderNo());
             ipLogPO.setUrl(logDto.getUrl());
             ipLogPO.setRequestParam(logDto.getRequestParam());
             ipLogPO.setUpdateTime(LocalDateTime.now());
@@ -111,4 +113,34 @@ public class BizHandlerFactory {
         ipLogPO.setStatus("handle");
     }
 
+    public Boolean doCallBack(String interfaceNo, String businessNo, JSONObject json) {
+        IpOrderPO ipOrderPO = ipOrderRepository.queryByBusinessNo(businessNo);
+        if(ipOrderPO != null){
+            log.error("找不到对应的业务编码");
+            return false;
+        }
+        String callbackStatus = ipOrderPO.getCallbackStatus();
+        if("success".equals(callbackStatus)){
+            log.info("当前业务回调已处理,已忽略");
+            return true;
+        }
+        Boolean isCallback = ipOrderPO.getIsCallback();
+        if(!isCallback){
+            log.info("当前业务未设置回调,已忽略");
+            return true;
+        }
+        BizHandler handler = getHandler(interfaceNo);
+        Boolean callbackResult = false;
+        ipOrderPO.setCallbackStatus("handle");
+        for (Integer i = 0; i < ipOrderPO.getCallbackNum(); i++) {
+            Boolean result = handler.doCallBack(ipOrderPO, json);
+            if(result){
+                callbackResult = true;
+                break;
+            }
+        }
+        ipOrderPO.setCallbackStatus(callbackResult ? "success" : "fail");
+        ipOrderRepository.save(ipOrderPO);
+        return callbackResult;
+    }
 }

+ 8 - 0
src/main/java/com/hr/externelSystem/GeestService.java

@@ -1,11 +1,14 @@
 package com.hr.externelSystem;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.hr.dto.ApiLogDto;
 import com.hr.dto.GeetestConfigDTO;
 import com.hr.dto.GeetestDTO;
 import com.hr.param.GeestParam;
 import com.hr.repository.domain.IpInterfacePO;
+import com.hr.repository.domain.IpOrderPO;
+import com.hr.repository.domain.IpTokenInterfacePO;
 import com.hr.util.HmacSHA256;
 import com.hr.util.HttpUtils;
 import com.hr.vo.GeestVO;
@@ -84,4 +87,9 @@ public class GeestService implements BizHandler<GeestParam, GeestVO> {
     public Class getRequestClass() {
         return GeestParam.class;
     }
+
+    @Override
+    public Boolean doCallBack( IpOrderPO ipOrderPO, JSONObject callbackParam) {
+        return null;
+    }
 }

+ 7 - 0
src/main/java/com/hr/externelSystem/ShujubaoMobileNameService.java

@@ -6,6 +6,8 @@ import com.hr.dto.ApiLogDto;
 import com.hr.dto.ShujubaoMobileNameDto;
 import com.hr.param.ShujubaoMobileNameParam;
 import com.hr.repository.domain.IpInterfacePO;
+import com.hr.repository.domain.IpOrderPO;
+import com.hr.repository.domain.IpTokenInterfacePO;
 import com.hr.vo.ServiceTypeVO;
 import com.yy.basedevelop.common.util.HttpClientUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -54,4 +56,9 @@ public class ShujubaoMobileNameService implements BizHandler<ShujubaoMobileNameP
     public Class<ShujubaoMobileNameParam> getRequestClass() {
         return ShujubaoMobileNameParam.class;
     }
+
+    @Override
+    public Boolean doCallBack( IpOrderPO ipOrderPO, JSONObject callbackParam) {
+        return null;
+    }
 }

+ 8 - 0
src/main/java/com/hr/externelSystem/ShujubaoMobileOwnerService.java

@@ -7,6 +7,8 @@ import com.hr.dto.ShujubaoMobileNameDto;
 import com.hr.param.ShujubaoMobileNameParam;
 import com.hr.param.ShujubaoMobileOwnerParam;
 import com.hr.repository.domain.IpInterfacePO;
+import com.hr.repository.domain.IpOrderPO;
+import com.hr.repository.domain.IpTokenInterfacePO;
 import com.hr.vo.ServiceTypeVO;
 import com.hr.vo.ShujubaoMobileOwnerVO;
 import com.yy.basedevelop.common.util.HttpClientUtils;
@@ -78,4 +80,10 @@ public class ShujubaoMobileOwnerService implements BizHandler<ShujubaoMobileOwne
     public Class<ShujubaoMobileOwnerParam> getRequestClass() {
         return ShujubaoMobileOwnerParam.class;
     }
+
+    @Override
+    public Boolean doCallBack(IpOrderPO ipOrderPO, JSONObject callbackParam) {
+        return null;
+    }
+
 }

+ 7 - 0
src/main/java/com/hr/externelSystem/ShujubaoMobileStateService.java

@@ -8,6 +8,8 @@ import com.hr.dto.ShujubaoMobileNameDto;
 import com.hr.param.ShujubaoMobileNameParam;
 import com.hr.param.ShujubaoMobileOwnerParam;
 import com.hr.repository.domain.IpInterfacePO;
+import com.hr.repository.domain.IpOrderPO;
+import com.hr.repository.domain.IpTokenInterfacePO;
 import com.hr.vo.ServiceTypeVO;
 import com.yy.basedevelop.common.util.HttpClientUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -59,4 +61,9 @@ public class ShujubaoMobileStateService implements BizHandler<ShujubaoMobileOwne
     public Class<ShujubaoMobileOwnerParam> getRequestClass() {
         return ShujubaoMobileOwnerParam.class;
     }
+
+    @Override
+    public Boolean doCallBack( IpOrderPO ipOrderPO, JSONObject callbackParam) {
+        return null;
+    }
 }

+ 7 - 0
src/main/java/com/hr/externelSystem/ShujubaoThreeElementVerificationService.java

@@ -7,6 +7,8 @@ import com.hr.dto.ShujubaoMobileNameDto;
 import com.hr.param.ShujubaoMobileOwnerParam;
 import com.hr.param.ShujubaoTEVParam;
 import com.hr.repository.domain.IpInterfacePO;
+import com.hr.repository.domain.IpOrderPO;
+import com.hr.repository.domain.IpTokenInterfacePO;
 import com.hr.vo.ServiceTypeVO;
 import com.hr.vo.ShujubaoMobileOwnerVO;
 import com.yy.basedevelop.common.util.HttpClientUtils;
@@ -74,4 +76,9 @@ public class ShujubaoThreeElementVerificationService implements BizHandler<Shuju
     public Class<ShujubaoTEVParam> getRequestClass() {
         return ShujubaoTEVParam.class;
     }
+
+    @Override
+    public Boolean doCallBack( IpOrderPO ipOrderPO, JSONObject callbackParam) {
+        return null;
+    }
 }

+ 7 - 0
src/main/java/com/hr/externelSystem/TencentFaceService.java

@@ -8,6 +8,8 @@ import com.hr.dto.ApiLogDto;
 import com.hr.dto.TencentFaceDto;
 import com.hr.param.TencentFaceParam;
 import com.hr.repository.domain.IpInterfacePO;
+import com.hr.repository.domain.IpOrderPO;
+import com.hr.repository.domain.IpTokenInterfacePO;
 import com.hr.util.ImageUtils;
 import com.hr.util.SignatureUtil;
 import com.hr.vo.OcrParamVO;
@@ -194,6 +196,11 @@ public class TencentFaceService implements BizHandler<TencentFaceParam, OcrParam
         return null;
     }
 
+    @Override
+    public Boolean doCallBack( IpOrderPO ipOrderPO, JSONObject callbackParam) {
+        return null;
+    }
+
     public static String generate32BitRandomNumber() {
         UUID uuid = UUID.randomUUID();
         return uuid.toString().replaceAll("-", "");

+ 7 - 0
src/main/java/com/hr/externelSystem/TencentOrcSignService.java

@@ -9,6 +9,8 @@ import com.hr.dto.TencentFaceDto;
 import com.hr.param.TencentFaceParam;
 import com.hr.param.TencentOcrSignParam;
 import com.hr.repository.domain.IpInterfacePO;
+import com.hr.repository.domain.IpOrderPO;
+import com.hr.repository.domain.IpTokenInterfacePO;
 import com.hr.util.ImageUtils;
 import com.hr.util.SignatureUtil;
 import com.hr.vo.OcrParamVO;
@@ -156,6 +158,11 @@ public class TencentOrcSignService implements BizHandler<TencentOcrSignParam, Oc
         return TencentOcrSignParam.class;
     }
 
+    @Override
+    public Boolean doCallBack( IpOrderPO ipOrderPO, JSONObject callbackParam) {
+        return null;
+    }
+
     public static String generate32BitRandomNumber() {
         UUID uuid = UUID.randomUUID();
         return uuid.toString().replaceAll("-", "");

+ 11 - 0
src/main/java/com/hr/param/AiwenParam.java

@@ -1,9 +1,20 @@
 package com.hr.param;
 
+import com.alibaba.fastjson.JSON;
+import com.timevale.esign.paas.tech.util.AesUtil;
 import lombok.Data;
 
 @Data
 public class AiwenParam {
 
     private String ip;
+
+    private String token;
+
+    static void main() throws Exception {
+        AiwenParam aiwenParam = new AiwenParam();
+        aiwenParam.setIp("125.80.200.24");
+        aiwenParam.setToken("3d6e9d3037ebea66ac90c2");
+        System.out.println(AesUtil.encrypt(JSON.toJSONString(aiwenParam), "3d6e9d3037ebea66ac90c20e67066b130b88a918212ba4a437f957f6d2e3aefb"));
+    }
 }

+ 6 - 4
src/main/java/com/hr/repository/domain/IpOrderPO.java

@@ -34,6 +34,8 @@ public class IpOrderPO implements Serializable, Cloneable {
     @Column(name = "interface_name")
     private String interfaceName;
 
+    @Column(name = "business_no")
+    private String businessNo;
     /**
      * 厂商,;
      */
@@ -58,17 +60,17 @@ public class IpOrderPO implements Serializable, Cloneable {
      * 是否支持回调,yes支持,no不支持,;
      */
     @Column(name = "is_callback")
-    private String isCallback;
+    private Boolean isCallback;
     /**
      * 回调次数,尝试回调的次数,超过次数则不再回调,;
      */
     @Column(name = "callback_num")
-    private int callbackNum;
+    private Integer callbackNum;
     /**
      * 调用状态,handle处理中,success成功,fail失败,;
      */
-    @Column(name = "order_status")
-    private String orderStatus;
+    @Column(name = "status")
+    private String status;
     /**
      * 回调状态,handle处理中,success成功,fail失败,;
      */

+ 2 - 0
src/main/java/com/hr/repository/jpa/IpOrderRepository.java

@@ -15,4 +15,6 @@ import java.util.List;
 public interface IpOrderRepository extends JpaRepository<IpOrderPO,Long> {
 
     IpOrderPO queryById(Long oid);
+
+    IpOrderPO queryByBusinessNo(String businessNo);
 }

+ 1 - 1
src/main/resources/mapper/IpLogMapper.xml

@@ -16,6 +16,6 @@
             log.add_time
         from ip_log log
         left join ip_order ord on ord.id = log.oid
-        where log.id =:id and ord.acc_no = :accountNo and  ord.interface_name like '%'||:interfaceName||'%'
+        where 1 =1 and  log.id =:id and ord.acc_no = :accountNo and  ord.interface_name like '%'||:interfaceName||'%'
     </select>
 </mapper>