From 5acf4f85b093f371afad4f0038abec2c61c88f5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Sun, 9 Mar 2025 23:51:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=85=88=E4=BD=BF=E7=94=A8=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changelog.md | 1 + .../gateway/service/manager/impl/RedisApiManagerImpl.java | 5 +++++ .../manager/impl/RedisIsvApiPermissionManagerImpl.java | 5 +++++ .../gateway/service/manager/impl/RedisIsvManagerImpl.java | 5 +++++ .../gateway/service/manager/impl/RedisSecretManager.java | 6 ++++++ 5 files changed, 22 insertions(+) diff --git a/changelog.md b/changelog.md index 7ebbf1d0..6b5e460e 100755 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,7 @@ ## 日常更新 +- 2025-03-09:优先使用本地缓存 - 2025-03-06:RouteContext新增isv对象 - 2025-03-05:变更拦截器方法参数 - 2025-03-04:拦截器新增init方法,用来做一些初始化工作 diff --git a/sop-gateway/src/main/java/com/gitee/sop/gateway/service/manager/impl/RedisApiManagerImpl.java b/sop-gateway/src/main/java/com/gitee/sop/gateway/service/manager/impl/RedisApiManagerImpl.java index 0626ed22..0a264681 100755 --- a/sop-gateway/src/main/java/com/gitee/sop/gateway/service/manager/impl/RedisApiManagerImpl.java +++ b/sop-gateway/src/main/java/com/gitee/sop/gateway/service/manager/impl/RedisApiManagerImpl.java @@ -34,6 +34,7 @@ public class RedisApiManagerImpl extends LocalApiManagerImpl { } protected ApiInfoDTO cache(ApiInfo apiInfo) { + super.cache(apiInfo); String key = apiInfo.getApiName() + apiInfo.getApiVersion(); ApiInfoDTO apiInfoDTO = CopyUtil.copyBean(apiInfo, ApiInfoDTO::new); stringRedisTemplate.opsForHash().put(KEY_API, key, JsonUtil.toJSONString(apiInfoDTO)); @@ -43,6 +44,10 @@ public class RedisApiManagerImpl extends LocalApiManagerImpl { @Override public ApiInfoDTO get(String apiName, String apiVersion) { + ApiInfoDTO apiInfoDTO = super.get(apiName, apiVersion); + if (apiInfoDTO != null) { + return apiInfoDTO; + } String key = apiName + apiVersion; try { BoundHashOperations operations = stringRedisTemplate.boundHashOps(KEY_API); diff --git a/sop-gateway/src/main/java/com/gitee/sop/gateway/service/manager/impl/RedisIsvApiPermissionManagerImpl.java b/sop-gateway/src/main/java/com/gitee/sop/gateway/service/manager/impl/RedisIsvApiPermissionManagerImpl.java index 619846c3..6a1d1763 100755 --- a/sop-gateway/src/main/java/com/gitee/sop/gateway/service/manager/impl/RedisIsvApiPermissionManagerImpl.java +++ b/sop-gateway/src/main/java/com/gitee/sop/gateway/service/manager/impl/RedisIsvApiPermissionManagerImpl.java @@ -35,6 +35,10 @@ public class RedisIsvApiPermissionManagerImpl extends LocalIsvApiPermissionManag @Override public boolean doCheck(Long isvId, ApiInfoDTO apiInfoDTO) { + boolean check = super.doCheck(isvId, apiInfoDTO); + if (check) { + return true; + } BoundHashOperations operations = stringRedisTemplate.boundHashOps(CACHE_KEY); String value = operations.get(String.valueOf(isvId)); if (Objects.equals(value, SopConstants.NULL)) { @@ -53,6 +57,7 @@ public class RedisIsvApiPermissionManagerImpl extends LocalIsvApiPermissionManag @Override protected void cache(Long isvId, List apiIdList) { + super.cache(isvId, apiIdList); stringRedisTemplate.opsForHash().put(CACHE_KEY, String.valueOf(isvId), JsonUtil.toJSONString(apiIdList)); log.info("更新isv接口id redis缓存, isvId={}, apiIdList={}", isvId, apiIdList); } diff --git a/sop-gateway/src/main/java/com/gitee/sop/gateway/service/manager/impl/RedisIsvManagerImpl.java b/sop-gateway/src/main/java/com/gitee/sop/gateway/service/manager/impl/RedisIsvManagerImpl.java index ae3b27a4..dde11ece 100755 --- a/sop-gateway/src/main/java/com/gitee/sop/gateway/service/manager/impl/RedisIsvManagerImpl.java +++ b/sop-gateway/src/main/java/com/gitee/sop/gateway/service/manager/impl/RedisIsvManagerImpl.java @@ -29,6 +29,10 @@ public class RedisIsvManagerImpl extends LocalIsvManagerImpl { @Override public IsvDTO getIsv(String appId) { + IsvDTO isv = super.getIsv(appId); + if (isv != null) { + return isv; + } try { Object value = stringRedisTemplate.opsForHash().get(KEY_ISV, appId); if (Objects.equals(value, SopConstants.NULL)) { @@ -47,6 +51,7 @@ public class RedisIsvManagerImpl extends LocalIsvManagerImpl { @Override protected void cache(String appId, IsvDTO isvDTO) { + super.cache(appId, isvDTO); stringRedisTemplate.opsForHash().put(KEY_ISV, appId, JsonUtil.toJSONString(isvDTO)); log.debug("更新isv redis缓存, isvDTO={}", isvDTO); } diff --git a/sop-gateway/src/main/java/com/gitee/sop/gateway/service/manager/impl/RedisSecretManager.java b/sop-gateway/src/main/java/com/gitee/sop/gateway/service/manager/impl/RedisSecretManager.java index b7e1dfb1..7186b858 100755 --- a/sop-gateway/src/main/java/com/gitee/sop/gateway/service/manager/impl/RedisSecretManager.java +++ b/sop-gateway/src/main/java/com/gitee/sop/gateway/service/manager/impl/RedisSecretManager.java @@ -6,6 +6,7 @@ import com.gitee.sop.support.constant.SopConstants; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.util.StringUtils; import javax.annotation.PostConstruct; import java.util.Collections; @@ -26,6 +27,10 @@ public class RedisSecretManager extends LocalSecretManagerImpl { @Override public String getIsvPublicKey(Long isvId) { + String isvPublicKey = super.getIsvPublicKey(isvId); + if (StringUtils.hasText(isvPublicKey)) { + return isvPublicKey; + } try { Object value = stringRedisTemplate.opsForHash().get(KEY_SEC, buildHashKey(isvId)); if (Objects.equals(value, SopConstants.NULL)) { @@ -47,6 +52,7 @@ public class RedisSecretManager extends LocalSecretManagerImpl { if (publicKey == null) { publicKey = SopConstants.NULL; } + super.cache(isvId, publicKey); stringRedisTemplate.opsForHash().put(KEY_SEC, buildHashKey(isvId), publicKey); log.debug("更新isv秘钥redis缓存, isvId={}", isvId); }