SysPermissionService.java 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package com.ruoyi.system.service;
  2. import cn.hutool.core.collection.CollUtil;
  3. import com.ruoyi.system.domain.vo.SysRoleVo;
  4. import lombok.RequiredArgsConstructor;
  5. import org.springframework.stereotype.Service;
  6. import java.util.HashSet;
  7. import java.util.List;
  8. import java.util.Set;
  9. /**
  10. * 用户权限处理
  11. *
  12. * @author ruoyi
  13. */
  14. @RequiredArgsConstructor
  15. @Service
  16. public class SysPermissionService {
  17. private final ISysRoleService roleService;
  18. private final ISysMenuService menuService;
  19. /**
  20. * 获取角色数据权限
  21. *
  22. * @param userId 用户id
  23. * @param isAdmin 是否管理员
  24. * @return 角色权限信息
  25. */
  26. public Set<String> getRolePermission(Long userId, boolean isAdmin) {
  27. Set<String> roles = new HashSet<>();
  28. // 管理员拥有所有权限
  29. if (isAdmin) {
  30. roles.add("admin");
  31. } else {
  32. roles.addAll(roleService.selectRolePermissionByUserId(userId));
  33. }
  34. return roles;
  35. }
  36. /**
  37. * 获取菜单数据权限
  38. *
  39. * @param userId 用户id
  40. * @param isAdmin 是否管理员
  41. * @return 菜单权限信息
  42. */
  43. public Set<String> getMenuPermission(Long userId, boolean isAdmin) {
  44. Set<String> perms = new HashSet<>();
  45. // 管理员拥有所有权限
  46. if (isAdmin) {
  47. perms.add("*:*:*");
  48. } else {
  49. List<SysRoleVo> roles = roleService.selectRolesByUserId(userId);
  50. if (CollUtil.isNotEmpty(roles)) {
  51. // 多角色设置permissions属性,以便数据权限匹配权限
  52. for (SysRoleVo role : roles) {
  53. Set<String> rolePerms = menuService.selectMenuPermsByRoleId(role.getRoleId());
  54. role.setPermissions(rolePerms);
  55. perms.addAll(rolePerms);
  56. }
  57. } else {
  58. perms.addAll(menuService.selectMenuPermsByUserId(userId));
  59. }
  60. }
  61. return perms;
  62. }
  63. }