SysPermissionService.java 1.9 KB

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