From 0f4da6101dd8552cc91475b1a0468e2847316c7d Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期二, 05 十一月 2024 15:09:59 +0800
Subject: [PATCH] 11

---
 src/main/java/com/se/simu/service/GedbService.java       |   18 ++++++
 src/main/java/com/se/simu/controller/TestController.java |   12 ++++
 src/main/resources/logback-spring.xml                    |    6 +-
 pom.xml                                                  |    6 ++
 src/main/java/com/se/simu/config/InitConfig.java         |    5 +
 src/main/java/com/se/simu/helper/CaffeineHelper.java     |   86 ++++++++++++++++++++++++++++
 src/main/resources/application.yml                       |    1 
 7 files changed, 131 insertions(+), 3 deletions(-)

diff --git a/pom.xml b/pom.xml
index 77fe440..0ed76d3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -135,6 +135,12 @@
             <scope>system</scope>
             <systemPath>${project.basedir}/libs/simu.jar</systemPath>
         </dependency>
+        <!--Caffeine缂撳瓨-->
+        <dependency>
+            <groupId>com.github.ben-manes.caffeine</groupId>
+            <artifactId>caffeine</artifactId>
+            <version>2.9.3</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/src/main/java/com/se/simu/config/InitConfig.java b/src/main/java/com/se/simu/config/InitConfig.java
index ac399bc..82d5bea 100644
--- a/src/main/java/com/se/simu/config/InitConfig.java
+++ b/src/main/java/com/se/simu/config/InitConfig.java
@@ -1,5 +1,6 @@
 package com.se.simu.config;
 
+import com.se.simu.helper.CaffeineHelper;
 import com.se.simu.helper.GdalHelper;
 import com.se.simu.helper.WebHelper;
 import lombok.extern.slf4j.Slf4j;
@@ -26,6 +27,9 @@
     @Value("${server.port}")
     String serverPort;
 
+    @Value("${config.cacheTime}")
+    Integer cacheTime;
+
     @Value("${server.servlet.context-path}")
     String contextPath;
 
@@ -35,6 +39,7 @@
         try {
             log.info("***************** 鍒濆鍖� GDAL *****************" + "\n");
             GdalHelper.init(env.getProperty("config.gdalPath"));
+            CaffeineHelper.init(cacheTime);
 
             String path = null != contextPath && contextPath.length() > 1 ? contextPath : "";
             log.info("API鏂囨。:http://localhost:" + serverPort + path + "/doc.html");
diff --git a/src/main/java/com/se/simu/controller/TestController.java b/src/main/java/com/se/simu/controller/TestController.java
index a5043b5..6909d67 100644
--- a/src/main/java/com/se/simu/controller/TestController.java
+++ b/src/main/java/com/se/simu/controller/TestController.java
@@ -113,4 +113,16 @@
             return fail(ex, null);
         }
     }
+
+    @ApiOperation(value = "testToken *")
+    @GetMapping("/testToken")
+    public R<Object> testToken() {
+        try {
+            String token = gedbService.getToken();
+
+            return success(token);
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
 }
diff --git a/src/main/java/com/se/simu/helper/CaffeineHelper.java b/src/main/java/com/se/simu/helper/CaffeineHelper.java
new file mode 100644
index 0000000..1357c56
--- /dev/null
+++ b/src/main/java/com/se/simu/helper/CaffeineHelper.java
@@ -0,0 +1,86 @@
+package com.se.simu.helper;
+
+import com.github.benmanes.caffeine.cache.Cache;
+import com.github.benmanes.caffeine.cache.Caffeine;
+import lombok.extern.slf4j.Slf4j;
+
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Caffeine甯姪绫�
+ *
+ * @author WWW
+ * @date 2024-11-05
+ */
+@Slf4j
+public class CaffeineHelper {
+    private static Cache<String, Object> cache;
+
+    public static void init(Integer cacheTime) {
+        cache = Caffeine.newBuilder()
+                .initialCapacity(16)
+                .maximumSize(4096)
+                .expireAfterWrite(cacheTime, TimeUnit.MINUTES)
+                .build();
+    }
+
+    public static Object get(String key) {
+        return cache.getIfPresent(key);
+    }
+
+    public static void put(String key, Object obj) {
+        cache.put(key, obj);
+    }
+
+    public static void remove(String key) {
+        cache.invalidate(key);
+    }
+
+    public static void clear() {
+        cache.invalidateAll();
+    }
+
+    public static <T> List<T> getListByKey(String key) {
+        Object obj = get(key);
+        if (obj instanceof List<?>) {
+            return (List<T>) obj;
+        }
+
+        return null;
+    }
+
+    public static <T> void putListByKey(String key, List<T> list) {
+        if (null != list && list.size() > 0) {
+            put(key, list);
+        }
+    }
+
+    public static String getMd5(String str) {
+        if (StringHelper.isEmpty(str)) {
+            return null;
+        }
+
+        try {
+            MessageDigest md5 = MessageDigest.getInstance("MD5");
+            md5.update(str.getBytes());
+            byte[] byteArray = md5.digest();
+
+            BigInteger bigInt = new BigInteger(1, byteArray);
+
+            // 鍙傛暟16琛ㄧず16杩涘埗
+            String result = bigInt.toString(16);
+
+            // 涓嶈冻32浣嶉珮浣嶈ˉ闆�
+            while (result.length() < 32) {
+                result = "0" + result;
+            }
+
+            return result;
+        } catch (Exception e) {
+            return null;
+        }
+    }
+}
diff --git a/src/main/java/com/se/simu/service/GedbService.java b/src/main/java/com/se/simu/service/GedbService.java
index 47e7584..c13f549 100644
--- a/src/main/java/com/se/simu/service/GedbService.java
+++ b/src/main/java/com/se/simu/service/GedbService.java
@@ -10,6 +10,7 @@
 import com.se.simu.domain.dto.GeFile;
 import com.se.simu.domain.dto.GeLayer;
 import com.se.simu.domain.po.DataPo;
+import com.se.simu.helper.CaffeineHelper;
 import com.se.simu.helper.RsaHelper;
 import com.se.simu.helper.ShpHelper;
 import com.se.simu.helper.StringHelper;
@@ -51,6 +52,8 @@
     @Resource
     RestTemplate restTemplate;
 
+    private final static String TOKEN_KEY = "gedb_token";
+
     public boolean test(DataPo data) throws Exception {
         createPath(config.getInPath() + File.separator + data.getInPath());
 
@@ -73,11 +76,26 @@
     }
 
     public String getToken() throws Exception {
+        Object obj = CaffeineHelper.get(TOKEN_KEY);
+        if (obj instanceof String) {
+            return obj.toString();
+        }
+
+        String token = getTokenByServer();
+        if (null == token) throw new Exception("鑾峰彇GEDB浠ょ墝澶辫触");
+
+        CaffeineHelper.put(TOKEN_KEY, token);
+
+        return token;
+    }
+
+    private String getTokenByServer() throws Exception {
         Map<String, Object> map = new HashMap<>(2);
         map.put("userid", config.getUser());
         map.put("password", getPassword());
 
         JSONObject obj = restTemplate.postForObject(config.getHost() + "account-service/security/login", map, JSONObject.class);
+        log.info(obj.toString());
 
         JSONObject data = obj.getJSONObject("data");
 
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 090c255..7b02ef6 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -93,6 +93,7 @@
 
 config:
   ver: 0.2
+  cacheTime: 60
   # Gdal椹卞姩鐩綍
   gdalPath: E:/terrait/TianJin/Zip/release-1928-x64-dev/release-1928-x64/bin
   #inPath: D:\simu\in
diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml
index 11c8ad2..3c5b621 100644
--- a/src/main/resources/logback-spring.xml
+++ b/src/main/resources/logback-spring.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- scan 閰嶇疆鏂囦欢濡傛灉鍙戠敓鏀瑰彉锛屽皢浼氳閲嶆柊鍔犺浇  scanPeriod 妫�娴嬮棿闅旀椂闂�-->
 <configuration scan="true" scanPeriod="60 seconds" debug="false">
-    <contextName>LFServer</contextName>
+    <contextName>SimuServer</contextName>
 
     <!-- 鏂囦欢鍚嶇О -->
     <property name="log.name.info" value="info" />
@@ -31,8 +31,8 @@
         </rollingPolicy>
         <append>true</append>
         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
             <charset>utf-8</charset>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
         </encoder>
         <!-- 鏃ュ織绾у埆杩囨护鍣� -->
         <filter class="ch.qos.logback.classic.filter.LevelFilter">
@@ -79,8 +79,8 @@
     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
         <!-- 鏃ュ織鏍煎紡 -->
         <encoder>
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
             <charset>utf-8</charset>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
         </encoder>
         <!--姝ゆ棩蹇梐ppender鏄负寮�鍙戜娇鐢紝鍙厤缃渶搴曠骇鍒紝鎺у埗鍙拌緭鍑虹殑鏃ュ織绾у埆鏄ぇ浜庢垨绛変簬姝ょ骇鍒殑鏃ュ織淇℃伅-->
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">

--
Gitblit v1.9.3