00:00
各位同学大家好,刚才呢,我们完成了用户管理模块的接口,包括整合前端最终实现的功能,那下面呢,我们来实现下一个功能模块,菜单管理,首先介绍一下菜单管理模块的需求,那咱们看一下我的课件里边啊,大家注意啊,咱们现在有角色,每个角色里边是不是有不同用户,而不同用户登录之后,他应该会看到不同的菜单,只是咱们现在这个路由部分我们是写固定的,最终这个路由咱们会动态获取到,所以咱们来维护这个菜单的数据,而菜单里边我们要怎么来做,咱们先做一个最基本的菜单的增删改查,包括给角色分配菜单,最终再加上权限的控制,那这里边我在这个位置给大家写一下。菜单管理模块。我们主要实现以下几个功能,第一个功能就是菜单的cud操作,包括第一个菜单的列表功能,注意啊,菜单列表我们想做成什么样的呢?大家看这个里边啊,你注意系统管理是不是第一层在系统管理下边有用户管理,是不是有角色管理,在用户管理中有增加、修改、删除列表,他们是不是一个层级关系,所以咱们一会儿要用层级方式进行显示,就是做成一种数形显示方式,第一个叫列表。
01:28
然后第二部分包括菜单的添加、修改以及删除等功能,这是咱们说的D功能,是咱要做的第一部分,然后这里边还有第二部分做什么,我们要为这个角色分配这个菜单,比如说现在总经理他能操作哪些菜单,销售能操作哪些菜单,主要完成的是这么两门功能,这各位先清楚啊。而这功能怎么做?下面咱们看一下关于我们这个菜单表的一个设计,这个表咱该怎么进行创建?
02:05
那我们来看一下啊,看一下我的课件里边,比如最终咱们这个路由部分是动态获取到的,目前是写的固定值,那下面咱们需要建一个菜单表,在菜单表里边呢,有很多的字段,这字段里边下面几个字段是为了后面的权限做准备,咱们先说这两个重要的字段,一个ID,一个判断ID,还有一个叫名称,通过它能表示菜单的层级关系,那下面给大家说一下啊,这个表的设计的方式。我用这个为例来做个说明。大家来看啊,现在我这个路由部分呢,你发现是不是有两层了,它的第一层叫系统管理,第二层中有两个,一个叫用户管理,一个叫角色管理,那我现在先把这个层级关系的数据存到咱们的表里边,那大家想一下这个表该怎么设计,能把这关系进去,这该怎么做?就刚才提到的,我们需要用到这么一个关系,就是ID和。
03:10
Parent ID的对应关系来存储它的层级的关系,注意parent ID就是咱说的ID,那它具体怎么做的,给大家做个说明,比如咱们现在啊,就把这个例子用一张表来表示,看表中该怎么进行存储,那咱画一下啊,首先。第一条数据就是咱说这个系统管理在这里边我们有三个字段,咱们来写一下啊,第一个字段就是ID。第二个字段叫parent ID就是ID。第三个就是名称,我们叫name,然后里边有它的值,比如说啊,系统管理的ID是一,因为它是最顶层的这个数据,所以它的D我们就写个零,它的名称叫系统管理,这是我们存的第一个,大家理解为就是current ID值等于零。
04:12
表示它是顶层的数据,就是它最上层,那上面就没有内容了,它是顶层的数据,这是第一个表示,那咱们继续表示,我现在呢在表示第二个,大家看啊,在系统管理下边有什么,是不是有用户管理,他要在系统管理下边,那咱们要表成什么样子,给大家继续来画一下啊,我就画到这位置,呃,这个我先补充一下啊。咱们画到下边,那怎么来做?我这里写一下啊,比如说现在我约定我这个用户管理的ID啊,假如他的ID,比如说ID是这个。幺零啊,咱就为了区分幺零,大家注意。用户管理它是不是在系统管理下边,那大家说它里边的这个判断ID应该写什么。
05:07
写什么,是不是要写成医药,就表示是系统管理下边的这个用户管理啊,他们有一定关系,然后名称叫用户管理。同样的方式,角色管理跟他是不是一样啊,那我把这个也写一下啊,咱再来一个叫角色管理,我写到这位。然后它里面的ID啊,这些咱们给它都改一下啊。给他改一下。咱们给他改个值,比如说现在啊,我这个角色管理的ID,咱们来个哟,它也属于系统管理,下边D是不是等于一,它的名字叫角色管理。所以现在我们就用ID和对应关系表示菜单的层级关系,咱们表就这么来设计,这各位要明确啊,包括你看我这表里边应该就是这么来做到的,贺件中啊,应该都写到了这个关系,那这个之后呢,下面咱们把这表进行创建,在资料中,我们刚才看了进表语句,找到菜单表system menu,然后把表创建,在表里边,我加了一些测试数据,然后把这个一起都拿过来。
06:20
当然这里边还有一些其他字段,是为了权限做准备,然后后面用到再继续来说明,现在先把表进行创建。我现在啊来操作一下。在我们这个里边把建表语句复制,然后把这个语句我们进行执行。在里边加上一些测试的数据啊,就这些数据都给它加进去。然后这个我进行刷新。咱们看一下啊,硅谷OA里边是不是有这个菜单表,菜单表里边有相关的数据,这个我们就加进去了,包括你看里边啊,这个是零最顶层,然后它下面有用户角色菜单等等,它下面还有其他的这个下一层的数据,这是关于表的一个说明,这各位要明确啊。
07:12
然后这个说完之后,我们继续来看啊,咱们后面要把这菜单的列表就做成类似于这么一个效果,是一个层级关系,第一层,第二层包括第三层,所以以上就是关于这个基本分析。然后这个分析之后我们继续来看啊。就是这个过程中呢,它还有一个表与表之间的关系,咱们刚才说了一部分,现在继续往下来说,咱们目前呢,应该有这么三个主要的表。我这里画一下三个表啊,第一个表我们是用户表。第二张表咱们叫角色表,第三个表叫什么?叫菜单表,而表之间刚才咱们分析到了用户跟角色之间是什么,是不是多对多的关系,就是一个用户有多个角色,一个角色里边可以有很多用户,而目前角色跟菜单之间也有关系,他们也是一个多对多的关系,什么意思呢?比如现在啊,一个角色能操作很多菜单,而一个菜单也能被很多角色操作。
08:23
比如说总经理能操作用户管理、决策管理,销售人员也能操作用户管理,所以他们之间也是一个多对多的关系,按照咱们说的见表方式,多对多是不是要见个第三张表格,所以在我们的建表语句中还有一个表。咱们来找一下啊,这张表应该在我们的下边啊。我们来看一下,这里边有一张表,也就这个表角色和菜单的关系,表里边有两个ID,一个角色ID,一个菜单ID,最终表示他们的关系,所以我现在啊,把这个表我们也给它创建出来,就是给它创建的完整一下。
09:04
这个过来咱们。执行。然后刷新看一下里边最终的这个表的这个结构。大家看啊,目前表就比较完整了,有用户,有角色,用户角色关系表,有菜单,菜单角色关系表。以上就是关于我们说的表的结构以及需求的分析,我们在这个模块中主要实现两部分功能,第一部分菜单的增删改查,重要是列表功能,因为列表咱要给它构建成这种树形结构,第二个就是为角色分配菜单。所以这个需求部分我们就说到这里,然后需求说完之后,下面呢,我们做个准备工作,因为咱们现在做的是一个新的模块,咱们同样把它的controller service map都生出来,咱们还是用到代码生成器,我们写一下啊。
10:01
前面部分应该都不需要把这个表来改一下里,我这个单表就这个system。我这里来写一下啊。System。咱们根据它来生成一下,当然这里边有一个关系表,后面咱再完善啊,那我都给它生成出来,为了方便啊,这里边加个逗号,你再加一下第二个表。角色和菜单的关系表,也就是这张表,咱们把它相关代码都给它生成下。现在就可以了啊,然后咱们执行看下效果。等它定行出来啊,生成相关代码。这也就是工具的优点啊,通过工具把一些重复代码能快速生出来。然后大家看啊,代码都有了,咱们把一些不用的给它去掉,第一个菜单需要菜单角色,就是这菜单和这个关系表,这个不需要把这个去掉。
11:03
然后另外就是实体类,实体类呢,我们统一用model中类,这个删掉改一下,改一下map,咱们先改map,在map里边把这个改成咱们中这个menu。啊,这个我给他改一下。完成完成之后呢,我们继续进行修改,把这个角色菜单关系这个map给它也改一下。这个就可以了,改完之后再改service,首先啊菜单的service里边。这个实体类。这个修改。然后菜单角色关系的service同样做个修改,按这一过程各位自己快速弄一下就可以了啊,这个没有什么技术含量啊,就是改这个过程,当然你不改也可以自己用。MP生成的依然可以使用,是咱们为了公共啊,用统一用这个猫中的试剂类。
12:00
所以以上咱们把这需求说到这里,包括做了准备工作,那这些都完成之后呢,下面咱就开始写这个相关接口,最终把功能进行实现。
我来说两句