首先查询出所有数据集合:
List<RoleMenu> roleMenusList = menuController.selectMenuId(username);
List<Map<String, Object>> treeList = getSourc(roleMenusList,null);
递归重装数据:
//递归重装数据
private List<Map<String, Object>> getSourc(List<RoleMenu> roleMenuList,Long parentId) {
//定义返回的数据集结果集
List<Map<String, Object>> listTree = new ArrayList<Map<String,Object>>();
//遍历获取权限类的所有元素的对象
for(int i = 0; i < roleMenuList.size(); i++){
//定义map 用来存放组装的数据
Map<String, Object> map = null;
//获取单个菜单对象
RoleMenu menu = roleMenuList.get(i);
//如果当前的父id为空的话说明就是最高一级
if(menu.getParentId()==parentId){
//返回菜单结果集(根据menuId查询相应菜单)
Menu menu1 = menuController.select(menu.getMenuId());
//实例化map对象
map = new HashMap<>();
map.put("data",getSour(menu1));
//添加子节点的父节点的id
map.put("children",getSourc(roleMenuList,menu.getMenuId()));
}
//如果map集合不为空
if(map !=null){
//将没有子节点的数据删除 获取Map的子节点
List<Map<String, Object>> list = (List<Map<String, Object>>) map.get("children");
//将没有子节点的数据删除
if(list.size() == 0){
map.remove("children");
}
listTree.add(map);
}
}
return listTree;
}
private Map<String, Object> getSour(Menu menu) {
Map map = new HashMap<>();
map.put("id", menu.getId());
map.put("name",menu.getName());
map.put("path",menu.getPath());
map.put("route",menu.getRoute());
map.put("type",menu.getType());
map.put("parentId",menu.getParentId());
return map;
}
返回树结构: