public Mono<G<List<GatewayGroupTreeVO>>> getTree() {
// 1 获取用户
UserVO user = ContextUtils.getCurrentUser()
String tenantId = user.getTenantId()
// 2 获取租户下所有网关
Mono<List<GatewayGroup>> groups = r2dbcEntityTemplate.select(query(where("tenant_id").is(tenantId)), GatewayGroup.class).collectList()
return groups.flatMap(c -> Mono.just(Optional.of(c))).defaultIfEmpty(Optional.empty())
.flatMap(optional->{
if(!optional.isPresent()){
return Mono.empty()
}
// 3 把结构调整成树形返回
List<GatewayGroup> groupList = optional.get()
List<GatewayGroupTreeVO> tempVoList = groupList.stream().map(groupDO->{
GatewayGroupTreeVO groupVO = new GatewayGroupTreeVO()
BeanUtils.copyProperties(groupDO, groupVO)
return groupVO
}).collect(Collectors.toList())
Map<Integer, List<GatewayGroupTreeVO>> voMap = tempVoList.stream().collect(Collectors.groupingBy(GatewayGroupTreeVO::getParentId))
tempVoList.forEach(item->item.setNodes(voMap.get(item.getGroupId())))
return Mono.just(G.success(voMap.get(0)))
})
}