diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java index 3a0ace0bc..6c89082e8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java @@ -37,6 +37,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.stream.Collectors; /** * 角色 业务层处理 @@ -104,12 +105,11 @@ public class SysRoleServiceImpl implements ISysRoleService { public List selectRolesAuthByUserId(Long userId) { List userRoles = baseMapper.selectRolePermissionByUserId(userId); List roles = selectRoleAll(); + // 使用HashSet提高查找效率 + Set userRoleIds = userRoles.stream().map(SysRoleVo::getRoleId).collect(Collectors.toSet()); for (SysRoleVo role : roles) { - for (SysRoleVo userRole : userRoles) { - if (role.getRoleId().longValue() == userRole.getRoleId().longValue()) { - role.setFlag(true); - break; - } + if (userRoleIds.contains(role.getRoleId())) { + role.setFlag(true); } } return roles;