实体类
@ApiModel(description = "菜单")
public class Menu {
@ApiModelProperty("id")
private String id;
@ApiModelProperty("父菜单id")
private String parentId;
@ApiModelProperty("菜单名称")
private String menuName;
@ApiModelProperty("菜单链接")
private String menuUrl;
@ApiModelProperty("菜单排序")
private Integer menutSort;
@ApiModelProperty("菜单图标")
private String menuIcon;
@ApiModelProperty("菜单级别")
private Integer menuLevel;
@ApiModelProperty("菜单状态 1、启用 2、未启用'")
private Integer menuStatus;
@ApiModelProperty("子菜单")
private List<Menu> children;
}
代码
/**
* 查询菜单
* @return
*/
public Msg<List<Menu>> selectMenu() {
try{
//查询所有的菜单列表
List<Menu> menuLists = menuMapper.selectAll();
//返回的菜单树信息
List<Menu> menuTrees = new ArrayList<>();
//查询一级菜单
for (Menu menu : menuLists) {
if (menu.getParentId().equals(FinalUtil.PARENT_ID)){
menuTrees.add(menu);
}
}
//遍历获取子菜单
for (Menu menuTree : menuTrees) {
List<Menu> selectMenus = menuTree(menuTree.getId(), menuLists);
menuTree.setChildren(selectMenus);
}
return Msg.sucess(menuTrees);
}catch (Exception e){
log.error("查询信息异常:" + e);
return Msg.fail("查询菜单信息异常!");
}
}
/**
* 递归菜单树
* @param id 一级菜单id
* @param menuList 所有菜单信息
* @return 返回子菜单
*/
private List<Menu> menuTree(String id, List<Menu> menuList){
//返回的子菜单信息
List<Menu> childrenMenu = new ArrayList<>();
for (Menu menu : menuList) {
if (!menu.getParentId().equals(FinalUtil.PARENT_ID)){
if (menu.getParentId().equals(id)){
childrenMenu.add(menu);
}
}
}
//递归遍历
for (Menu menu : childrenMenu) {
List<Menu> selectMenus = menuTree(menu.getId(), menuList);
menu.setChildren(selectMenus);
}
//递归出口 childrenMenu长度为0
if (childrenMenu.size() == 0) {
return new ArrayList<>();
}
return childrenMenu;
}
结果
{
"success": true,
"msg": "成功",
"obj": [
{
"id": "274ee35807184524a4c0fe9bf0fdf65f",
"parentId": "0",
"menuName": "模拟器菜单",
"menuUrl": "str111ing",
"menutSort": 1,
"menuIcon": "string",
"menuLevel": 1,
"menuStatus": 1,
"children": [
{
"id": "136dbde922854533995016156d7d20d7",
"parentId": "274ee35807184524a4c0fe9bf0fdf65f",
"menuName": "模拟器01",
"menuUrl": "str111ing",
"menutSort": 1,
"menuIcon": "string",
"menuLevel": 2,
"menuStatus": 1,
"children": [
{
"id": "1",
"parentId": "136dbde922854533995016156d7d20d7",
"menuName": "3333",
"menuUrl": "11",
"menutSort": 1,
"menuIcon": "",
"menuLevel": 1,
"menuStatus": 1,
"children": [
{
"id": "2",
"parentId": "1",
"menuName": "4444",
"menuUrl": "44",
"menutSort": 1,
"menuIcon": "",
"menuLevel": 1,
"menuStatus": 1,
"children": [
{
"id": "3",
"parentId": "2",
"menuName": "55",
"menuUrl": "555",
"menutSort": 1,
"menuIcon": "",
"menuLevel": 1,
"menuStatus": 1,
"children": []
}
]
}
]
}
]
},
{
"id": "8fad20e7ca614e56ad4d02cfb5552cdb",
"parentId": "274ee35807184524a4c0fe9bf0fdf65f",
"menuName": "模拟器02",
"menuUrl": "str111ing",
"menutSort": 2,
"menuIcon": "string",
"menuLevel": 2,
"menuStatus": 1,
"children": []
}
]
},
{
"id": "70428e2b8df34c2e9640d8223d62097b",
"parentId": "0",
"menuName": "仪器菜单",
"menuUrl": "str111ing",
"menutSort": 2,
"menuIcon": "string",
"menuLevel": 1,
"menuStatus": 1,
"children": []
}
],
"number": null
}