博客
关于我
LayUI动态树 案例
阅读量:794 次
发布时间:2023-01-30

本文共 2327 字,大约阅读时间需要 7 分钟。

数据库表分析与权限菜单管理系统开发

一、数据库表分析

该系统使用一个三级菜单表结构,t_oa_permission 表包含主要字段如下:

  • id:标识符,作为主键
  • name:菜单名称
  • url:对应的链接地址
  • description:菜单描述
  • pid:父级菜单ID
  • ismenu:控制是否为菜单(1表示菜单,0表示按钮)
  • displayno:显示顺序

处理思路

通过表结构分析,可以看出顶级节点为“权限管理”,其下为“书籍管理”和“订单管理”,再分别包含多个三级节点。整理思路:先将除顶级节点以外的节点分离,并将这些二级和三级节点归类到顶级节点下。

二、系统开发与实现

1. 实体类定义

com.zking.entity.Permission {    private long id; // 菜单编号    private String name; // 菜单名称    private String url; // accessing URL    private String description; // 菜单描述    private long pid; // 父级菜单编号    private int ismenu; // 1表示菜单,0表示按钮    private long displayno; // 显示顺序}

2. 工具类开发

com.zking.util.BuildTree {    public static TreeVo build(List
nodes) { if (nodes == null) { return null; } List
topNodes = new ArrayList<>(); for (TreeVo node : nodes) { if (node.getParentId() == null || "-1".equals(node.getParentId())) { topNodes.add(node); continue; } for (TreeVo parent : nodes) { if (parent.getId().equals(node.getParentId())) { parent.getChildren().add(node); node.setHasParent(true); parent.setChildren(true); } } } if (topNodes.size() == 1) { return topNodes.get(0); } else { TreeVo root = new TreeVo(); root.setParentId("-1"); root.setHasParent(false); root.setChildren(topNodes); root.setChecked(true); root.setText("顶级节点"); return root; } }}

三、功能实现

1. 菜单管理

  • 数据访问层
    MenuDao {    List
    list(Permission permission, PageBean pageBean); List
    menus(Permission permission, PageBean pageBean);}
  • 业务逻辑层
    {    List
    list = this.list(permission, pageBean); List
    trees = new ArrayList<>(); for (Permission permission : list) { TreeVo vo = new TreeVo(); vo.setId(permission.getId()); vo.setText(permission.getName()); vo.setParentId(permission.getPid()); trees.add(vo); } return BuildTree.build(trees);}

2. web 层实现

PermissionAction {    TreeVo menuTree = MenuDao.menu(permission, pageBean);    ResponseUtil.writeJson(resp, menuTree);}

四、界面展示

前端页面使用LayUI框架构建,通过auer的方法加载菜单数据:

转载地址:http://wcgyk.baihongyu.com/

你可能感兴趣的文章
leetcode题解104- 二叉树的最大深度
查看>>
leetcode题解108-将有序数组转换为二叉排序树
查看>>
leetcode题解118-杨辉三角
查看>>
leetcode题解119-杨辉三角II
查看>>
leetcode题解131-分割回文串
查看>>
leetcode题解132-分割回文串 II
查看>>
leetcode题解136-只出现一次的数字
查看>>
leetcode题解14-最长公共前缀
查看>>
leetcode题解15-三数之和(双指针经典)
查看>>
leetcode题解151-翻转字符串里的单词
查看>>
leetcode题解153-寻找旋转排序数组的最小值
查看>>
leetcode题解162-寻找峰值
查看>>
leetcode题解167-两数之和 II - 输入有序数组
查看>>
leetcode题解172-阶乘后的零
查看>>