| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | | /** |
| | | * 菜单 业务层处理 |
| | |
| | | { |
| | | 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; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 根据用户查询系统菜单列表 |
| | |
| | | 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); |
| | | } |
| | | /** |
| | | * 查询系统菜单列表 |
| | | * |
| | |
| | | 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; |
| | | } |
| | |
| | | @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) |
| | | { |
| | |
| | | { |
| | | 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); |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * @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 菜单列表 |