|
@@ -33,11 +33,6 @@ import java.util.Map;
|
|
|
@Component
|
|
|
public class RedisCache {
|
|
|
|
|
|
- /**
|
|
|
- * 权限系统默认系统ID,代表本系统
|
|
|
- */
|
|
|
- public static final Long DEFAULT_STSTEM_ID = 1L;
|
|
|
-
|
|
|
private static RedisService<List<CacheEntity>> getRedisService() {
|
|
|
return SpringBeanUtils.getBean(RedisService.class);
|
|
|
}
|
|
@@ -46,59 +41,6 @@ public class RedisCache {
|
|
|
return String.format("%s:%d", "menu", loginId);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 缓存权限系统权限到redis
|
|
|
- *
|
|
|
- * @param loginId 登录id
|
|
|
- */
|
|
|
- public static void systemCache(Long loginId) {
|
|
|
- SysSystemMapper sysSystemMapper = SpringBeanUtils.getBean(SysSystemMapper.class);
|
|
|
- SysRoleMapper sysRoleMapper = SpringBeanUtils.getBean(SysRoleMapper.class);
|
|
|
- SysMenuMapper sysMenuMapper = SpringBeanUtils.getBean(SysMenuMapper.class);
|
|
|
- RedisService<List<CacheEntity>> roleMenuRedisService = getRedisService();
|
|
|
- //获取登录人所有系统
|
|
|
- List<SysSystem> sysSystems = sysSystemMapper.selectList(new LambdaQueryWrapper<SysSystem>()
|
|
|
- .eq(SysSystem::getSysUserId, loginId)
|
|
|
- .eq(SysSystem::getStatus, true)
|
|
|
- );
|
|
|
- if (!Emptys.check(sysSystems)) {
|
|
|
- return;
|
|
|
- }
|
|
|
- //获取登录人所有角色
|
|
|
- JoinLambdaWrapper<SysRole> sysRoleJoinLambdaWrapper = new JoinLambdaWrapper<>(SysRole.class)
|
|
|
- .eq(SysRole::getStatus, true)
|
|
|
- .innerJoin(SysSystemUserRole.class, SysSystemUserRole::getRoleId, SysRole::getId)
|
|
|
- .eq(SysSystemUserRole::getSystemUserId, loginId)
|
|
|
- .end();
|
|
|
- List<SysRole> sysRoles = sysRoleMapper.joinSelectList(sysRoleJoinLambdaWrapper, SysRole.class);
|
|
|
- JList<Long> sysRoleIds = new JArrayList<>(sysRoles).getProperty(SysRole::getId);
|
|
|
- if (sysRoleIds.size() == 0) {
|
|
|
- return;
|
|
|
- }
|
|
|
- //获取登录人所有角色菜单
|
|
|
- JoinLambdaWrapper<SysMenu> sysMenuJoinLambdaWrapper = new JoinLambdaWrapper<>(SysMenu.class)
|
|
|
- .eq(SysMenu::getStatus, true)
|
|
|
- .innerJoin(SysRoleMenu.class, SysRoleMenu::getMenuId, SysMenu::getId)
|
|
|
- .selectAs(cb -> cb
|
|
|
- .add(SysRoleMenu::getSelectIsAdmin)
|
|
|
- .add(SysRoleMenu::getRoleId)
|
|
|
- )
|
|
|
- .in(SysRoleMenu::getRoleId, sysRoleIds)
|
|
|
- .end();
|
|
|
- List<SysMenuJoinSysRoleMenu> sysMenus = sysMenuMapper.joinSelectList(sysMenuJoinLambdaWrapper, SysMenuJoinSysRoleMenu.class);
|
|
|
- JMap<Long, List<SysMenuJoinSysRoleMenu>> sysMenuMaps = new JArrayList<>(sysMenus).toMap(SysMenuJoinSysRoleMenu::getRoleId).group();
|
|
|
- sysSystems.forEach(sysSystem -> {
|
|
|
- List<CacheEntity> cacheEntitys = new ArrayList<>();
|
|
|
- sysRoles.forEach(sysRole -> {
|
|
|
- CacheEntity cacheEntity = new CacheEntity()
|
|
|
- .setRoleId(sysRole.getId())
|
|
|
- .setList(sysMenuMaps.get(sysRole.getId()));
|
|
|
- cacheEntitys.add(cacheEntity);
|
|
|
- });
|
|
|
- roleMenuRedisService.setMap(getKey(loginId), sysSystem.getId().toString(), cacheEntitys);
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 缓存业务系统权限到redis
|
|
|
*
|
|
@@ -111,10 +53,11 @@ public class RedisCache {
|
|
|
SysMenuMapper sysMenuMapper = SpringBeanUtils.getBean(SysMenuMapper.class);
|
|
|
RedisService<List<RedisCache.CacheEntity>> roleMenuRedisService = getRedisService();
|
|
|
//获取登录人所有系统
|
|
|
- List<SysSystem> sysSystems = sysSystemMapper.selectList(new LambdaQueryWrapper<SysSystem>()
|
|
|
- .eq(SysSystem::getSysUserId, loginId)
|
|
|
+ JoinLambdaWrapper<SysSystem> sysSystemsJoinLambdaWrapper = new JoinLambdaWrapper<>(SysSystem.class)
|
|
|
.eq(SysSystem::getStatus, true)
|
|
|
- );
|
|
|
+ .innerJoin(SysUserRole.class, SysUserRole::getRoleId, SysRole::getId)
|
|
|
+ .end();
|
|
|
+ List<SysSystem> sysSystems = sysSystemMapper.joinSelectList(sysSystemsJoinLambdaWrapper, SysSystem.class);
|
|
|
if (!Emptys.check(sysSystems)) {
|
|
|
return;
|
|
|
}
|
|
@@ -197,16 +140,6 @@ public class RedisCache {
|
|
|
return sysMenuJoinSysRoleMenus;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 获取菜单
|
|
|
- *
|
|
|
- * @param loginId 登录id
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static List<SysMenuJoinSysRoleMenu> getMenu(Long loginId) {
|
|
|
- return getMenu(loginId, DEFAULT_STSTEM_ID);
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 获取菜单树
|
|
|
*
|
|
@@ -225,16 +158,6 @@ public class RedisCache {
|
|
|
return tops;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 获取菜单树
|
|
|
- *
|
|
|
- * @param loginId 登录id
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static List<SysMenuJoinSysRoleMenu> getMenuTree(Long loginId) {
|
|
|
- return getMenuTree(loginId, DEFAULT_STSTEM_ID);
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 判断数据查询权限
|
|
|
*
|
|
@@ -263,17 +186,6 @@ public class RedisCache {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 判断数据查询权限
|
|
|
- *
|
|
|
- * @param loginId 登录id
|
|
|
- * @return true=管理员数据查询权限 false=普通查询权限
|
|
|
- */
|
|
|
- public static boolean getDataAuth(Long loginId) {
|
|
|
- HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
|
|
- return getDataAuth(loginId, DEFAULT_STSTEM_ID, request.getRequestURI());
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 判断数据查询权限(引用传递,业务系统无法使用)
|
|
|
*
|
|
@@ -291,18 +203,6 @@ public class RedisCache {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 判断数据查询权限(引用传递,业务系统无法使用)
|
|
|
- *
|
|
|
- * @param loginId 登录id
|
|
|
- * @param lambdaQueryWrapper 查询构造器
|
|
|
- * @param function 普通查询权限时,条件lambda引用字段
|
|
|
- * @return true=管理员数据查询权限 false=普通查询权限
|
|
|
- */
|
|
|
- public static <T> boolean getDataAuth(Long loginId, LambdaQueryWrapper<T> lambdaQueryWrapper, SFunction<T, ?> function) {
|
|
|
- return getDataAuth(loginId, DEFAULT_STSTEM_ID, lambdaQueryWrapper, function);
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 获取所有系统ID
|
|
|
*
|
|
@@ -319,6 +219,17 @@ public class RedisCache {
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 检验系统ID是否属于当前登录人
|
|
|
+ *
|
|
|
+ * @param loginId 登录id
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static Boolean checkSystemId(Long loginId, Long systemId) {
|
|
|
+ Map<String, List<CacheEntity>> map = getRedisService().getMap(getKey(loginId));
|
|
|
+ return map.containsKey(systemId);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 获取所有角色ID
|
|
|
*
|
|
@@ -335,16 +246,6 @@ public class RedisCache {
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 获取所有角色ID
|
|
|
- *
|
|
|
- * @param loginId 登录id
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static List<Long> getRoleIds(Long loginId) {
|
|
|
- return getRoleIds(loginId, DEFAULT_STSTEM_ID);
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 获取所有菜单接口uri
|
|
|
*
|
|
@@ -370,16 +271,6 @@ public class RedisCache {
|
|
|
return list.comparing();
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 获取所有菜单接口uri
|
|
|
- *
|
|
|
- * @param loginId 登录id
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static List<String> getMenuInterfaceUri(Long loginId) {
|
|
|
- return getMenuInterfaceUri(loginId, DEFAULT_STSTEM_ID);
|
|
|
- }
|
|
|
-
|
|
|
@Data
|
|
|
@Accessors(chain = true)
|
|
|
public static class CacheEntity {
|