|
@@ -0,0 +1,86 @@
|
|
|
+package com.xy.redis;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.xy.collections.list.JArrayList;
|
|
|
+import com.xy.collections.list.JList;
|
|
|
+import com.xy.collections.map.JMap;
|
|
|
+import com.xy.entity.*;
|
|
|
+import com.xy.entity.join.SysMenuJoinSysRoleMenu;
|
|
|
+import com.xy.mapper.SysDeptMapper;
|
|
|
+import com.xy.mapper.SysMenuMapper;
|
|
|
+import com.xy.mapper.SysRoleMapper;
|
|
|
+import com.xy.mapper.SysSystemMapper;
|
|
|
+import com.xy.utils.Emptys;
|
|
|
+import com.xy.utils.SpringBeanUtils;
|
|
|
+import icu.mhb.mybatisplus.plugln.core.JoinLambdaWrapper;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 业务系统redis工具类
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class WorkRedisCache {
|
|
|
+
|
|
|
+ private static String getKey(Long loginId) {
|
|
|
+ return String.format("%s:%d", "work_menu", loginId);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 缓存权限相关到redis
|
|
|
+ *
|
|
|
+ * @param loginId 登录id
|
|
|
+ */
|
|
|
+ public static void cache(Long loginId) {
|
|
|
+ SysSystemMapper sysSystemMapper = SpringBeanUtils.getBean(SysSystemMapper.class);
|
|
|
+ SysRoleMapper sysRoleMapper = SpringBeanUtils.getBean(SysRoleMapper.class);
|
|
|
+ SysDeptMapper sysDeptMapper = SpringBeanUtils.getBean(SysDeptMapper.class);
|
|
|
+ SysMenuMapper sysMenuMapper = SpringBeanUtils.getBean(SysMenuMapper.class);
|
|
|
+ //获取登录人所有系统
|
|
|
+ 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(SysUserRole.class, SysUserRole::getRoleId, SysRole::getId)
|
|
|
+ .eq(SysUserRole::getWorkUserId, 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<SysDept> sysDeptJoinLambdaWrapper = new JoinLambdaWrapper<>(SysDept.class)
|
|
|
+ .eq(SysDept::getStatus, true)
|
|
|
+ .innerJoin(SysUserDept.class, SysUserDept::getDeptId, SysUserDept::getId)
|
|
|
+ .eq(SysUserDept::getWorkUserId, loginId)
|
|
|
+ .end();
|
|
|
+ List<SysDept> sysDepts = sysDeptMapper.joinSelectList(sysDeptJoinLambdaWrapper, SysDept.class);
|
|
|
+ JList<Long> sysDeptsIds = new JArrayList<>(sysDepts).getProperty(SysDept::getId);
|
|
|
+ //获取登录人所有部门角色
|
|
|
+ if (sysDeptsIds.size() > 0) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取登录人所有角色菜单
|
|
|
+ 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();
|
|
|
+ }
|
|
|
+
|
|
|
+}
|