puzhibing
2024-01-30 03f1f3372a10a08f96f3308bfa099e86a55046d0
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 菜单列表