00:00
各位同学大家好,下面呢,我们继续来实现菜单管理模块中能其他功能,刚才我们完成了增删改查功能,下面咱来实现为角色分配菜单,咱们之前做了分析,角色跟菜单是一个多对多的关系,一个角色可以操作多个菜单,一个菜单可以被多个角色操作,所以咱们来实现为角色分为菜单,这个功能呢,和咱们之前做那个用户分为角色应该说是类似的,那下面呢,给各位先做个分析,然后咱们进行具体的实践。那我在图里边给大家画一下,首先呢,我们在角色的列表页面中,咱们一会儿加个分配的按钮,也说在我们的这个页面中加一个分配,那我这里边我来画一下。当我们现在呢,点击分配按钮之后,大家想一下咱们应该怎么做呢?或者说我们要做成什么样,咱们是不是要到一个页面中啊,就是我们的这个页面中,然后在页面中要做什么事情。
01:07
大家想一下做什么,你可以想一下用户分配角色跟他应该是一样的,就是这个过程,那首先显示当前的角色,比如说当前的角色我们是这个总经理。这是角色,然后下面呢,有这个角色可以使用的各个菜单,比如说我们写个具体的系统。管理,然后在系统管理中有用户管理。有这个角色管理,包括里边可能还有其他的菜单,所以这里边会显示相关的菜单,把菜单咱们也是按照结构进行显示,就是把刚才接口在里边,咱给它再来调用一次,这是我们要做的事情,然后在显示过程中,所以咱们要写的第一个接口就这个接口。
02:00
我写一下啊,这个接口中做两个功能,第一个功能查询所有的菜单,并且按照这个树形的结构进行封装,这个方法已经写过了,一会儿直接掉就可以了。然后这个接口中还要做第二件事情,就是查询当前角色他拥有的这个菜单的权限,就是他现在可以操作那个菜单,这里边我们要查到,而这个过程中跟之前类似,大家注意啊,如果说我是第一次为角色分为菜单,那这角色中肯定没有菜单,如果你不是第一次,他会把之前分析菜单在里边进行显示,所以第一个接口咱就需要做这个事情,查询所有菜单,包括当前角色之前分配过的这个菜单。这个为明确,然后在里边我们选择之后还要写第二个接口,第二个接口做什么呢?那就是为这个角色。
03:04
分配菜单这个里边呢,有一个细节问题。什么细节,比如说之前如果说你这个角色。在之前分配过菜单,那需要把角色之前分配的菜单给他删除,删除之后第二部分在添加角色最新配的这个菜单,咱们要做这个事情,而这个怎么做,大家看我们的表里边啊,在咱的表里边有这么几张表,一个是决策。一个是菜单,一个是菜单和角色的关系表,咱们把它打开,在这里边会存储角色ID,菜单ID,那咱们删,那就根据角色ID把里面数据删掉,包括咱们也基于这张表进行查询,这是我们对于接口的分析,比如咱们马上写两个接口,一个接口是用于查询的,一个用于分配的。
04:04
这是咱们一个基本的分析,那下面呢,分析之后我们就开始来编写这个接口,这个接口因为是菜单部分的,所以咱放到menu ctrl里边编写,那我给各位这里边啊。首先我们的第一个接口,那做的事情就是。查询所有菜单和角色分配的这个菜单,这是第一个,我在这里边加上A片。然后名字如加。之后呢,下面加上我们的方法,咱们加上一个get提交,在里边加上路径,这个路径我跟课件中保持一致,To,我在根据角色ID进行查询名单,要查询角色中的菜单嘛,根据它经行查到,然后下面加方法,Public result to。
05:05
在里边呢,取到角色的ID,我们来获取一下。加上pass类型的ID,然后最后方法进行,我们来调一下啊,调用menu servicewi里面这个方法,这个方法我起个名字就叫做的这个menu。根据角色ID里边传入ID值,最后返回的肯定是一个历次集合啊,咱们加上历次集合。然后加上这个泛型。这个是利的,最终把它做一个推。点OK入list,所以咱们现在把第一个接口中的CTRL部分就完成了,完成之后在service里边把方法我们进行创建。
06:01
这个方法,然后实现类中把方法也先创建出来,咱们一会儿进行具体实现。所以现在啊,这是第一部分,然后这个之后我们再写第二个接口,第二个接口呢,就是进行角色分配菜单。咱们加上啊A片。角色分配菜单。然后下面加上方法,再加上一个post mapping,然后加上路径,路径呢,我跟课件中还是保持一致,叫do。下面加方法public do。然后在里边呢,传入咱们需要那个数据的对象,这个对象呢,我这里边有一个写好的对象,咱们看一下啊,它的名字应该叫这个赛。肉VO啊,那是之前的,咱目前应该叫me view,是这个view me view,然后大家看啊,在里边有什么,第一个是角色ID,然后有角色里边对应那个所有的菜单ID,就是咱们这张表里面的,比如我现在啊,咱举个例子。
07:15
比如现在我这个菜单角色关系表中,第一个是一,它的决赛地是一,它的菜单比如说是幺幺,这是第一个数据,那比如说这里边,然后咱们还有第二条数据,我再加一个啊,第二条数据ID是二,它的ID是一,菜单咱们是幺二,所以咱们现在就是这个结构,大家注意啊,一个角色可以操作多个菜单。那咱们用它来表示,然后之后呢,回到我们这个方法中,在方法中咱们调用service里边的方法进行实现do。传入这个对象。然后最终我们做一个返回。
08:01
点OK,这样的话把这个完成,完成之后呢,在service里边同样把方法我们进行创建为角色分配菜单。最终在实现类中,咱们把方法的实现给它创建出来。写到这位置,所以大家看啊,现在CTRL部分完成了,咱最后缺少的那就是这两个方法的编写,那下面呢,咱们就开始编写这两方法。
我来说两句