00:00
各位同学大家好,下面呢,我们实现给用户分配角色以及更改用户状态,那咱们先看如何给用户分配角色,我们这里边重点来开发接口前端,咱通过课件直接进行整合就可以了,那咱们看第一个接口该怎么去做,给各位做一个详细的分析。咱们来到这个图里边,首先呢,大家看啊,我现在在用户列表的页面中,一会咱在最后加一个按钮叫分配,我这里写一下啊,一会我们加一个按钮,我们叫分配,或者说叫分配角色。当我们现在点击分配按钮之后,大家想一下咱们要怎么做,我们要做什么,咱们是不是要到一个新的页面中去,我这里画一下啊,在一个新的页面中,然后新的页面中要做什么事情呢?给大家写一下,具体说要做两件事情,什么事情小这个位置啊,首先第一个事情我们就是要显示所有的。
01:04
角色进行显示,然后第二个就是显示当前用户他所属的这个角色,当然特别强调啊,第二个显示的时候呢,这用户可能是第一次分配,他可能没有说出角色,如果说他不是第一次分配,可能他之前属于总经理,或者说属于销售等等,这是我们要做的这个事情,所以说咱们写在第一个接口就是来做这个事情,把所有的角色,还有当前用户所属的角色,我们进行数据获取,在页面中进行显示,而页面中最终应该是长这个样子。比如说当前的这个用户,咱们是这个。然后Lucy里边呢,有很多的角色,假如说啊,他的角色有这个总经理。有这个技术总监。
02:00
啊,包括有一个财务总监,假如说啊,咱们有三个角色,而三个角色呢,我们在前面其实可以加上一个复选框,我就加一下啊,用这个代表选框,这就是显示角色,假如说现在啊,这个Lucy之前的分配技术总监这个角色,那咱们给他画上,这里会显示,比如他之前有这个总经理,那这里边也会做一个选中啊,这里边应该是总监啊,给他改一下啊。技术总监。包括财务总监啊,都是公司的高层嘛。就是希望各位同学啊,以后都能成为这个技术总监,或者你能成为财务总监,或者能成为总经理啊,那更好啊。啊,这个也改一下啊,财务总监。把这图啊画得更完善一点啊。所以现在这是我们做的第一部分,我再重复一遍啊,点击分配按钮之后,咱们进入到一个页面,在页面中显示所有角色,然后显示当前用户所属的角色,如果用户是第一次进行分配,他之前可能没有,如果他不是第一次,他有之前这个角色,这是我们做的第一件事情,然后之后呢,里边比如咱们现在啊,重新为用户分角色,这里边假如说一个按钮我们确定。
03:22
或者说叫保存。啊,咱要确定了,当我点确定之后,我们要进入到下一个页面这里一下啊,下一个页面。然后在下一个页面中,我们要做什么事情呢?是不是要把我们最新配的这个用户的角色添加到数据库中,比如我们的下一个接口?把用户最新分配到角色添加到数据库里边去,这是我们做的这个事情,所以咱们会在这里边最终进行实现,也就是我们的第二个接口,那这个怎么做,给大家说明啊,首先第一个咱先分析查询所有角色,这个简单我们就直接查询咱们这个角色表,把所有角色查出来可以了,然后第二个你要查询当前用户所说角色。
04:14
那大家想一下这个该怎么做啊,我这里画一下啊。第一个比较容易,咱们就是直接查询角色表就可以了。查询。角色表,然后第二个呢,查询当前用户做出角色,这个查的话,大家想一下怎么查。该怎么做?首先啊,当前用户肯定是有用户ID,所以我们的做法就是。写到这里啊,首先根据用户ID先查询查什么。大家想一下该怎么查,你看我这个数据库里边啊,用户角色是不是对多的关系有个第三张表,所以咱们第一部分根据用户ID先查第三张表,看用户所属的角色ID啊,这是第一部分写一下啊,查询用户角色。
05:08
关系表查询用户。所有的这个角色的ID把这查到,然后查到之后我们还有第二部分,就是第二部操作,根据角色ID再查询角色的信息,比如说角色名称啊,角什么值等等,所以咱们需要这么来做啊,说的更具体啊,咱表来看。比如现在我这个表里边大家看啊,我这个角色比如是这个,比如这个值都改成零啊,为了看着方便,比如现在我这个角色ID是这个一。用户ID咱们也是这个一,那现在呢,如果在里面保存的话,怎么保存,我这里给大家写一下啊。比如现在默认ID是一,用户ID是一,决色ID是一,包括有它的时间,那这样的话保存的是不是他们的关系,那咱怎么做?先根据用户ID查出这里边用户所属的角色ID,再根据他查角色表,到里边查到角色的信息,管理员,这是我们查的一个基本过程,这个过程实现的话多种方式,你可以直接写个SQ语句实现,也可以咱们用代码一步一步进行查询,都可以做到,这是我们做的第一件事情。
06:26
然后咱看第二个啊。把用户最终分配的角色加到数据库中,也就是加到我们的用户角色关系表中。但这里有个问题啊,如果说这个用户呢,之前分配个角色,那这个角色肯定是失效了,然后用最新的,所以咱们怎么做,我写到这里边啊,它也是分成两步,第一步操作。把用户之前分配的角色给他删除,然后第二个再保存最新配的角色,也就说之前的这用户啊,他有哪些关系,这些数据都删掉,然后再加入新的内容,这是我们做的两部分,比如咱们一会儿要写两个接口,第一个接口返回所有角色和当前用户所属角色,第二个接口把用户最终分配的角色加到数据库中,也就是我们这个用户角色关系表中。
07:28
角色关系表里边进行添加,所以咱们啊啊接口就分到这里。然后这个接口之后呢,咱们还一个接口,这个接口比较简单了,叫更改用户的状态,大家看啊,在用户表里有个字段,我们找到这个字段。这个叫,比如咱们约定啊,一代表可用,零代表不可用,咱们修改状态就是把这改成零或者改成一,就是做一个简单的修改操作,根据用户ID改它的状态。
08:05
所以以上就是咱们接口的分析,大家给他明确啊,就是怎么给用户分析角色。他该怎么去做,通过两个接口进行实现,这个咱们就说到这里,然后这个之后下面呢,我们做个准备工作,因为一会儿操作中,咱们需要操作到这张表。用户角色关系表,所以咱把这表对应service和map生成出来,因为要进行操作,但是它不需要,只需要和map,那我现在啊把这个生成下,刚才呢,我们有代码生成器,咱们找到。是在我们的这个位置啊,然后代码生成器里边把内容改一下,这些应该都不需要改,咱就把这个表改一下,我们看一下啊,表叫system user下划线。我改一下啊。根据他把新闻代码咱给他生成一下,我们只需要service和map,其他都不需要,实体类咱们也统一导入过了啊,先生成一下啊,看一下。
09:10
现在完成完成之后我们看到里边啊。首先这CTRL不需要删掉。这个实体类用model统一的就可以了,这个我也给它删掉啊,然后咱们看重点有service。是不是这个用户角色service实体类改成model中的实体类,我们给他改一下啊,就是一边改一边咱也看一下生成的代码。这是找到service对应的类,这个也给它改一下。另外我们这里边有这个。就是用户角色关系的,因为咱们要操作数据库,所以现在啊这个就完成了,另外这个实体类。Model都有,咱们也特别看一下啊,就是这个是一类,呃,在这里啊,这个。
10:08
用户决策关系由我们的用坏地,还有就在地,现在啊,这些准备工作就都做到了,然后都做到之后,下面呢,我们在这个CTRL里边开始编写接口,就是用户的CTRL中编写接口,刚才咱说到了两个接口,第一个接口就是查询所有角色,第二个接口根据用户分配角色啊,当然我的课件中呢,是把这接口写到这个CTRL里边,你写到user里边都是可以的啊,就是这个都是做这个用户角色的这个功能都是可以的,我就按照课件来写了,在角色CTRL中来写这个接口,写到用户中也是可以的。啊,那咱们找到controller这里边。然后把这个结构写一下啊,目前我们有两个接口。啊,咱们到写到这个位置啊,两个接口,第一个接口我们要做的就是。
11:02
查询所有的角色和当前用户所属的角色,咱要查出两部分数据啊,这是第一个。然后第二个接口就是。为这个用户。分配角色,这是咱们要写的两部分,另外一个就是用户状态啊,等一会在用户里边写就可以了,那咱们先写这两个,首先T个我们加上一个A片。然后给它加一个名字啊,就是获取。角色和就叫获取角色了啊,咱就这么来写了,然后下面加上提交方式,我们加上一个get提交给它起个名字,这个名字我跟课件中保持一致,To a赛u cid,根据UCIID进行。分配进行获取。
12:00
之后呢,下面加上方法public,我这个名字就是。我在。在里边呢,得到用户ID,得到当前用户所入角色,必须有这个用户ID。这里啊,Pass类型的用户ID,这些就得到,得到之后呢,咱们来调用中的方法进行实现,我在service里边呢,写一个方法叫饭的,这个就是得到角色的数据啊,并且根据这个用户ID。给它得到里边把值传进去,因为数据终咱们刚才提到了有两部分,所以最终呢,我让它返回一个脉部集合,通过脉部集合得到它的两份数据,Map中的key,这样此缀啊Y6,咱们加上一个object。现在这部分完成,最终把这个数据我们做一个退。
13:03
点OK,传入map,现在啊,这个结构就完成了。然后完成之后,下面呢,我写下一个这个controller,然后最终我们再写这个方法啊,最终咱再写它,然后写下一个。加上。API为用户分配角色,或者说根据用户分配角色。在里边加上这个,给咱来一个post提交了啊,给它起个名字,这名字同样跟课件中保持一致,就为了一会儿咱前端方便啊,跟他就保持一样,不一样也可以,你可以自己来写一个也没有问题,然后下面public do。在里边呢,因为咱是为用户分配角色,里边肯定需要你的用户ID,还需要你角色的ID,因为最终这个数据咱分析到了,是加到这个表里边,比如说这个ID是一的用户,可能有一的角色,他可能还有这个角色,比如再加一个啊,他可能有这个十的这个角色都有可能,所以咱最终是为一个用户加入多个角色,在里边要有一个用户ID和多个角色ID。
14:14
这个要明确啊,我再说一遍,咱要为某个用户分配角色,一个用户可能有一个角色,也可能有多个角色,最终加的话需要用到用户ID和你多个角色ID,角色ID可能一个也可能多个,这是我们要做的事情,然后这个怎么做呢?我在model中呢,给大家提前写好一个VO类啊,咱通过这这来用一下啊,我们看一下。它叫A塞肉VO。咱们看里边是什么啊,大家看啊。这是什么?是不是用户ID?这是什么?是一个集合,就表示用户里边所有角色的ID的集合,比如说它的角色ID是一,是二,是三,我们放到例子机构中去,通过它进行传递,然后最后我们调用方法,Service里边我们加一个方法叫do和。
15:13
传入这个优对象完成分配。最后我们做一个旅推。result.ok。把这个最终完成,所以以上啊,把CTRL中的两个方法咱就完成了。完成之后在里边咱们把方法进行创建,第一个方法就是我们刚才写到的啊这个方法,呃,这里写一下。查询所有角色和当前用户,做出角色。第二个方法为用户分配角色,我们先进行创建。放到这里啊,创建出来。然后咱们在实现类中把两个方法,最终我们做一个实现。
16:00
就放到这里。这是第二个,然后这个是第一个。所以大家看啊,现在这个基本的结构我们就完成了,然后完成之后呢,下面我们就是在里边需要我们的具体的方法,第一个查询,第二个分配啊,刚才咱们就做了分析,那咱们马上开始进行实现。目前完成就是基本的需求分析,大家要理解为我们现在要做什么事情,然后第二个准备工作,包括第三个咱把两个接口的基本结构完成,最终接力完到具体逻辑。
我来说两句