本文共 2327 字,大约阅读时间需要 7 分钟。
该系统使用一个三级菜单表结构,t_oa_permission
表包含主要字段如下:
通过表结构分析,可以看出顶级节点为“权限管理”,其下为“书籍管理”和“订单管理”,再分别包含多个三级节点。整理思路:先将除顶级节点以外的节点分离,并将这些二级和三级节点归类到顶级节点下。
com.zking.entity.Permission { private long id; // 菜单编号 private String name; // 菜单名称 private String url; // accessing URL private String description; // 菜单描述 private long pid; // 父级菜单编号 private int ismenu; // 1表示菜单,0表示按钮 private long displayno; // 显示顺序}
com.zking.util.BuildTree { public static TreeVo build(Listnodes) { if (nodes == null) { return null; } List topNodes = new ArrayList<>(); for (TreeVo node : nodes) { if (node.getParentId() == null || "-1".equals(node.getParentId())) { topNodes.add(node); continue; } for (TreeVo parent : nodes) { if (parent.getId().equals(node.getParentId())) { parent.getChildren().add(node); node.setHasParent(true); parent.setChildren(true); } } } if (topNodes.size() == 1) { return topNodes.get(0); } else { TreeVo root = new TreeVo(); root.setParentId("-1"); root.setHasParent(false); root.setChildren(topNodes); root.setChecked(true); root.setText("顶级节点"); return root; } }}
MenuDao { Listlist(Permission permission, PageBean pageBean); List menus(Permission permission, PageBean pageBean);}
{ Listlist = this.list(permission, pageBean); List trees = new ArrayList<>(); for (Permission permission : list) { TreeVo vo = new TreeVo(); vo.setId(permission.getId()); vo.setText(permission.getName()); vo.setParentId(permission.getPid()); trees.add(vo); } return BuildTree.build(trees);}
PermissionAction { TreeVo menuTree = MenuDao.menu(permission, pageBean); ResponseUtil.writeJson(resp, menuTree);}
前端页面使用LayUI框架构建,通过auer的方法加载菜单数据:
转载地址:http://wcgyk.baihongyu.com/