From 8acb322d4933977edfc7d3fcd37cd59c2e9590cb Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: Mon, 21 Sep 2020 18:10:26 +0800
Subject: [PATCH] 菜单&数据权限新增(展开/折叠 全选/全不选 父子联动)
---
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java | 32 +++++++++++++++++++-------------
1 files changed, 19 insertions(+), 13 deletions(-)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
index 7c6cf71..ecba62c 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
@@ -13,12 +13,14 @@
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.system.api.domain.SysRole;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.domain.SysMenu;
import com.ruoyi.system.domain.vo.MetaVo;
import com.ruoyi.system.domain.vo.RouterVo;
import com.ruoyi.system.domain.vo.TreeSelect;
import com.ruoyi.system.mapper.SysMenuMapper;
+import com.ruoyi.system.mapper.SysRoleMapper;
import com.ruoyi.system.mapper.SysRoleMenuMapper;
import com.ruoyi.system.service.ISysMenuService;
@@ -34,6 +36,9 @@
@Autowired
private SysMenuMapper menuMapper;
+
+ @Autowired
+ private SysRoleMapper roleMapper;
@Autowired
private SysRoleMenuMapper roleMenuMapper;
@@ -121,9 +126,11 @@
* @param roleId 角色ID
* @return 选中菜单列表
*/
+ @Override
public List<Integer> selectMenuListByRoleId(Long roleId)
{
- return menuMapper.selectMenuListByRoleId(roleId);
+ SysRole role = roleMapper.selectRoleById(roleId);
+ return menuMapper.selectMenuListByRoleId(roleId, role.isMenuCheckStrictly());
}
/**
@@ -177,14 +184,19 @@
public List<SysMenu> buildMenuTree(List<SysMenu> menus)
{
List<SysMenu> returnList = new ArrayList<SysMenu>();
+ List<Long> tempList = new ArrayList<Long>();
+ for (SysMenu dept : menus)
+ {
+ tempList.add(dept.getMenuId());
+ }
for (Iterator<SysMenu> iterator = menus.iterator(); iterator.hasNext();)
{
- SysMenu t = (SysMenu) iterator.next();
- // 根据传入的某个父节点ID,遍历该父节点的所有子节点
- if (t.getParentId() == 0)
+ SysMenu menu = (SysMenu) iterator.next();
+ // 如果是顶级节点, 遍历该父节点的所有子节点
+ if (!tempList.contains(menu.getParentId()))
{
- recursionFn(menus, t);
- returnList.add(t);
+ recursionFn(menus, menu);
+ returnList.add(menu);
}
}
if (returnList.isEmpty())
@@ -405,13 +417,7 @@
{
if (hasChild(list, tChild))
{
- // 判断是否有子节点
- Iterator<SysMenu> it = childList.iterator();
- while (it.hasNext())
- {
- SysMenu n = (SysMenu) it.next();
- recursionFn(list, n);
- }
+ recursionFn(list, tChild);
}
}
}
--
Gitblit v1.9.3