|
|
|
|
@ -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<SysUserVo> selectPageUserList(SysUserBo user, PageQuery pageQuery) {
|
|
|
|
|
Page<SysUserVo> page = baseMapper.selectVoPage(pageQuery.build(), this.buildQueryWrapper(user));
|
|
|
|
|
// 批量填充角色信息
|
|
|
|
|
if (CollUtil.isNotEmpty(page.getRecords())) {
|
|
|
|
|
List<Long> userIds = StreamUtils.toList(page.getRecords(), SysUserVo::getUserId);
|
|
|
|
|
// 批量查询用户角色关联关系
|
|
|
|
|
List<SysUserRole> userRoles = userRoleMapper.selectList(
|
|
|
|
|
new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getUserId, userIds));
|
|
|
|
|
// 获取所有角色ID
|
|
|
|
|
List<Long> roleIds = StreamUtils.toList(userRoles, SysUserRole::getRoleId);
|
|
|
|
|
// 批量查询角色信息
|
|
|
|
|
List<SysRoleVo> allRoles = CollUtil.isEmpty(roleIds) ? new ArrayList<>() :
|
|
|
|
|
roleMapper.selectVoList(new LambdaQueryWrapper<SysRole>().in(SysRole::getRoleId, roleIds));
|
|
|
|
|
Map<Long, SysRoleVo> roleMap = StreamUtils.toIdentityMap(allRoles, SysRoleVo::getRoleId);
|
|
|
|
|
// 按用户ID分组用户角色关联关系
|
|
|
|
|
Map<Long, List<SysUserRole>> userRoleMap = StreamUtils.groupByKey(userRoles, SysUserRole::getUserId);
|
|
|
|
|
// 为每个用户填充角色信息
|
|
|
|
|
page.getRecords().forEach(userVo -> {
|
|
|
|
|
List<SysUserRole> userRoleList = userRoleMap.get(userVo.getUserId());
|
|
|
|
|
if (CollUtil.isNotEmpty(userRoleList)) {
|
|
|
|
|
List<SysRoleVo> 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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|