content: package org.ruoyi.system.service.impl;
  
  import lombok.RequiredArgsConstructor;
  import org.ruoyi.common.core.constant.TenantConstants;
  import org.ruoyi.common.satoken.utils.LoginHelper;
  import org.ruoyi.system.service.ISysMenuService;
  import org.ruoyi.system.service.ISysPermissionService;
  import org.ruoyi.system.service.ISysRoleService;
  import org.springframework.stereotype.Service;
  
  import java.util.HashSet;
  import java.util.Set;
  
  /**
   * 用户权限处理
   *
   * @author ruoyi
   */
  @RequiredArgsConstructor
  @Service
  public class SysPermissionServiceImpl implements ISysPermissionService {
  
      private final ISysRoleService roleService;
      private final ISysMenuService menuService;
  
      /**
       * 获取角色数据权限
       *
       * @param userId  用户id
       * @return 角色权限信息
       */
      @Override
      public Set<String> getRolePermission(Long userId) {
          Set<String> roles = new HashSet<>();
          // 管理员拥有所有权限
          if (LoginHelper.isSuperAdmin(userId)) {
              roles.add(TenantConstants.SUPER_ADMIN_ROLE_KEY);
          } else {
              roles.addAll(roleService.selectRolePermissionByUserId(userId));
          }
          return roles;
      }
  
      /**
       * 获取菜单数据权限
       *
       * @param userId  用户id
       * @return 菜单权限信息
       */
      @Override
      public Set<String> getMenuPermission(Long userId) {
          Set<String> perms = new HashSet<>();
          // 管理员拥有所有权限
          if (LoginHelper.isSuperAdmin(userId)) {
              perms.add("*:*:*");
          } else {
              perms.addAll(menuService.selectMenuPermsByUserId(userId));
          }
          return perms;
      }
  }
  