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