直接跳到内容
本页目录

树结构查询

技术交流QQ群:3549030

树结构查询接口

以系统管理的菜单管理为例,来展示下树结构查询接口的实现,如下:

java
public class TableController extends KungfuController {

    public void tree() {
        String searchName = get("searchName");

        // 缓存
        Record menuTree = CacheKit.get("sysMenu", "menuTree", () -> sysMenuService.buildTree(searchName));

        renderJson(R.ok().set("data", menuTree));
    }
}
java
public class SysMenuService extends KungfuService<SysMenu> {

    public Record buildTree(String queryName) {
        String selectSql = "select id,parent_code,parent_name,menu_code,menu_name,is_enabled,link_page,menu_type,icon,display_no,component ";
        String sql = selectSql + "from sys_menu order by display_no";

        if (StrKit.notBlank(queryName)) {
            sql = selectSql + "from sys_menu where menu_name like '%" + queryName + "%' order by display_no";
        }

        List<Record> menuList = Db.find(sql);

        // 直接调用封装好的树结构查询即可,传入菜单列表、code、name及根节点名称
        return buildTree(KungfuKit.toHumpsList(menuList), "menuCode", "menuName","菜单目录");
    }

}

友情提示

这个跟表结构设计的规范性有关,需要约定好,树结构表中包括约定的几个字段

  • 约定一:parent_code/xxx_code/xxx_name
  • 约定二:pid/id/name

约定一或约定二满足其一即可。

以菜单管理模块的菜单树为例,预览下返回的数结构:

json
{
  "msg": "ok",
  "code": 200,
  "data": {
    "parentName": null,
    "parentCode": null,
    "children": [
      {
        "parentName": "开发平台",
        "component": "",
        "displayNo": 1,
        "linkPage": "",
        "parentCode": "root",
        "children": [
          {
            "parentName": "系统管理",
            "component": "",
            "displayNo": 1,
            "linkPage": "",
            "parentCode": "system",
            "isEnabled": true,
            "menuCode": "menu",
            "icon": "Menu",
            "menuType": 0,
            "menuName": "菜单管理",
            "id": 601
          },
          {
            "parentName": "系统管理",
            "component": "",
            "displayNo": 3,
            "linkPage": "",
            "parentCode": "system",
            "isEnabled": true,
            "menuCode": "org",
            "icon": "Cherry",
            "menuType": 0,
            "menuName": "部门管理",
            "id": 618
          },
          {
            "parentName": "系统管理",
            "component": "",
            "displayNo": 4,
            "linkPage": "",
            "parentCode": "system",
            "isEnabled": true,
            "menuCode": "role",
            "icon": "Unlock",
            "menuType": 0,
            "menuName": "角色管理",
            "id": 619
          },
          {
            "parentName": "系统管理",
            "component": "",
            "displayNo": 5,
            "linkPage": "",
            "parentCode": "system",
            "isEnabled": true,
            "menuCode": "user",
            "icon": "Avatar",
            "menuType": 0,
            "menuName": "用户管理",
            "id": 620
          },
          {
            "parentName": "系统管理",
            "component": "",
            "displayNo": 6,
            "linkPage": "",
            "parentCode": "system",
            "isEnabled": true,
            "menuCode": "dict",
            "icon": "Management",
            "menuType": 0,
            "menuName": "字典管理",
            "id": 603
          },
          {
            "parentName": "系统管理",
            "component": "",
            "displayNo": 7,
            "linkPage": "",
            "parentCode": "system",
            "isEnabled": true,
            "menuCode": "log",
            "icon": "List",
            "menuType": 0,
            "menuName": "日志管理",
            "id": 621
          }
        ],
        "isEnabled": true,
        "menuCode": "system",
        "icon": "Setting",
        "menuType": 0,
        "menuName": "系统管理",
        "id": 600
      }
    ],
    "menuCode": "root",
    "menuName": "菜单目录",
    "id": 0
  }
}

树结构查询已经加载完毕