xiewj 1 개월 전
부모
커밋
a220ebe540

+ 6 - 0
pom.xml

@@ -31,6 +31,12 @@
             <version>3.0.0-SNAPSHOT</version>
         </dependency>
         <dependency>
+            <groupId>com.fdkankan</groupId>
+            <artifactId>4dkankan-utils-sign</artifactId>
+            <version>3.0.0-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
             <groupId>com.github.yulichang</groupId>
             <artifactId>mybatis-plus-join</artifactId>
             <version>1.4.5</version>

+ 3 - 2
src/main/java/com/fdkankan/site/httpClient/client/FdKKClient.java

@@ -3,6 +3,7 @@ package com.fdkankan.site.httpClient.client;
 import com.alibaba.fastjson.JSONObject;
 import com.dtflys.forest.annotation.*;
 import com.fdkankan.site.httpClient.address.FdkkAddressSource;
+import com.fdkankan.site.httpClient.interceptor.SignInterceptor;
 import com.fdkankan.site.httpClient.request.FdkkLoginRequest;
 import com.fdkankan.site.httpClient.response.FdkkLoginVo;
 import com.fdkankan.site.httpClient.response.FdkkResponse;
@@ -45,12 +46,12 @@ public interface FdKKClient {
     /**
      * 获取v4场景数据
      */
-    @Post("/api/fusion/scene/list")
+    @Post(value = "/api/fusion/scene/list", interceptor = SignInterceptor.class)
     FdkkResponse sceneList(@JSONBody SceneParam param, @Header("token") String token);
     /**
      * 获取v4场景数据
      */
-    @Post("/api/fusion/scene/list")
+    @Post(value = "/api/fusion/scene/list", interceptor = SignInterceptor.class)
     FdkkResponse sceneList(@JSONBody SceneParam param);
     /**
      * 获取用户场景数量

+ 2 - 1
src/main/java/com/fdkankan/site/httpClient/client/LaserClient.java

@@ -3,6 +3,7 @@ package com.fdkankan.site.httpClient.client;
 import cn.hutool.core.net.SSLProtocols;
 import com.dtflys.forest.annotation.*;
 import com.fdkankan.site.httpClient.address.LaserAddressSource;
+import com.fdkankan.site.httpClient.interceptor.SignInterceptor;
 import com.fdkankan.site.httpClient.request.LaserSceneParam;
 import com.fdkankan.site.httpClient.response.FdkkResponse;
 
@@ -20,6 +21,6 @@ public interface LaserClient {
     /**
      * 获取深时场景数据
      */
-    @Post("/laser/4dage/managerSceneList")
+    @Post(value = "/laser/4dage/managerSceneList", interceptor = SignInterceptor.class)
     FdkkResponse sceneList(@JSONBody LaserSceneParam param);
 }

+ 43 - 0
src/main/java/com/fdkankan/site/httpClient/interceptor/SignInterceptor.java

@@ -0,0 +1,43 @@
+package com.fdkankan.site.httpClient.interceptor;
+
+import com.alibaba.fastjson.JSONObject;
+import com.dtflys.forest.http.ForestRequest;
+import com.dtflys.forest.interceptor.Interceptor;
+import com.dtflys.forest.reflection.ForestMethod;
+import com.fdkankan.sign.RsaUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.time.Instant;
+
+/**
+ * @author Xiewj
+ * @date 2025/7/8
+ */
+@Component
+@Slf4j
+public class SignInterceptor implements Interceptor<JSONObject> {
+
+    @Value("${sign.bim.publicKey}")
+    private String publicKey;
+    @Value("${sign.bim.appId}")
+    private String appid;
+    /**
+     * 该方法在被调用时,并在beforeExecute前被调用
+     * @Param request Forest请求对象
+     * @Param args 方法被调用时传入的参数数组
+     */
+    @Override
+    public void onInvokeMethod(ForestRequest request, ForestMethod method, Object[] args) {
+        log.info("on invoke method sign");
+        JSONObject playload = new JSONObject();
+        Instant now = Instant.now();
+        long epochSecond = now.getEpochSecond();
+        playload.put("appId", appid);
+        playload.put("timestamp", epochSecond);
+        request.addHeader("sign", RsaUtils.encipher(playload.toJSONString(), publicKey));  // 添加Header
+        request.addHeader("appid", appid);  // 添加Header
+
+    }
+}

+ 5 - 1
src/main/resources/application-prod.yaml

@@ -54,4 +54,8 @@ filestorage:
     access-key-secret: meDy7VYAWbg8kZCKsoUZcIYQxigWOy
     bucket: 4dkankan
     bucket-custom-domain:
-      4dkankan: https://4dkk.4dage.com/
+      4dkankan: https://4dkk.4dage.com/
+sign:
+  bim:
+    appId: adf1838ff29aae4c44a7f23c6ebffa26
+    publicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDfClCGPAoc7Ii0jJqWyvE3xdBY2PyO6mxJf7Zl2IdgyG/qXC5cKbMQCZ2VMpkavrLTSkiTGeA/jYI+DVWkNpTMcFDb+lYLXxNejLbzCNslA04HLbuNe5WNr8pid9SZZctoDTX+DPDnMEX8feEH7O2ABHuVrSjCls+orR4gGTwl5QIDAQAB

+ 5 - 1
src/main/resources/application-test.yaml

@@ -59,4 +59,8 @@ filestorage:
     access-key-secret: meDy7VYAWbg8kZCKsoUZcIYQxigWOy
     bucket: 4dkankan
     bucket-custom-domain:
-      4dkankan: https://4dkk.4dage.com/
+      4dkankan: https://4dkk.4dage.com/
+sign:
+  bim:
+    appId: adf1838ff29aae4c44a7f23c6ebffa26
+    publicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDfClCGPAoc7Ii0jJqWyvE3xdBY2PyO6mxJf7Zl2IdgyG/qXC5cKbMQCZ2VMpkavrLTSkiTGeA/jYI+DVWkNpTMcFDb+lYLXxNejLbzCNslA04HLbuNe5WNr8pid9SZZctoDTX+DPDnMEX8feEH7O2ABHuVrSjCls+orR4gGTwl5QIDAQAB