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