From af8cab142a6b15c06e131a8474574dd5b00df982 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期四, 04 十二月 2025 22:09:58 +0800
Subject: [PATCH] feat: 改造微信accesstoken存放在系统配置表中
---
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