bean对象
@ApiModel(value = "AdminMenuTreeVO", description = "树形菜单")
public class AdminMenuTreeVO {
@ApiModelProperty(value = "ID")
private String id;
@ApiModelProperty(value = "父级ID")
private String parentId;
@ApiModelProperty(value = "名称")
private String name;
@ApiModelProperty(value = "菜单唯一编码")
private String code;
@ApiModelProperty(value = "菜单路径")
private String menuUrl;
@ApiModelProperty(value = "菜单类型")
private String menuType;
@ApiModelProperty(value = "菜单排序")
private String sortNum;
@ApiModelProperty(value = "菜单等级")
private String level;
@ApiModelProperty(value = "状态 0:不可用 1:可用")
private String status;
@ApiModelProperty(value = "描述")
private String description;
@ApiModelProperty(value = "子节点")
private List<AdminMenuTreeVO> childrenList;
}
构建树
public List<AdminMenuTreeVO> getMenuTree(List<AdminMenu> adminMenus) {
List<AdminMenuTreeVO> list = new ArrayList<>();
Map<Long, AdminMenuTreeVO> map = new HashMap<>();
if (adminMenus != null && adminMenus.size() > 0) {
adminMenus.forEach(t -> map.put(t.getId(), new AdminMenuTreeVO(t)));
for (AdminMenu menu : adminMenus) {
AdminMenuTreeVO p_menu = map.get(menu.getParentId());
AdminMenuTreeVO c_menu = map.get(menu.getId());
if (p_menu != null) {
List<AdminMenuTreeVO> childrenList = p_menu.getChildrenList();
childrenList.add(c_menu);
} else if (menu.getParentId() != null && menu.getParentId() > 0) {
map.remove(map.get(menu.getId()));
} else {
list.add(c_menu);
}
}
}
return list;
}