- 查出所有符合条件的数据
public List<MenusDto> queryTree(Boolean hasResource){
QueryWrapper<SysBasicMenu> wrapper = new QueryWrapper<>();
wrapper.eq("status", CommonConstant.Field_Status_Normal);
List<SysBasicMenu> sysBasicMenus = super.list(wrapper);
return this.convertMenusTree(sysBasicMenus);
}
- 树形结构数据组装
private List<MenusDto> convertMenusTree(List<SysBasicMenu> sysBasicMenus) {
List<MenusDto> result = new ArrayList<>();
Map<Integer, MenusDto> map = new HashMap<>();
sysBasicMenus.forEach(sysBasicMenu -> {
MenusDto menusDto = new MenusDto();
BeanUtils.copyProperties(sysBasicMenu, menusDto);
map.put(menusDto.getId(), menusDto);
});
for (Map.Entry<Integer, MenusDto> entry : map.entrySet()) {
if ("0".equals(entry.getValue().getFlg())) {
result.add(entry.getValue());
}
if (null != map.get(entry.getValue().getParentId())) {
map.get(entry.getValue().getParentId()).getChildren().add(entry.getValue());
}
}
sortMenus(result);
return result;
}
- 树形结构数据排序
private void sortMenus(List<MenusDto> menusListDtos) {
if (!CollectionUtils.isEmpty(menusListDtos)) {
menusListDtos.sort((o1, o2) -> o1.getOrders().compareTo(o2.getOrders()));
menusListDtos.forEach(menusListDto -> {
sortMenus(menusListDto.getChildren());
});
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)