Skip to content

Commit 06d54ec

Browse files
committed
feat: api role 关系存到 redis
1 parent 1f8b6f9 commit 06d54ec

2 files changed

Lines changed: 17 additions & 2 deletions

File tree

simple-framework/src/main/java/top/cadecode/framework/model/service/SecurityApiService.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@
1111
*/
1212
public interface SecurityApiService {
1313

14+
/**
15+
* api role 缓存前缀
16+
*/
17+
String API_ROLE_CACHE_PREFIX = "security:api.role:list";
18+
19+
1420
/**
1521
* 查询所有接口及其角色
1622
*

simple-framework/src/main/java/top/cadecode/framework/model/service/impl/SecurityApiServiceImpl.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22

33
import lombok.RequiredArgsConstructor;
44
import org.springframework.cache.annotation.Cacheable;
5+
import org.springframework.data.redis.core.RedisTemplate;
56
import org.springframework.stereotype.Service;
67
import top.cadecode.framework.model.mapper.SecurityApiMapper;
78
import top.cadecode.framework.model.service.SecurityApiService;
89
import top.cadecode.framework.model.vo.SecurityApiVo;
910

1011
import java.util.List;
12+
import java.util.Optional;
1113

1214
/**
1315
* @author Cade Li
@@ -19,10 +21,17 @@
1921
public class SecurityApiServiceImpl implements SecurityApiService {
2022

2123
private final SecurityApiMapper securityApiMapper;
24+
private final RedisTemplate<String, List<SecurityApiVo>> redisTemplate;
2225

23-
@Cacheable(cacheNames = "apiRoleCache", cacheManager = "securityCacheManager")
26+
@Cacheable(cacheNames = API_ROLE_CACHE_PREFIX, cacheManager = "caffeineCache")
2427
@Override
2528
public List<SecurityApiVo> listSecurityApiVos() {
26-
return securityApiMapper.listSecurityApiVos();
29+
List<SecurityApiVo> securityApiVos = redisTemplate.opsForValue().get(API_ROLE_CACHE_PREFIX);
30+
return Optional.ofNullable(securityApiVos)
31+
.orElseGet(() -> {
32+
List<SecurityApiVo> vos = securityApiMapper.listSecurityApiVos();
33+
redisTemplate.opsForValue().set(API_ROLE_CACHE_PREFIX, vos);
34+
return vos;
35+
});
2736
}
2837
}

0 commit comments

Comments
 (0)