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