refactor(system): 重构路由树结构生成逻辑- 注释掉旧的 treeAll 方法调用逻辑- 新增 treeAll2 方法实现路由树结构构建

- 实现父子路由递归查找与组装
- 增加路径为空项过滤功能
- 调整元数据解析方式以适配新结构
dev
wangyan 2025-10-17 16:31:41 +08:00
parent feeccd3d3d
commit 5f060b5898
3 changed files with 72 additions and 2 deletions

View File

@ -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<PageData> routeList = routeService.treeAll(pd);
// pd.put("removePath", "1");
List<PageData> routeList = routeService.treeAll2(pd);
routeList = this.readRoute(routeList,roleRights);
result.put("routeList", routeList);
result.put("result", errInfo);

View File

@ -83,4 +83,5 @@ public interface RouteService {
*/
List<Route> listAllMenuJur(String MENU_ID) throws Exception;
List<PageData> treeAll2(PageData pd) throws Exception;
}

View File

@ -143,6 +143,75 @@ public class RouteServiceImpl implements RouteService {
}
// @Override
// public List<PageData> treeAll(PageData pd) throws Exception {
// List<PageData> list = new ArrayList<PageData>();
// List<PageData> routeList = routeMapper.listAll(pd);
// Map<String, PageData> map = new HashMap<String, PageData>();
// for (PageData r : routeList) {
// r.put("meta", JSONObject.parse(r.getString("meta")));
// map.put(r.getString("ROUTE_ID"), r);
// }
//
// Iterator<Map.Entry<String, PageData>> it = map.entrySet().iterator();
// while (it.hasNext()) {
// Map.Entry<String, PageData> 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<PageData> treeAll2(PageData router) {
List<PageData> routeList = routeMapper.listAll(router);
List<PageData> 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<PageData> childList = TreeChildren(routeMenu.getString("ROUTE_ID"), routeList);
routeMenu.put("children", childList);
}
return routeListRoute;
}
private List<PageData> TreeChildren(String parentId, List<PageData> routeList) {
List<PageData> 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<PageData> treeAll(PageData pd) throws Exception {
// List<PageData> list = new ArrayList<PageData>();