package com.glxp.api.service.auth; import com.glxp.api.entity.auth.AuthAdmin; import com.glxp.api.entity.auth.SysRole; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.HashSet; import java.util.List; import java.util.Set; @RequiredArgsConstructor @Service public class SysPermissionService { private final ISysRoleService roleService; private final ISysMenuService menuService; /** * 获取角色数据权限 * * @param user 用户信息 * @return 角色权限信息 */ public Set getRolePermission(AuthAdmin user) { Set roles = new HashSet(); // 管理员拥有所有权限 if (user.isAdmin()) { roles.add("admin"); } else { roles.addAll(roleService.selectRolePermissionByUserId(user.getId())); } return roles; } /** * 获取菜单数据权限 * * @param user 用户信息 * @return 菜单权限信息 */ public Set getMenuPermission(AuthAdmin user) { Set perms = new HashSet(); // 管理员拥有所有权限 if (user.isAdmin()) { perms.add("*:*:*"); } else { List roles = user.getRoles(); if (!roles.isEmpty() && roles.size() > 1) { // 多角色设置permissions属性,以便数据权限匹配权限 for (SysRole role : roles) { Set rolePerms = menuService.selectMenuPermsByRoleId(role.getRoleId()); role.setPermissions(rolePerms); perms.addAll(rolePerms); } } else { perms.addAll(menuService.selectMenuPermsByUserId(user.getId())); } } return perms; } }