From 7664fa0dbc023d192aeb94c7f2612e0fbe0e3cd7 Mon Sep 17 00:00:00 2001
From: dengzedong <dengzedong@email>
Date: 星期五, 06 十二月 2024 17:03:55 +0800
Subject: [PATCH] IailabClient 配置

---
 shasteel-biz/src/main/java/com/iailab/module/shasteel/config/FeignTokenInterceptor.java |    8 +++-
 shasteel-biz/src/main/java/com/iailab/module/shasteel/util/token/IailabClient.java      |   71 ++++++++++++++---------------------
 2 files changed, 35 insertions(+), 44 deletions(-)

diff --git a/shasteel-biz/src/main/java/com/iailab/module/shasteel/config/FeignTokenInterceptor.java b/shasteel-biz/src/main/java/com/iailab/module/shasteel/config/FeignTokenInterceptor.java
index 2f328a9..0452221 100644
--- a/shasteel-biz/src/main/java/com/iailab/module/shasteel/config/FeignTokenInterceptor.java
+++ b/shasteel-biz/src/main/java/com/iailab/module/shasteel/config/FeignTokenInterceptor.java
@@ -3,6 +3,7 @@
 import com.iailab.module.shasteel.util.token.IailabClient;
 import feign.RequestInterceptor;
 import feign.RequestTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.http.HttpHeaders;
 import org.springframework.web.context.request.RequestContextHolder;
@@ -11,6 +12,9 @@
 @Configuration
 public class FeignTokenInterceptor implements RequestInterceptor {
 
+    @Autowired
+    private IailabClient iailabClient;
+
     @Override
     public void apply(RequestTemplate requestTemplate) {
         // 从当前请求上下文中获取Token
@@ -18,11 +22,11 @@
 
         if (token == null) {
             // 如果没有获取到Token,从system-server中获取token
-            token = IailabClient.getToken();
+            token = iailabClient.getToken();
             if (token!= null) {
                 requestTemplate.header(HttpHeaders.AUTHORIZATION, token);
             }
-            Long tenantId = IailabClient.getTenantId();
+            Long tenantId = iailabClient.getTenantId();
             if (tenantId != null) {
                 requestTemplate.header("tenant-id", String.valueOf(tenantId));
             }
diff --git a/shasteel-biz/src/main/java/com/iailab/module/shasteel/util/token/IailabClient.java b/shasteel-biz/src/main/java/com/iailab/module/shasteel/util/token/IailabClient.java
index 8337a83..8c0a0a1 100644
--- a/shasteel-biz/src/main/java/com/iailab/module/shasteel/util/token/IailabClient.java
+++ b/shasteel-biz/src/main/java/com/iailab/module/shasteel/util/token/IailabClient.java
@@ -1,11 +1,13 @@
 package com.iailab.module.shasteel.util.token;
 
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
 import org.springframework.util.Assert;
 import org.springframework.util.Base64Utils;
 import org.springframework.util.ObjectUtils;
@@ -20,25 +22,32 @@
  * @createTime 2024年11月21日
  */
 @Slf4j
+@Component
 public class IailabClient {
 
     /**
      * 平台地址
      */
-    public static String BASE_URL;
+    @Value("${iailab.token.base-url}")
+    private String BASE_URL;
 
     /**
      * 租户编号
      */
-    public static Long TENANT_ID;
+    @Value("${iailab.token.tenant-id}")
+    private String TENANT_ID;
 
     /**
      * 客户端信息
      */
-    private static String CLIENT_ID;
-    private static String CLIENT_SECRET;
-    private static String USERNAME;
-    private static String PASSWORD;
+    @Value("${iailab.token.client-id}")
+    private String CLIENT_ID;
+    @Value("${iailab.token.client-secret}")
+    private String CLIENT_SECRET;
+    @Value("${iailab.token.username}")
+    private String USERNAME;
+    @Value("${iailab.token.password}")
+    private String PASSWORD;
     private static final String GRAND_TYPE = "password";
     private static final String SCOPE = "user.read user.write";
 
@@ -46,38 +55,16 @@
     private static final RestTemplate restTemplate = new RestTemplate();
 
     // 鉴权token
-    public static String accessToken;
+    private String accessToken;
     // 刷新token
-    public static String refreshToken;
+    private String refreshToken;
     // 鉴权token过期时间
-    public static Long expireTime;
-
-    private static final IailabClient iailabClient = new IailabClient();
-
-    private IailabClient() {
-//        BASE_URL = PlatApplicationContext.getProperty("iailab.baseUrl");
-//        TENANT_ID = Long.parseLong(PlatApplicationContext.getProperty("iailab.tenantId"));
-//        CLIENT_ID = PlatApplicationContext.getProperty("iailab.clientId");
-//        CLIENT_SECRET = PlatApplicationContext.getProperty("iailab.clientSecret");
-//        USERNAME = PlatApplicationContext.getProperty("iailab.username");
-//        PASSWORD = PlatApplicationContext.getProperty("iailab.password");
-
-        BASE_URL = "http://127.0.0.1:48080/admin-api/system";
-        TENANT_ID = 176L;
-        CLIENT_ID = "shasteel";
-        CLIENT_SECRET = "shasteel111111111111111";
-        USERNAME = "shasteel";
-        PASSWORD = "123456";
-    }
-
-    public static IailabClient getInstance() {
-        return iailabClient;
-    }
+    private Long expireTime;
 
     /**
      * 用户名密码方式获取平台token
      */
-    private static synchronized void authenticate() {
+    private synchronized void authenticate() {
         log.info("获取平台token");
         // 1.1 构建请求头
         HttpHeaders headers = new HttpHeaders();
@@ -104,7 +91,7 @@
         expireTime = Long.valueOf(authMap.get("expires_time").toString());
     }
 
-    private static synchronized void refreshToken() {
+    private synchronized void refreshToken() {
         log.info("刷新token");
         // 1.1 构建请求头
         HttpHeaders headers = new HttpHeaders();
@@ -133,26 +120,26 @@
         }
     }
 
-    private static void addClientHeader(HttpHeaders headers) {
+    private void addClientHeader(HttpHeaders headers) {
         // client 拼接,需要 BASE64 编码
         String client = CLIENT_ID + ":" + CLIENT_SECRET;
         client = Base64Utils.encodeToString(client.getBytes(StandardCharsets.UTF_8));
         headers.add("Authorization", "Basic " + client);
         headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
-        headers.set("tenant-id", TENANT_ID.toString());
+        headers.set("tenant-id", getTenantId().toString());
     }
 
-    public static String getToken() {
+    public String getToken() {
         //第一次请求或者token过期,需要重新获取token
-        if(ObjectUtils.isEmpty(IailabClient.accessToken)) {
-            IailabClient.authenticate();
-        } else if (IailabClient.expireTime < System.currentTimeMillis() / 1000) {
-            IailabClient.refreshToken();
+        if(ObjectUtils.isEmpty(accessToken)) {
+            authenticate();
+        } else if (expireTime < System.currentTimeMillis() / 1000) {
+            refreshToken();
         }
         
         return accessToken;
     }
-    public static Long getTenantId() {
-        return TENANT_ID;
+    public Long getTenantId() {
+        return Long.valueOf(TENANT_ID);
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3