diff --git a/src/main/java/com/zcloud/controller/system/RoleController.java b/src/main/java/com/zcloud/controller/system/RoleController.java index 0f2c21a..38634b8 100644 --- a/src/main/java/com/zcloud/controller/system/RoleController.java +++ b/src/main/java/com/zcloud/controller/system/RoleController.java @@ -428,8 +428,8 @@ public class RoleController extends BaseController { Role role = roleService.getRoleById(pd.getString("ROLE_ID")); //根据角色ID获取角色对象 String roleRights = role.getRIGHTS(); //取出本角色菜单权限 pd.put("ROUTE_ID", "0"); - pd.put("removePath", "1"); - List routeList = routeService.treeAll(pd); +// pd.put("removePath", "1"); + List routeList = routeService.treeAll2(pd); routeList = this.readRoute(routeList,roleRights); result.put("routeList", routeList); result.put("result", errInfo); diff --git a/src/main/java/com/zcloud/service/system/RouteService.java b/src/main/java/com/zcloud/service/system/RouteService.java index c4ded87..6ae03d0 100644 --- a/src/main/java/com/zcloud/service/system/RouteService.java +++ b/src/main/java/com/zcloud/service/system/RouteService.java @@ -83,4 +83,5 @@ public interface RouteService { */ List listAllMenuJur(String MENU_ID) throws Exception; + List treeAll2(PageData pd) throws Exception; } diff --git a/src/main/java/com/zcloud/service/system/impl/RouteServiceImpl.java b/src/main/java/com/zcloud/service/system/impl/RouteServiceImpl.java index 16777ee..1d1f39e 100644 --- a/src/main/java/com/zcloud/service/system/impl/RouteServiceImpl.java +++ b/src/main/java/com/zcloud/service/system/impl/RouteServiceImpl.java @@ -143,6 +143,75 @@ public class RouteServiceImpl implements RouteService { } +// @Override +// public List treeAll(PageData pd) throws Exception { +// List list = new ArrayList(); +// List routeList = routeMapper.listAll(pd); +// Map map = new HashMap(); +// for (PageData r : routeList) { +// r.put("meta", JSONObject.parse(r.getString("meta"))); +// map.put(r.getString("ROUTE_ID"), r); +// } +// +// Iterator> it = map.entrySet().iterator(); +// while (it.hasNext()) { +// Map.Entry entry = it.next(); +// PageData root = entry.getValue(); +// if ("0".equals(root.getString("PARENT_ID"))) { +// root.put("PARENT_NAME", "(无)"); +// list.add(entry.getValue()); +// it.remove();//使用迭代器的remove()方法删除元素 +// } +// } +// TreeAppendChildren(map, list); +// return list; +// } + + @Override + public List treeAll2(PageData router) { + + List routeList = routeMapper.listAll(router); + List routeListRoute = new ArrayList<>(); + if ("1".equals(router.getString("removePath"))) { + routeList.removeIf((item) -> Tools.isEmpty(item.getString("path"))); + //去掉path为空的项 + } + // 一级路由 + for (PageData route : routeList) { + if ("0".equals(route.getString("PARENT_ID"))) { + route.put("meta", JSONObject.parse(route.getString("meta"))); + JSONObject meta = JSONObject.parseObject(route.getString("meta")); + route.put("PARENT_NAME", meta.getString("title")); + routeListRoute.add(route); + } + } + //一级路由增加子路由 + for (PageData routeMenu : routeListRoute) { + List childList = TreeChildren(routeMenu.getString("ROUTE_ID"), routeList); + routeMenu.put("children", childList); + } + + return routeListRoute; + } + + private List TreeChildren(String parentId, List routeList) { + List childList = new ArrayList<>(); + for (PageData route : routeList) { + //遍历所有节点,与上级传过来的父节点id比较 + if (parentId.equals(route.getString("PARENT_ID"))) { + JSONObject meta = JSONObject.parseObject(route.getString("meta")); + route.put("PARENT_NAME", meta.getString("title")); + route.put("meta", JSONObject.parse(route.getString("meta"))); + childList.add(route); + } + } + //递归 + for (PageData route : childList) { + route.put("children", TreeChildren(route.getString("ROUTE_ID"), routeList)); + } + return childList; + } + // @Override // public List treeAll(PageData pd) throws Exception { // List list = new ArrayList();