设计师网站1688,免费html网页源代码,yeti wordpress,柳州市安全教育平台主要实现思路
1.首先从菜单数据中获取所有根节点。
2.为根节点建立次级子树并拼接上。
3.递归为子节点建立次级子树并接上#xff0c;直至为末端节点拼接上空的“树”。
数据表设计#xff1a;
CREATE TABLE menu (id bigint(20) unsigned NOT NULL COMMENT 主键,name v…主要实现思路
1.首先从菜单数据中获取所有根节点。
2.为根节点建立次级子树并拼接上。
3.递归为子节点建立次级子树并接上直至为末端节点拼接上空的“树”。
数据表设计
CREATE TABLE menu (id bigint(20) unsigned NOT NULL COMMENT 主键,name varchar(11) NOT NULL COMMENT 名称,sort_no smallint(5) unsigned NOT NULL DEFAULT 10 COMMENT 排序号,parent_id bigint(20) unsigned NOT NULL COMMENT 父节点id,icon varchar(200) DEFAULT NULL COMMENT 图标,remark varchar(20) DEFAULT NULL COMMENT 备注,url varchar(60) DEFAULT NULL COMMENT 菜单链接,level tinyint(4) DEFAULT NULL COMMENT 菜单等级,PRIMARY KEY (id)
) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT菜单表;
递归获取下级菜单
/*** 递归获取下级菜单* param pid* param menus 所有菜单* return*/public ListMenu getChild(Long pid, ListMenu menus) {//子菜单列表ListMenu childList new ArrayList();for (Menu menu : menus) {if (pid.equals(menu.getParentId())) {childList.add(menu);}}//遍历 获取子菜单的子菜单for (Menu menu : childList) {ListMenu child getChild(menu.getId(), menus);menu.setChildren(child);}//递归出口 childList长度为0if (childList.size() 0) {return new ArrayList();}return childList;}
根据用户角色获取菜单对象集合信息、目前拿管理员举例
/*** 根据角色id获取对象集合信息*/public ListMenu getAllMenus(){ListMenu menus this.loadAll();//返回的菜单树ListMenu rootMenus new ArrayList();for (Menu menu : menus) {//pid上级Id为0的是根菜单if (0(menu.getParentId())) {rootMenus.add(menu);}}//遍历找到二级菜单根菜单的id和所有菜单中的pid比较for (Menu rootMenu : rootMenus) {ListMenu child getChild(rootMenu.getId(), menus);rootMenu.setChildren(child);}return rootMenus;}
返回数据