fix: 优化页面bug
This commit is contained in:
parent
d35eb47d73
commit
deac23c517
@ -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;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user