From 69a3c374ca3afb770e3b9ffcbdda07ce362cbf58 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期五, 09 一月 2026 19:59:29 +0800
Subject: [PATCH] #

---
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/security/service/AppAuthService.java |  112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 112 insertions(+), 0 deletions(-)

diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/security/service/AppAuthService.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/security/service/AppAuthService.java
new file mode 100644
index 0000000..68ba1f7
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/security/service/AppAuthService.java
@@ -0,0 +1,112 @@
+package com.vincent.rsf.openApi.security.service;
+
+import com.vincent.rsf.openApi.entity.app.App;
+import com.vincent.rsf.openApi.service.AppService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * App璁よ瘉鏈嶅姟
+ * 
+ * 鎻愪緵AppId鍜孉ppSecret鐨勯獙璇佸姛鑳�
+ * 
+ * @author vincent
+ * @since 2026-01-05
+ */
+@Slf4j
+@Service
+public class AppAuthService {
+
+    @Resource
+    private AppService appService;
+
+    /**
+     * 楠岃瘉AppId鍜孉ppSecret
+     * 
+     * @param appId 搴旂敤ID
+     * @param appSecret 搴旂敤瀵嗛挜
+     * @return 楠岃瘉缁撴灉
+     */
+    public boolean validateApp(String appId, String appSecret) {
+        log.debug("楠岃瘉AppId: {}, AppSecret: ****", appId);
+        
+        if (appId == null || appSecret == null) {
+            log.warn("AppId鎴朅ppSecret涓虹┖");
+            return false;
+        }
+
+        try {
+            // 浠庢暟鎹簱鏌ヨ搴旂敤淇℃伅
+            App app = appService.getById(appId);
+            if (app == null) {
+                log.warn("鏈壘鍒板簲鐢�: {}", appId);
+                return false;
+            }
+
+            // 妫�鏌ュ簲鐢ㄦ槸鍚﹀惎鐢�
+            if (app.getEnable() != 1) {
+                log.warn("搴旂敤鏈惎鐢�: {}", appId);
+                return false;
+            }
+
+            // 楠岃瘉瀵嗛挜
+            boolean isValid = appSecret.equals(app.getScrect());
+            if (!isValid) {
+                log.warn("AppSecret楠岃瘉澶辫触: AppId={}", appId);
+            } else {
+                log.info("AppId璁よ瘉鎴愬姛: AppId={}", appId);
+            }
+
+            return isValid;
+        } catch (Exception e) {
+            log.error("楠岃瘉AppId鍜孉ppSecret鏃跺彂鐢熷紓甯�", e);
+            return false;
+        }
+    }
+
+    public boolean validateApp(String appId) {
+        App app = appService.getById(appId);
+        return app != null;
+    }
+
+    /**
+     * 鑾峰彇搴旂敤淇℃伅
+     * 
+     * @param appId 搴旂敤ID
+     * @return 搴旂敤淇℃伅
+     */
+    public App getAppInfo(String appId) {
+        if (appId == null) {
+            return null;
+        }
+        
+        try {
+            return appService.getById(appId);
+        } catch (Exception e) {
+            log.error("鑾峰彇搴旂敤淇℃伅澶辫触: {}", appId, e);
+            return null;
+        }
+    }
+
+    /**
+     * 鐢熸垚AppToken锛堝彲閫夊姛鑳斤級
+     * 
+     * @param appId 搴旂敤ID
+     * @param appSecret 搴旂敤瀵嗛挜
+     * @return 鐢熸垚鐨凾oken
+     */
+    public String generateAppToken(String appId, String appSecret) {
+        // 杩欓噷鍙互瀹炵幇鍩轰簬AppId鍜孉ppSecret鐨凾oken鐢熸垚閫昏緫
+        // 渚嬪浣跨敤JWT鐢熸垚Token
+        if (validateApp(appId, appSecret)) {
+            // 鐢熸垚Token鐨勯�昏緫
+            long timestamp = System.currentTimeMillis();
+            String tokenData = appId + ":" + timestamp;
+            // TODO锛氳繖閲屽彲浠ヤ娇鐢ㄦ洿瀹夊叏鐨勫姞瀵嗙畻娉�
+            return java.util.Base64.getEncoder().encodeToString(tokenData.getBytes());
+        }
+        return null;
+    }
+}

--
Gitblit v1.9.1