From 03f1f3372a10a08f96f3308bfa099e86a55046d0 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期二, 30 一月 2024 09:32:38 +0800 Subject: [PATCH] 修改数据权限bug --- ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysMenuServiceImpl.java | 194 ++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 178 insertions(+), 16 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysMenuServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysMenuServiceImpl.java index c759eae..45d15b0 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysMenuServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysMenuServiceImpl.java @@ -1,15 +1,5 @@ package com.ruoyi.system.service.impl.sys; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.utils.StringUtils; @@ -24,6 +14,12 @@ import com.ruoyi.system.mapper.sys.SysRoleMapper; import com.ruoyi.system.mapper.sys.SysRoleMenuMapper; import com.ruoyi.system.service.sys.ISysMenuService; +import com.ruoyi.system.service.sys.ISysUserService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; /** * 菜单 业务层处理 @@ -35,14 +31,19 @@ { public static final String PREMISSION_STRING = "perms[\"{0}\"]"; - @Autowired + @Resource private SysMenuMapper menuMapper; - @Autowired + @Resource private SysRoleMapper roleMapper; - @Autowired + @Resource private SysRoleMenuMapper roleMenuMapper; + + @Resource + private ISysUserService sysUserService; + + /** * 根据用户查询系统菜单列表 @@ -56,6 +57,43 @@ return selectMenuList(new SysMenu(), userId); } + /** + * 根据用户查询系统菜单列表 + * + * @param userId 用户ID + * @return 菜单列表 + */ + @Override + public List<SysMenu> selectDeptMenuList(Long userId){ + SysUser sysUser = sysUserService.selectUserById(userId); + Long deptId = sysUser.getDeptId(); + List<SysMenu> menuList = menuMapper.selectDeptMenuList(deptId); + return menuList; + } + + /** + * 根据用户查询系统菜单列表 + * + * @param userId 用户ID + * @return 菜单列表 + */ + @Override + public List<SysMenu> selectStaffMenuList(Long userId){ + return selectStaffMenuList(new SysMenu(), userId); + } + + /** + * 根据用户查询系统菜单列表 + * + * @param userId 用户ID + * @return 菜单列表 + */ + @Override + public List<SysMenu> selectStaffDeptMenuList(Long userId){ + SysUser sysUser = sysUserService.selectUserById(userId); + Long deptId = sysUser.getDeptId(); + return menuMapper.selectStaffDeptMenuList(deptId); + } /** * 查询系统菜单列表 * @@ -74,7 +112,36 @@ else { menu.getParams().put("userId", userId); - menuList = menuMapper.selectMenuListByUserId(menu); + SysUser sysUser = sysUserService.selectUserById(userId); + if(sysUser.getUserName().equals("admin")||sysUser.getUserName().equals("hongruitang")){ + menuList = menuMapper.selectMenuListByUserId(menu); + }else{ + menuList = menuMapper.selectMenuListByStaffUserId(menu); + } + + } + return menuList; + } + + /** + * 根据用户查询系统菜单列表 + * + * @param menu 菜单信息 + * @param userId 用户ID + * @return 菜单列表 + */ + @Override + public List<SysMenu> selectStaffMenuList(SysMenu menu, Long userId){ + List<SysMenu> menuList = null; + // 管理员显示所有菜单信息 + if (SysUser.isAdmin(userId)) + { + menuList = menuMapper.selectStaffMenuList(menu); + } + else + { + menu.getParams().put("userId", userId); + menuList = menuMapper.selectStaffMenuListByUserId(menu); } return menuList; } @@ -88,7 +155,35 @@ @Override public Set<String> selectMenuPermsByUserId(Long userId) { - List<String> perms = menuMapper.selectMenuPermsByUserId(userId); + SysUser sysUser = sysUserService.selectUserById(userId); + List<String> perms = null; + if(sysUser.getUserName().equals("admin")||sysUser.getUserName().equals("hongruitang")){ + perms = menuMapper.selectMenuPermsByUserId(userId); + }else{ + perms = menuMapper.selectMenuPermsByStaffUserId(userId); + } + Set<String> permsSet = new HashSet<>(); + for (String perm : perms) + { + if (StringUtils.isNotEmpty(perm)) + { + permsSet.addAll(Arrays.asList(perm.trim().split(","))); + } + } + return permsSet; + } + + /** + * 根据用户ID查询权限 + * + * @param userId 用户ID + * @return 权限列表 + */ + @Override + public Set<String> selectStaffClientMenuPermsByUserId(Long userId){ + SysUser sysUser = sysUserService.selectUserById(userId); + List<String> perms = null; + perms = menuMapper.selectStaffClientMenuPermsByStaffUserId(userId); Set<String> permsSet = new HashSet<>(); for (String perm : perms) { @@ -135,9 +230,28 @@ { menus = menuMapper.selectMenuTreeAll(); } - else + else if(userId.equals(1L)||userId.equals(2L)) { menus = menuMapper.selectMenuTreeByUserId(userId); + }else{ + menus = menuMapper.selectStaffMenuTreeByUserId(userId); + } + return getChildPerms(menus, 0); + } + + @Override + public List<SysMenu> selectStaffMenuTreeByUserId(Long userId) + { + List<SysMenu> menus = null; + if (SecurityUtils.isAdmin(userId)) + { + menus = menuMapper.selectStaffClientMenuTreeAll(); + } + else if(userId.equals(1L)||userId.equals(2L)) + { + menus = menuMapper.selectStaffClientMenuTreeByUserId(userId); + }else{ + menus = menuMapper.selectStaffClientStaffMenuTreeByUserId(userId); } return getChildPerms(menus, 0); } @@ -156,6 +270,54 @@ } /** + * @description selectMenuListByDeptId + * @param deptId + * @return List<SysMenu> + * @author jqs34 + * @date 2023/6/18 19:13 + */ + @Override + public List<Long> selectMenuListByDeptId(Long deptId){ + return menuMapper.selectMenuListByDeptId(deptId, true); + } + + /** + * @description selectMenuListByDeptId + * @param deptId + * @return List<SysMenu> + * @author jqs34 + * @date 2023/6/18 19:13 + */ + @Override + public List<Long> selectStaffMenuListByDeptId(Long deptId){ + return menuMapper.selectStaffMenuListByDeptId(deptId, true); + } + + /** + * @description selectMenuListByDeptId + * @param deptUserId + * @return List<SysMenu> + * @author jqs34 + * @date 2023/6/18 19:13 + */ + @Override + public List<Long> selectMenuListByDeptUserId(Long deptUserId){ + return menuMapper.selectMenuListByDeptUserId(deptUserId, true); + } + + /** + * @description selectMenuListByDeptId + * @param deptUserId + * @return List<SysMenu> + * @author jqs34 + * @date 2023/6/18 19:13 + */ + @Override + public List<Long> selectStaffMenuListByDeptUserId(Long deptUserId){ + return menuMapper.selectStaffMenuListByDeptUserId(deptUserId, true); + } + + /** * 构建前端路由所需要的菜单 * * @param menus 菜单列表 -- Gitblit v1.7.1