00:00
各位同学大家好,下面呢,我们开始开发给角色分配菜单权限接口,刚才咱做了说明,两个接口,第一个接口获取全部菜单,并且我们判断菜单是否已经被角色所选择,最终在页面中进行显示。然后第二个接口就是保存分配权限,先删除之前已经分配的,然后加入最新分配的权限。那下面呢,我们来写一下这个接口。然后接口说明啊,因为它是角色分配菜单权限,你把接口写到菜单中是可以的,另外写到角色中也是可以的,我这里边就写到菜单中,比如说你这个意思,你在CTRL里边啊,你写到这个肉CTRL中可以,写到menu中也可以,我就写到menu里边了,下面我们来写一下这个接口。我在这个位置做一个实现。首先我写第一个接口,咱们来做个实现。根据角色。
01:02
来分配菜单,那咱们做个实现,我们加上这个swagger的注解A片operation,然后里边就是根据角色。我们先获取这个菜单,也就是把所有菜单得到,然后判断菜单是否被角色选中,下面加上它的路径,Get mapping,然后咱给它起个名字,这个名字我就跟课件中保持一致了,为了咱一块儿前端我们复制方便,把这个咱们直接拿过来,然后写完之后下面加上方法。他利克造的。咱们的统一反结果。然后这个名字我就叫兔和赛。加上之后在方法中呢,得到这个角色的ID,因为咱要根据角色ID得到这角色是否分配那个菜单,所以这ID肯定需要加上浪类型这个角色ID。
02:06
把这个拉过来。拿回来之后呢,下面我们来调用方法,咱就调用里面这个方法,那我们给方法起个名字,我就叫范的这个menu。然后根据这个角色ID进行查询。里边传入角色ID。现在这个方法完成,完成之后呢,最后返回的肯定是一个历史集合,因为它要做一个列表显示,只显示中,你之前选择过,要默认选中。他的范型就是菜单。我这里写一下。System menu,最终咱们把它做一个return result.ok里边传入例子,所以现在我们的这个CTRL部分我们就快速完成了,这就是第一个完成之后,下面我们在wi里边来创建这个方法。
03:03
根据角色分配菜单。然后创建之后,最后来到实现类中,咱们把方法最终做一个实现。我们写到这里,咱们最终实现一下。然后怎么实现呢?其实跟之前那个就是用户角色关系类似,我先把这步骤给各位写一下,然后咱们最终一步一步写下代码,我先给大家列举出步骤来,首先我们的第一步操作,咱们先获许,就是所有的菜单,这个肯定要查出来,也就直接查我们这个菜单表,就是这个menu表,把所有菜单都进行查询,然后查的时候呢,有一个小细节,其实这个功能我们刚才没有做,但是大家考虑进去,大家看这个值。Thes是状态,咱就约定一代表可用,零代表不可用,所以你要查询状态是一的这个菜单列表,如果零,那肯定就不能用了,我这里给它加上一个条件C,它的值等于一的这个所有菜单,这是我们的第一部分。
04:09
然后咱们的第二步我们做什么呢?因为咱这里边是不是有角色ID,那我就是根据角色ID来查询,查询这个角色里边分配过哪些菜单。我这里写一下啊,根据预算ID查询角色分配过的那个。菜单的列表,这是我们的第二部分,而这个茶我们要怎么做呢?大家看这张表中,System肉menu根据菜地查询角色分配过哪些菜单,把这个我们进行查询,这是我们的第二部分,然后这个返回的和第一个返回的都是这个集合。这是咱们写到的,然后这个之后呢,我们下面干什么呢,给大家写一下啊,因为咱们现在我查出这个角色分的菜单是一个列表,每部分是个对象,咱从里边呢,要把它所有那个就是菜单的ID给他取到,就是第三步。
05:06
从第二步查询到列表中,咱们获取角色分配的所有菜单的ID,这是我们的第三步,然后这个之后呢,咱们下一步啊,要做一个数据的一个处理。什么叫数据处理?刚才我提到了,就是这个地方。大家看这里。就这个意思来。什么意思,如果说菜单分配过这只是不是就处,如果没有分配过这只就是false,所以咱们把菜单里边做这个处理,就是判断我这菜单是否被选中,如果说它选中这值就变成true,如果它没有选中,它就变成false,咱来做这个,我这里写一下啊。如果。菜单它被选中,这个值就是true,否则它就是false,那这个怎么做呢?大家想一下,我是不是有所有菜单,是不是有所有分派D,那在这个数做比对应,如果ID在里边存在,那这菜单里面那个项就改成true,如果没有,那就改成false,拿着所有菜单跟所有ID,我们要做一个比对,这么做就可以了。
06:21
这是我们马上要做的这么一个事情啊,我这里也写下啊,就是。说的通俗点,拿着你已经分配的菜单的这个ID。去和所有菜单进行比对,如果里边有这个相同的,那就让这个意思值等于处。就表示它被选中,就是咱们前端通过它进行处理,这是我们写到的这个步骤,然后这个之后最后一步,因为咱要做成的是不是这个效果,就是树形结构,所以最终咱给它就是转换成一种。
07:00
树形结构。我这里写一下啊,转换成。树形结构。为了。最终的这个显示。这是我们要做到的,然后怎么转用结构,咱之前呢,应该写好了这么一个工具类,我们看啊,就这个menu hyper,咱还是调我们刚才那个递归,也就是这里边的方法,我们最终进行实现。所以以上是咱们要做的这个根据角色获取菜单,包括获取它已经分配菜单,最终在页面中进行显示,然后那过程在特别多说几句啊,如果说你是第一次分配,那他肯定没有选中,就是显示所有菜单使用结构,如果你之前分配过,那就会显示所有菜单,并且所有菜单中有你分配那个。菜单他要默认选中这个啊,是咱们一个步骤的分析。那下面呢,我们就按照步骤把这个代码我们来最终写一下。
我来说两句