外观
树结构查询
技术交流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
}
}