From 6bd0c0477e2aed9dc0f22489c98fc2c9e6924b91 Mon Sep 17 00:00:00 2001 From: xujun Date: Sat, 25 Apr 2026 14:46:37 +0800 Subject: [PATCH] =?UTF-8?q?uri=E9=A3=8E=E6=8E=A7=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xtools-app-sys/xtools-app-sys-risk/pom.xml | 6 ++ .../java/xtools/app/sys/risk/UriRisk.java | 15 +---- .../app/sys/risk/utils/RiskCaffeineUtils.java | 59 +++++++++++++++++++ 3 files changed, 68 insertions(+), 12 deletions(-) create mode 100644 xtools-app-sys/xtools-app-sys-risk/src/main/java/xtools/app/sys/risk/utils/RiskCaffeineUtils.java diff --git a/xtools-app-sys/xtools-app-sys-risk/pom.xml b/xtools-app-sys/xtools-app-sys-risk/pom.xml index 4ecf797..b71db4f 100644 --- a/xtools-app-sys/xtools-app-sys-risk/pom.xml +++ b/xtools-app-sys/xtools-app-sys-risk/pom.xml @@ -31,6 +31,12 @@ xtools-app-sys-api + + + + com.github.ben-manes.caffeine + caffeine + \ No newline at end of file diff --git a/xtools-app-sys/xtools-app-sys-risk/src/main/java/xtools/app/sys/risk/UriRisk.java b/xtools-app-sys/xtools-app-sys-risk/src/main/java/xtools/app/sys/risk/UriRisk.java index cd353df..bd19113 100644 --- a/xtools-app-sys/xtools-app-sys-risk/src/main/java/xtools/app/sys/risk/UriRisk.java +++ b/xtools-app-sys/xtools-app-sys-risk/src/main/java/xtools/app/sys/risk/UriRisk.java @@ -1,17 +1,15 @@ package xtools.app.sys.risk; -import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import xtools.app.sys.api.SysRiskApi; import xtools.app.sys.enums.SysRiskType; import xtools.app.sys.model.dto.resp.SysRiskResp; +import xtools.app.sys.risk.utils.RiskCaffeineUtils; import xtools.app.sys.risk.utils.UriRiskUtils; import xtools.base.config.BaseParams; -import xtools.boot.cache.redis.base.RedisService; import xtools.core.CollectionUtils; -import xtools.core.StringUtils; import java.util.List; @@ -33,9 +31,6 @@ public class UriRisk implements BaseParams { private final SysRiskApi sysRiskApi; - @Resource - private RedisService redisService; - /** * 初始化 */ @@ -60,13 +55,9 @@ public class UriRisk implements BaseParams { * */ public boolean risk(String sysType, String uri) { - String cache = redisService.get(UriRiskUtils.getKey(sysType), String.class); - if (StringUtils.isBlank(cache)) { - return false; - } - String[] arr = cache.split(CP_COMMA); + List cache = RiskCaffeineUtils.getUriRisk(sysType); // 匹配uri - for (String str : arr) { + for (String str : cache) { if (uri.contains(str)) { return true; } diff --git a/xtools-app-sys/xtools-app-sys-risk/src/main/java/xtools/app/sys/risk/utils/RiskCaffeineUtils.java b/xtools-app-sys/xtools-app-sys-risk/src/main/java/xtools/app/sys/risk/utils/RiskCaffeineUtils.java new file mode 100644 index 0000000..ff30396 --- /dev/null +++ b/xtools-app-sys/xtools-app-sys-risk/src/main/java/xtools/app/sys/risk/utils/RiskCaffeineUtils.java @@ -0,0 +1,59 @@ +package xtools.app.sys.risk.utils; + +import com.github.benmanes.caffeine.cache.Cache; +import com.github.benmanes.caffeine.cache.Caffeine; +import xtools.base.config.BaseParams; +import xtools.boot.cache.redis.utils.RedisUtils; +import xtools.core.ArrUtils; +import xtools.core.StringUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.concurrent.TimeUnit; + +/** + *

Title : RiskCaffeineUtils

+ *

Description : RiskCaffeineUtils

+ *

DevelopTools : Idea_x64_v2026.1

+ *

DevelopSystem : Windows11

+ *

Company : org.xujun

+ * + * @author : XuJun + * @version : 1.0.0 + * @date : 2026/4/25 14:28 + */ +public class RiskCaffeineUtils implements BaseParams { + + /** + * URI风控缓存 + */ + private static final Cache> URI_RISK; + + // 初始化 + static { + URI_RISK = Caffeine.newBuilder().expireAfterWrite(CP_NUM20, TimeUnit.SECONDS).build(); + } + + /** + * 获取URI风控缓存 + * + * @param sysType 系统类型 + * @return URI风控缓存 + */ + public static List getUriRisk(String sysType) { + List data = URI_RISK.getIfPresent(sysType); + if (Objects.nonNull(data)) { + return data; + } + String cache = RedisUtils.get().get(UriRiskUtils.getKey(sysType), String.class); + List riskList; + if (StringUtils.isNotBlank(cache)) { + riskList = ArrUtils.toStringList(cache); + } else { + riskList = new ArrayList<>(); + } + URI_RISK.put(sysType, riskList); + return riskList; + } +}