From 73d7f7aed91cdaaaf61e6177dc02c71ef5ca51e8 Mon Sep 17 00:00:00 2001
From: wzp <2040239371@qq.com>
Date: 星期三, 03 九月 2025 16:42:14 +0800
Subject: [PATCH] fix: 修复轨迹查询,界面报401的问题

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysClientAppServiceImpl.java |   63 +++++++++++++++++++++++++++++++
 1 files changed, 63 insertions(+), 0 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysClientAppServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysClientAppServiceImpl.java
index f7e1844..a3db696 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysClientAppServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysClientAppServiceImpl.java
@@ -8,6 +8,8 @@
 import com.ruoyi.system.service.ISysClientAppService;
 import com.ruoyi.common.utils.SecurityUtils;
 
+import static com.ruoyi.common.utils.SecurityUtils.md5;
+
 /**
  * 瀹㈡埛搴旂敤閰嶇疆 鏈嶅姟灞傚疄鐜�
  */
@@ -25,6 +27,18 @@
     @Override
     public SysClientApp selectSysClientAppByAppId(Long appId) {
         return sysClientAppMapper.selectSysClientAppByAppId(appId);
+    }
+
+    /**
+     * 閫氳繃搴旂敤鏍囪瘑鏌ヨ瀹㈡埛搴旂敤閰嶇疆
+     * 
+     * @param appKey 搴旂敤鏍囪瘑
+     * @return 瀹㈡埛搴旂敤閰嶇疆
+     */
+    @Override
+    public SysClientApp selectSysClientAppByAppKey(String appKey)
+    {
+        return sysClientAppMapper.selectSysClientAppByAppKey(appKey);
     }
 
     /**
@@ -118,4 +132,53 @@
     public int deleteSysClientAppByAppId(Long appId) {
         return sysClientAppMapper.deleteSysClientAppByAppId(appId);
     }
+
+    @Override
+    public boolean validateSign(String appId, String sign, String timestamp) {
+        // 鏍规嵁appId鑾峰彇搴旂敤淇℃伅
+        SysClientApp clientApp = sysClientAppMapper.selectSysClientAppByAppKey(appId);
+        if (clientApp == null) {
+            System.out.println("鏈壘鍒癮ppId涓� " + appId + " 鐨勫簲鐢ㄩ厤缃�");
+            return false;
+        }
+
+        System.out.println("鎵惧埌搴旂敤閰嶇疆: " + clientApp);
+
+        // 楠岃瘉搴旂敤鏄惁鏈夋晥
+        if (!"0".equals(clientApp.getStatus())) {
+            System.out.println("搴旂敤鐘舵�佹棤鏁�: " + clientApp.getStatus());
+            return false;
+        }
+
+        // 楠岃瘉鏈夋晥鏈�
+        if (clientApp.getValidStartTime() != null && clientApp.getValidEndTime() != null) {
+            long currentTime = System.currentTimeMillis();
+            if (currentTime < clientApp.getValidStartTime().getTime() 
+                || currentTime > clientApp.getValidEndTime().getTime()) {
+                System.out.println("搴旂敤宸茶繃鏈�");
+                return false;
+            }
+        }
+
+        // 鐢熸垚绛惧悕
+        String serverSign = generateSign(appId, clientApp.getSecurityKey(), timestamp);
+        System.out.println("鏈嶅姟鍣ㄧ敓鎴愮殑绛惧悕: " + serverSign);
+        System.out.println("瀹㈡埛绔彁渚涚殑绛惧悕: " + sign);
+        System.out.println("绛惧悕鏄惁鍖归厤: " + sign.equals(serverSign));
+        
+        // 姣旇緝绛惧悕
+        return sign.equals(serverSign);
+    }
+
+    /**
+     * 鐢熸垚绛惧悕
+     * 绛惧悕瑙勫垯锛歁D5(appId + timestamp + securityKey)
+     */
+    private String generateSign(String appId, String securityKey, String timestamp) {
+        String signStr = appId + timestamp + securityKey;
+        System.out.println("绛惧悕鍘熷瀛楃涓�: " + signStr);
+        String result = md5(signStr);
+        System.out.println("MD5缁撴灉: " + result);
+        return result;
+    }
 } 
\ No newline at end of file

--
Gitblit v1.9.1