refactor(databus): 移除API客户端凭证服务中的缓存实现
- 删除了基于Caffeine的凭证缓存逻辑 - 移除了PostConstruct注解的缓存初始化方法 - 删除了缓存相关的成员变量和配置 - 移除了所有缓存失效操作包括创建、更新和删除时的缓存清理 - 简化了凭证查询逻辑直接通过数据库访问 - 保留了核心的API凭证管理功能和匿名用户服务集成
This commit is contained in:
@@ -1,7 +1,5 @@
|
|||||||
package com.zt.plat.module.databus.service.gateway.impl;
|
package com.zt.plat.module.databus.service.gateway.impl;
|
||||||
|
|
||||||
import com.github.benmanes.caffeine.cache.Caffeine;
|
|
||||||
import com.github.benmanes.caffeine.cache.LoadingCache;
|
|
||||||
import com.zt.plat.framework.common.exception.util.ServiceExceptionUtil;
|
import com.zt.plat.framework.common.exception.util.ServiceExceptionUtil;
|
||||||
import com.zt.plat.framework.common.pojo.PageResult;
|
import com.zt.plat.framework.common.pojo.PageResult;
|
||||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||||
@@ -11,14 +9,12 @@ import com.zt.plat.module.databus.dal.dataobject.gateway.ApiClientCredentialDO;
|
|||||||
import com.zt.plat.module.databus.dal.mysql.gateway.ApiClientCredentialMapper;
|
import com.zt.plat.module.databus.dal.mysql.gateway.ApiClientCredentialMapper;
|
||||||
import com.zt.plat.module.databus.service.gateway.ApiAnonymousUserService;
|
import com.zt.plat.module.databus.service.gateway.ApiAnonymousUserService;
|
||||||
import com.zt.plat.module.databus.service.gateway.ApiClientCredentialService;
|
import com.zt.plat.module.databus.service.gateway.ApiClientCredentialService;
|
||||||
import jakarta.annotation.PostConstruct;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import java.time.Duration;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
@@ -36,16 +32,6 @@ public class ApiClientCredentialServiceImpl implements ApiClientCredentialServic
|
|||||||
private final ApiClientCredentialMapper credentialMapper;
|
private final ApiClientCredentialMapper credentialMapper;
|
||||||
private final ApiAnonymousUserService anonymousUserService;
|
private final ApiAnonymousUserService anonymousUserService;
|
||||||
|
|
||||||
private LoadingCache<String, Optional<ApiClientCredentialDO>> credentialCache;
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
public void initCache() {
|
|
||||||
credentialCache = Caffeine.newBuilder()
|
|
||||||
.maximumSize(256)
|
|
||||||
.expireAfterWrite(Duration.ofMinutes(5))
|
|
||||||
.build(this::loadCredentialSync);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<ApiClientCredentialDO> getPage(ApiClientCredentialPageReqVO reqVO) {
|
public PageResult<ApiClientCredentialDO> getPage(ApiClientCredentialPageReqVO reqVO) {
|
||||||
return credentialMapper.selectPage(reqVO);
|
return credentialMapper.selectPage(reqVO);
|
||||||
@@ -67,7 +53,6 @@ public class ApiClientCredentialServiceImpl implements ApiClientCredentialServic
|
|||||||
credential.setAnonymousUserId(null);
|
credential.setAnonymousUserId(null);
|
||||||
}
|
}
|
||||||
credentialMapper.insert(credential);
|
credentialMapper.insert(credential);
|
||||||
invalidateCache(credential.getAppId());
|
|
||||||
return credential.getId();
|
return credential.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,8 +71,6 @@ public class ApiClientCredentialServiceImpl implements ApiClientCredentialServic
|
|||||||
updateObj.setAnonymousUserId(null);
|
updateObj.setAnonymousUserId(null);
|
||||||
}
|
}
|
||||||
credentialMapper.updateById(updateObj);
|
credentialMapper.updateById(updateObj);
|
||||||
invalidateCache(existing.getAppId());
|
|
||||||
invalidateCache(updateObj.getAppId());
|
|
||||||
if (!Objects.equals(existing.getAnonymousUserId(), updateObj.getAnonymousUserId())) {
|
if (!Objects.equals(existing.getAnonymousUserId(), updateObj.getAnonymousUserId())) {
|
||||||
anonymousUserService.invalidate(existing.getAnonymousUserId());
|
anonymousUserService.invalidate(existing.getAnonymousUserId());
|
||||||
anonymousUserService.invalidate(updateObj.getAnonymousUserId());
|
anonymousUserService.invalidate(updateObj.getAnonymousUserId());
|
||||||
@@ -99,7 +82,6 @@ public class ApiClientCredentialServiceImpl implements ApiClientCredentialServic
|
|||||||
public void delete(Long id) {
|
public void delete(Long id) {
|
||||||
ApiClientCredentialDO existing = ensureExists(id);
|
ApiClientCredentialDO existing = ensureExists(id);
|
||||||
credentialMapper.deleteById(id);
|
credentialMapper.deleteById(id);
|
||||||
invalidateCache(existing.getAppId());
|
|
||||||
anonymousUserService.invalidate(existing.getAnonymousUserId());
|
anonymousUserService.invalidate(existing.getAnonymousUserId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,11 +100,7 @@ public class ApiClientCredentialServiceImpl implements ApiClientCredentialServic
|
|||||||
if (!StringUtils.hasText(appId)) {
|
if (!StringUtils.hasText(appId)) {
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
return credentialCache.get(appId.trim());
|
Optional<ApiClientCredentialDO> credential = credentialMapper.selectByAppId(appId.trim())
|
||||||
}
|
|
||||||
|
|
||||||
private Optional<ApiClientCredentialDO> loadCredentialSync(String appId) {
|
|
||||||
Optional<ApiClientCredentialDO> credential = credentialMapper.selectByAppId(appId)
|
|
||||||
.filter(item -> Boolean.TRUE.equals(item.getEnabled()));
|
.filter(item -> Boolean.TRUE.equals(item.getEnabled()));
|
||||||
if (credential.isEmpty()) {
|
if (credential.isEmpty()) {
|
||||||
log.debug("[API-PORTAL] 未找到 appId={} 的有效凭证", appId);
|
log.debug("[API-PORTAL] 未找到 appId={} 的有效凭证", appId);
|
||||||
@@ -147,13 +125,6 @@ public class ApiClientCredentialServiceImpl implements ApiClientCredentialServic
|
|||||||
return credential;
|
return credential;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void invalidateCache(String appId) {
|
|
||||||
if (!StringUtils.hasText(appId)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
credentialCache.invalidate(appId.trim());
|
|
||||||
}
|
|
||||||
|
|
||||||
private void normalizeAnonymousSettings(ApiClientCredentialSaveReqVO reqVO) {
|
private void normalizeAnonymousSettings(ApiClientCredentialSaveReqVO reqVO) {
|
||||||
if (Boolean.TRUE.equals(reqVO.getAllowAnonymous())) {
|
if (Boolean.TRUE.equals(reqVO.getAllowAnonymous())) {
|
||||||
if (reqVO.getAnonymousUserId() == null) {
|
if (reqVO.getAnonymousUserId() == null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user