From 2a989b7355917456bdf1b6e267d89f329556d7d1 Mon Sep 17 00:00:00 2001 From: yinq Date: Mon, 3 Nov 2025 16:55:11 +0800 Subject: [PATCH] =?UTF-8?q?1.0.25=20=E7=94=A8=E6=88=B7=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=9B=9E=E6=98=BE=E8=A7=92=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SysUserServiceImpl.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index b06c152c..acc867a6 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -22,6 +22,7 @@ import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.domain.SysUser; import org.dromara.system.domain.SysUserPost; import org.dromara.system.domain.SysUserRole; +import org.dromara.system.domain.SysRole; import org.dromara.system.domain.bo.SysUserBo; import org.dromara.system.domain.vo.SysPostVo; import org.dromara.system.domain.vo.SysRoleVo; @@ -59,6 +60,32 @@ public class SysUserServiceImpl implements ISysUserService { @Override public TableDataInfo selectPageUserList(SysUserBo user, PageQuery pageQuery) { Page page = baseMapper.selectVoPage(pageQuery.build(), this.buildQueryWrapper(user)); + // 批量填充角色信息 + if (CollUtil.isNotEmpty(page.getRecords())) { + List userIds = StreamUtils.toList(page.getRecords(), SysUserVo::getUserId); + // 批量查询用户角色关联关系 + List userRoles = userRoleMapper.selectList( + new LambdaQueryWrapper().in(SysUserRole::getUserId, userIds)); + // 获取所有角色ID + List roleIds = StreamUtils.toList(userRoles, SysUserRole::getRoleId); + // 批量查询角色信息 + List allRoles = CollUtil.isEmpty(roleIds) ? new ArrayList<>() : + roleMapper.selectVoList(new LambdaQueryWrapper().in(SysRole::getRoleId, roleIds)); + Map roleMap = StreamUtils.toIdentityMap(allRoles, SysRoleVo::getRoleId); + // 按用户ID分组用户角色关联关系 + Map> userRoleMap = StreamUtils.groupByKey(userRoles, SysUserRole::getUserId); + // 为每个用户填充角色信息 + page.getRecords().forEach(userVo -> { + List userRoleList = userRoleMap.get(userVo.getUserId()); + if (CollUtil.isNotEmpty(userRoleList)) { + List userRoleVoList = StreamUtils.toList(userRoleList, ur -> roleMap.get(ur.getRoleId())) + .stream().filter(ObjectUtil::isNotNull).toList(); + userVo.setRoles(userRoleVoList); + } else { + userVo.setRoles(new ArrayList<>()); + } + }); + } return TableDataInfo.build(page); }