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;
+ }
+}