博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
根据登陆用户获取相应权限菜单
阅读量:5174 次
发布时间:2019-06-13

本文共 2535 字,大约阅读时间需要 8 分钟。

通过登录人userId获取对应角色 再获取对应角色下的权限菜单(用户角色关联表,角色菜单关联表)1,构建递归获取父节点方法 (因为角色菜单关联表中保存的只有菜单的叶子节点 所以要递归获取父节点) private void getUserMenus(HashMap
parentAndChildren, SysMenu sysMenu) { if (!parentAndChildren.containsKey(sysMenu.getRowId())) { parentAndChildren.put(sysMenu.getRowId(), sysMenu); } if (!parentAndChildren.containsKey(sysMenu.getParentId())) { SysMenu p = sysMenuMapper.find(sysMenu.getParentId()); if (p != null) { getUserMenus(parentAndChildren, p); } } }2,递归获取子节点private void getTreeStructure(SysMenuDto root, List
orgs) { for (SysMenu org : orgs) { if (org.getParentId().equals(root.getId())) { SysMenuDto s = SysMenuDto.convertSysMenuEntity(org); getTreeStructure(s, orgs); if (root.getChildrens() == null) { root.setChildrens(new ArrayList<>()); } root.getChildrens().add(s); } } }3,构建树形数据结构 public List
getSysMenuTreeDataByAdmin(String userId,String did) { List
list = new ArrayList<>(); //查询所有的菜单列表 List
sysMenuList = sysRoleMapper.findListVisible(); //查询所有的菜单编码列表 List
sysMenuIdList = sysRoleMapper.findListId(); //获取收藏的菜单 List
sysUserFavoriteMenuList = sysUserFavoriteMenuMapper.getSysUserFavoriteMenu(userId, did); //遍历判断是否是收藏的 for(SysMenu sysMenu : sysMenuList){ SysUserFavoriteMenu sysUserFavoriteMenu = sysUserFavoriteMenuMapper.getFavoriteMenu(userId,did,sysMenu.getRowId()); if(sysUserFavoriteMenu != null){ //是否收藏标志设置为收藏 sysMenu.setIsFavorite("1"); }else{ sysMenu.setIsFavorite("0"); } } for(SysUserFavoriteMenu sysUserFavoriteMenu : sysUserFavoriteMenuList){ //判断收藏的菜单在所有的菜单中是否存在 不存在就把这个用户收藏的菜单移除 if(!sysMenuIdList.contains(sysUserFavoriteMenu.getMenuId())){ sysUserFavoriteMenuMapper.deleteFavoriteMenu(sysUserFavoriteMenu.getMenuId()); } } //获取该经销商默认设置的系统菜单版本 String verdion=null; //获取顶级菜单 List
topMenuList = sysRoleMapper.selectTopMenu(verdion); if (null == topMenuList) { return null; } for (SysMenu menu : topMenuList) { SysMenuDto s = SysMenuDto.convertSysMenuEntity(menu); getTreeStructure(s, sysMenuList); list.add(s); } //排序 list.sort((SysMenuDto s1,SysMenuDto s2) -> s1.getSort() >= s2.getSort() ? 1 : -1); logger.info("获取最终菜单:{}", JsonUtil.obj2String(list)); return list; }

 

转载于:https://www.cnblogs.com/pan-my/p/11428687.html

你可能感兴趣的文章
接口限流算法
查看>>
HDU - 2845 Beans
查看>>
html设置背景图片并自适应
查看>>
深入研究C语言 第一篇(续)
查看>>
数字 字符串 转换
查看>>
Git时光机穿梭之撤销修改
查看>>
雷林鹏分享:MySQL 插入数据
查看>>
C#设计模式之抽象工厂
查看>>
NOSQL
查看>>
Oracle存储过程由例子到理论
查看>>
正因为我们是前端,所以代码更需要优雅
查看>>
实验四 主存空间的分配和回收
查看>>
LeetCode 14. 最长公共前缀(Longest Common Prefix)
查看>>
Ubuntu 12.04 编译最新版u-boot-2012.04
查看>>
Access转Sqlite的最简单的方法(不需要DB Manager)
查看>>
cordova AndroidStudio3.0 升级报错问题
查看>>
【译】10个机器学习的JavaScript示例
查看>>
虚拟机的三种网络模式
查看>>
第九章 设计用户界面 之 设计实现界面行为
查看>>
检测一个对象方法是否存在
查看>>