fix: 优化页面bug

This commit is contained in:
tangwei 2026-08-04 17:46:01 +08:00
parent d35eb47d73
commit deac23c517

View File

@ -641,11 +641,38 @@ public class UserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impleme
Page<SysUser> page) {
Page<SysUser> mapPage = sysUserMapper.queryUsers(orgid,
username, tenantId, page);
mapPage.getRecords().forEach(record -> {
String id = record.getId();
List<SysRole> sysRoles = sysRoleMapper.getRoleByUserId(id);
record.setRoles(sysRoles);
});
List<SysUser> records = mapPage.getRecords();
if (records.isEmpty()) {
return mapPage;
}
// 收集所有用户ID一次批量查询角色替代 N+1 查询
List<String> userIds = records.stream()
.map(SysUser::getId)
.collect(Collectors.toList());
List<Map<String, Object>> allRoleMaps = sysRoleMapper.getUserRolesByUserIds(userIds);
// userId 分组 Map 转为 SysRole 对象
Map<String, List<SysRole>> userRoleMap = new HashMap<>();
if (allRoleMaps != null) {
for (Map<String, Object> roleMap : allRoleMaps) {
String userId = (String) roleMap.get("userId");
if (userId == null) continue;
SysRole role = new SysRole();
role.setId((String) roleMap.get("id"));
role.setRolecode((String) roleMap.get("rolecode"));
role.setRolename((String) roleMap.get("rolename"));
role.setLevel((String) roleMap.get("level"));
role.setDescription((String) roleMap.get("description"));
role.setIsvaild((String) roleMap.get("isvaild"));
role.setOrgscope((String) roleMap.get("orgscope"));
role.setOptscope((String) roleMap.get("optscope"));
role.setBusscope((String) roleMap.get("busscope"));
userRoleMap.computeIfAbsent(userId, k -> new ArrayList<>()).add(role);
}
}
records.forEach(r -> r.setRoles(userRoleMap.getOrDefault(r.getId(), Collections.emptyList())));
return mapPage;
}