mirror of https://gitee.com/stylefeng/roses
【8.3.3】【system】【cache】添加角色名称的缓存
parent
d5fa424336
commit
39a8a0c439
|
@ -28,4 +28,11 @@ public interface RoleConstants {
|
||||||
*/
|
*/
|
||||||
String ROLE_BIND_MENU_OPTIONS_EVENT = "ROLE_BIND_MENU_OPTIONS_EVENT";
|
String ROLE_BIND_MENU_OPTIONS_EVENT = "ROLE_BIND_MENU_OPTIONS_EVENT";
|
||||||
|
|
||||||
|
//-------------------------------角色名称的缓存-------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色名称的缓存
|
||||||
|
*/
|
||||||
|
String ROLE_NAME_CACHE_PREFIX = "ROLE:NAME:";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
package cn.stylefeng.roses.kernel.sys.modular.role.cache.rolename;
|
||||||
|
|
||||||
|
import cn.hutool.cache.impl.TimedCache;
|
||||||
|
import cn.stylefeng.roses.kernel.cache.memory.AbstractMemoryCacheOperator;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.api.constants.RoleConstants;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色名称的缓存
|
||||||
|
* <p>
|
||||||
|
* key是角色id,value是角色名称
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @since 2025/1/10 14:33
|
||||||
|
*/
|
||||||
|
public class RoleNameMemoryCache extends AbstractMemoryCacheOperator<String> {
|
||||||
|
|
||||||
|
public RoleNameMemoryCache(TimedCache<String, String> timedCache) {
|
||||||
|
super(timedCache);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCommonKeyPrefix() {
|
||||||
|
return RoleConstants.ROLE_NAME_CACHE_PREFIX;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
package cn.stylefeng.roses.kernel.sys.modular.role.cache.rolename;
|
||||||
|
|
||||||
|
import cn.stylefeng.roses.kernel.cache.redis.AbstractRedisCacheOperator;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.api.constants.RoleConstants;
|
||||||
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色名称的缓存
|
||||||
|
* <p>
|
||||||
|
* key是角色id,value是角色名称
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @since 2025/1/10 14:33
|
||||||
|
*/
|
||||||
|
public class RoleNameRedisCache extends AbstractRedisCacheOperator<String> {
|
||||||
|
|
||||||
|
public RoleNameRedisCache(RedisTemplate<String, String> redisTemplate) {
|
||||||
|
super(redisTemplate);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCommonKeyPrefix() {
|
||||||
|
return RoleConstants.ROLE_NAME_CACHE_PREFIX;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -7,6 +7,7 @@ import cn.hutool.core.collection.ListUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.extra.spring.SpringUtil;
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
|
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
|
||||||
|
import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi;
|
||||||
import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
|
import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
|
||||||
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
|
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
|
||||||
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
|
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
|
||||||
|
@ -67,6 +68,9 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||||
@Resource
|
@Resource
|
||||||
private SysRoleLimitService sysRoleLimitService;
|
private SysRoleLimitService sysRoleLimitService;
|
||||||
|
|
||||||
|
@Resource(name = "roleNameCache")
|
||||||
|
private CacheOperatorApi<String> roleNameCache;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void add(SysRoleRequest sysRoleRequest) {
|
public void add(SysRoleRequest sysRoleRequest) {
|
||||||
|
|
||||||
|
@ -170,6 +174,9 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||||
|
|
||||||
this.updateById(sysRole);
|
this.updateById(sysRole);
|
||||||
|
|
||||||
|
// 清空缓存
|
||||||
|
this.roleNameCache.remove(sysRole.getRoleId().toString());
|
||||||
|
|
||||||
BusinessLogUtil.addContent("修改后角色信息如下:\n", sysRole);
|
BusinessLogUtil.addContent("修改后角色信息如下:\n", sysRole);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -336,11 +343,18 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 先从缓存中获取
|
||||||
|
String roleName = this.roleNameCache.get(roleId.toString());
|
||||||
|
if (roleName != null) {
|
||||||
|
return roleName;
|
||||||
|
}
|
||||||
|
|
||||||
LambdaQueryWrapper<SysRole> sysRoleLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SysRole> sysRoleLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
sysRoleLambdaQueryWrapper.eq(SysRole::getRoleId, roleId);
|
sysRoleLambdaQueryWrapper.eq(SysRole::getRoleId, roleId);
|
||||||
sysRoleLambdaQueryWrapper.select(SysRole::getRoleName);
|
sysRoleLambdaQueryWrapper.select(SysRole::getRoleName);
|
||||||
SysRole sysRole = this.getOne(sysRoleLambdaQueryWrapper, false);
|
SysRole sysRole = this.getOne(sysRoleLambdaQueryWrapper, false);
|
||||||
if (sysRole != null) {
|
if (sysRole != null) {
|
||||||
|
this.roleNameCache.put(roleId.toString(), sysRole.getRoleName());
|
||||||
return sysRole.getRoleName();
|
return sysRole.getRoleName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@ import cn.hutool.cache.impl.TimedCache;
|
||||||
import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi;
|
import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi;
|
||||||
import cn.stylefeng.roses.kernel.sys.api.constants.SysConstants;
|
import cn.stylefeng.roses.kernel.sys.api.constants.SysConstants;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.cache.rolemenu.RoleMenuMemoryCache;
|
import cn.stylefeng.roses.kernel.sys.modular.role.cache.rolemenu.RoleMenuMemoryCache;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.role.cache.rolename.RoleNameMemoryCache;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.cache.roleoptions.RoleMenuOptionsMemoryCache;
|
import cn.stylefeng.roses.kernel.sys.modular.role.cache.roleoptions.RoleMenuOptionsMemoryCache;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
|
@ -72,4 +73,16 @@ public class RoleMemoryCacheAutoConfiguration {
|
||||||
return new RoleMenuOptionsMemoryCache(cache);
|
return new RoleMenuOptionsMemoryCache(cache);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色名称
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @since 2025/1/10 14:37
|
||||||
|
*/
|
||||||
|
@Bean
|
||||||
|
public CacheOperatorApi<String> roleNameCache() {
|
||||||
|
TimedCache<String, String> cache = CacheUtil.newTimedCache(1000 * SysConstants.DEFAULT_SYS_CACHE_TIMEOUT_SECONDS);
|
||||||
|
return new RoleNameMemoryCache(cache);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@ package cn.stylefeng.roses.kernel.sys.starter.cache.role;
|
||||||
import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi;
|
import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi;
|
||||||
import cn.stylefeng.roses.kernel.cache.redis.util.CreateRedisTemplateUtil;
|
import cn.stylefeng.roses.kernel.cache.redis.util.CreateRedisTemplateUtil;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.cache.rolemenu.RoleMenuRedisCache;
|
import cn.stylefeng.roses.kernel.sys.modular.role.cache.rolemenu.RoleMenuRedisCache;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.role.cache.rolename.RoleNameRedisCache;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.cache.roleoptions.RoleMenuOptionsRedisCache;
|
import cn.stylefeng.roses.kernel.sys.modular.role.cache.roleoptions.RoleMenuOptionsRedisCache;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
|
@ -70,4 +71,16 @@ public class RoleRedisCacheAutoConfiguration {
|
||||||
return new RoleMenuOptionsRedisCache(redisTemplate);
|
return new RoleMenuOptionsRedisCache(redisTemplate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色名称的缓存
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @since 2025/1/10 14:37
|
||||||
|
*/
|
||||||
|
@Bean
|
||||||
|
public CacheOperatorApi<String> roleNameCache(RedisConnectionFactory redisConnectionFactory) {
|
||||||
|
RedisTemplate<String, String> redisTemplate = CreateRedisTemplateUtil.createObject(redisConnectionFactory);
|
||||||
|
return new RoleNameRedisCache(redisTemplate);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue