00:00
到我们进入首页之后呢,接下来就要开始这每一项的这个模块的开发了,嗯,咱们先看一看呢,它开发之后呢,展示的一个状态啊,是一个什么效果,这里面分为学生管理,教师管理,班级管理,年级管理,管理员管理和个人信息管理,那么咱来咱们来先看第一项学生管理,在学生管理这块都包含哪些功能呢?添加学生啊,这个勾选多个批量删除,学生根据班级信息去啊这个搜索学生根据学生姓名去搜索学生,呃,还有这个学生信息的一个修改啊,看这学生信息的一个修改,还有这个呃,学生信息的一个删除啊下面我们发现还有一些分页,那也就是说他他他这个查询的时候呢,直接就把这个分页呢,哎,给咱们带好了,还可以选择每一页展示的信息条数啊,上一页下一页前往多少页,这些东西呢,都已经带好了啊,这是学生管理,呃,那么咱们在学生管理,教师管理,班级管理和这些管理项目中先写哪一个呢?就看他这个,呃,这个模块管理的这个逻辑依赖关系啊。看这在进行学生管理的时候呢,他第一步可能要根据这个班级信息来进行啊,搜索学生信息,那这个信息什么一年一班,一年二班这些信息,为什么会有这些选项呢?原因就是他要先连接数据库,查询出所有的班级,然后呢,把这个班级信息哎显示到这里,也就是说在写学生信息管理之前,应该先把班级的这个管理的先给他写完,那好,那咱们就用到这个班级管理这块,在班级管理这块呢,你会发现他是要干嘛呢,他会先检索年级啊,是几年级的哪个班是吧?呃,也就是说在写班级信息功能之前,应该先把年级信息该给他写了。
01:35
啊,然后再看这啊,那这个教师信息呢,教师信息这块也有一个根据班级来进行呃,这个检索,呃,检索这个教师信息的一个选项,那也就是说为了如果要是想写学生管理和教师管理,那么你先得把班级管理先写完了,但是呢,你在写班级管理的时候呢,这块要先把年级管理呢先写完了,那在业务逻辑上就得先开发年级管理,开发完年级管理之后呢,开发班级管理,开发完班级管理之后呢,把这个序号给大家写一下。
02:05
哎,它是第一个,他是第二个,然后第三个开发过程呢,是这个和这个,但是他俩谁和谁呢?先开发这个其实就啊无所谓了哈,因为看看这个信息啊,学生关的的信息跟这里面有没有体现出啊,这个学生跟哪个老师有相关的相关的这个信息关联呢?哎,并没有,然后看教师管理这块,教师管理这块有没有跟哪个学生信息直接进行相关联的,也没有,呃,所以这个学生管理和班级管理这块,呃,学生管理和教师管理这块,他俩谁先写谁后写这个呢?呃,应该是没有什么特别明显的区分的,嗯,管理员管理这套呢,基本上跟前面的也是一样的是吧?哎,所以这个管理员管理呢,应该是在,呃最后写也行啊,最后来一个个人信息管理啊,当前登录的是谁就去来修改谁,所以这个呢,也可以给他进行一个,呃,这个啊处理啊。好,那整个的这个项目呢,它的业务逻辑就给大家分析完毕了,嗯,分析完毕之后呢,进入到年级管理这块,看一看接下来我们要开发的功能都是什么,把其他都给它关掉。
03:04
都调看一看都有哪些功能。呃,打开F12看一看,呃,这个我们先回到首页啊,先回到首页之后呢,一点击这个年级管理,一点击年级管理,我们发现它立刻就产生了一次请求,请求了谁呢?请求了一个请求了一个LOCAL49002文件是三,点开它看一看啊,这是由一个JS啊,这是由这个呃,Ch LAS给我们发的一个请求啊,这个请求请的是SMS grade controller啊,这是年级的一个控制器,然后在年级控制器里边请起起的请,呃,这个请求路径叫做get grades,同时这块带来一个一和三,这个一和三是啥意思呢?当前是第一页,每页展示三条的意思啊,这个一进入这个页外,他就立刻发送一次请求,查询出学生信息,并且把学生信息呢展现出来了,而且查到这块呢,直接带上一个分页,第一页啊,每页三条啊,第一页每页三条,也就说刚进来他就直接请求了CTR了啊,注意这块直接就请求了get grade了,这里面是带分页的啊,然后再来看我这块呢,点击这个搜索,假设我想搜索一下年级名称啊,带上一个三。
04:05
带这个三啊,不用全写,然后一点击搜索,我们看一看他请求的这个路径是什么,还是这个呃,Get grades1杠三,但是这个时候他的请求中啊,看一看他这个消息头啊,他的请求中就多带了一点信息,看一看他原始的请求长什么样子,他多带了一个great name啊,就是你这块所说的这个grade name啊,多带了一个参数过去啊,多带一个参数过去,那后面其实就是根据这个参数进行啊这个条件判断进行查询的,然后呢,嗯,这个呃,也就是说我们整个页面上第一个业务就已经搞定了啊,就已经给大家展示出来啊,这个查询业务就展示出来了,一个是刚进入年级管理这块,它立刻发生一次查询,还有另外呢,这个搜索这块呢,输入本年级的这个名称,你点击搜索,它通过模糊匹配也是一次查询,而且刚进入这块,这个查询和这个查询其实是一个查询,它请求的都是什么,都是get grade。Get with,然后呢,来一个一斜线三,这是请求分页信息啊,这是第一页,每页三条,呃后面呢,如果是搜索的话呢,它还会带上一个问号,多带上一个什么呢?多带上一个呃,Great name这样的一个参数,那其实咱们在后端就可以为这两个逻辑准备一个control,因为它请求的都是同一个嘛,对吧?哎,呃,直接这是一个什么带,呃,这是分页查询,并且是带条件的,根据呃年级名称进行模糊匹配的。
05:24
呃,这是第一个,接下来再看第二个业务,还有什么业务呢?添加业务假设我想添加一个年级名称啊,这个假设叫做,呃,大学一年级。诶,这个一年级好像已经有了吧,啊诶下一页那你看这块已经有一年级了,已经有一年级的话呢,那咱们添加一个别的吧,这是一个测试年级啊测试年级啊,年级主任随便写一个,写成一个小张啊小张主任邮箱小张啊艾特it硅谷点com啊主任电话13666666666年级介绍这个年级,这个年级的学生,呃,很有啊这个呃很有呃运动感啊,活力。
06:11
很有活力啊啊,就是很青春很阳光是吧,然后一点击确定。在点击确定之前,咱们先看一看这些请求啊,先把这个给它清掉,来一点确定,我们发现它又呃来了一次请求,请求什么呀,叫做c update,请求的信息是啥呢?就是咱们在页面上所填写的这些信息,想要的是啥呢?想要的是一个你看这个解日,这个格式code message data和OK,这明显是一个result对象嘛,只不过这个data呢,并没有直接想要任何数据,但是这个code就很重要了啊呃,这个这是修改或者保存,保存完之后呢,再来看这个什么,再来看这个,呃,下面这信息,它紧接着又发送一次请求啊,保存完之后直接回归到这个页面,然后回归到页面之后呢,它立刻又发送了一个请求,这个请求还是什么呢?哎,还是这个get grades1杠三是吧,啊,也就说这个,呃,还是要进行一次查询的,那这个时候进行完查询之后呢,这个测试这个数据立刻就出来了。
07:03
啊好,呃,这是增加的,还有什么呢?还有这个删除,一点击这个就可以把这个学生删除,还有这个批量删除,这个批量删除啊和这个删除其实在业务逻辑上是同一个啊CTR那我们可以试一下啊,来看这一点击这个删除,它会提示我们确定要删除吗?一点击确定,来看一看多了一次什么请求多了一次,多了一次这个叫做嗯,诶不是他啊,多了一次这个delete great的请求,Delete great请求这里面带上的参数什么,请求中带的数据是什么,带上一个零冒号12,哎,什么意思呢?它会把这个年级的编号啊,年级的A1呢给带过去,哎,年级代啊,但是你看这个结构,这个结构明显是一个什么,明显是一个JS的一个数组,这里面只有一个元素。啊,而批量删除呢,假设咱们要是想把这个来想把这个年级信息多都给它删除啊,把这个五年65年级和六年级都给它删了,一点击这个批量删除点确定吗?你点击确定看一看,它多这个也是同样是请求这个呃,Delete grade,但是它所请求的参数就是也是一个JS那个什么JS的一个数据,这个JS数据呢,元素里面有两个,一个是五和四,哎就是把这个两个半接带一定往后往后一块发送的,那后端呢,啊,其实你这个批量删除,哎和这个删除其实它就是同一个,呃,Controller,只不过接收数据的时候呢,后端用一个数组来接这个数组里面,呃删除的时候呢,就往这个数组里面放一个元素,这个批量删除呢,那你勾选了几个,它就把几个数组啊,就把几个ID作为元素放在一个数组里,所以他们两个是同一个啊,同一个业务啊,嗯,同一个业务之后,还有谁跟谁同一个业务呢?其实这个添加和修改也是同一个业务,也是同一个业务啊,添加的时候呢,咱们在这块是没有输入任何的这个,呃是呃,我们看一下吧,再添加一个这个五年级四年。
08:44
四年级年级主任小明,然后来一个小明,诶。小明艾特艾特硅谷点com年级电话13666666666年级介绍这个这个年级的主任是小明,哎看着啊下面这块,呃,我们把这个请求全给他清掉,清掉之后呢,再来一次确定他走的是save or update啊,但是如果是增加的话呢,它不会哎,不会让我们输入一个ID啊,就是往后台传递的时候,看一看传递的数据是什么啊,来点进去他光说的是email呃这样几个信息,但是这里面就没有ID,就没有ID啊,那如果是修改的话呢,把这个四年级我再点确定它也是走这个save啊,但是它它会多一个ID,它会多个ID,那后端就可以判断了,如果说传递过来这些数据啊,这些数据仍然是save or update,这个数据如果有ID,哎,那么他就要进行一个修改。
09:42
如果没有这个ID,哎,那就说明它是干嘛呢?是要进行一个新增啊,新增来进行判断啊,那整体这些业务逻辑呢,都要实现哪些功能,都要请求哪些资源,哎,这个就给大家简单的一一介绍了一下哈,嗯,介绍完之后呢,接下来咱就可以把这个一个一个的内容都给它实现了,在实现完这些功能之后,还要给大家,还要给大家展示那个东西做swagger啊,这个swagger怎么用的呢?看着啊,在这个9002后面,这是我的测试项目,后面跟上这个东西叫做swagger swagger-ui.html,然后一回车。
10:18
诶,这个就是swagger帮助咱们生成的接口文档生成的这个接口文档里面呢,有这样一些信息,像什么班级控制器,教师控制器,年级控制器,系统控制器和学传控制器,这就是每一个controller,它里面都有哪些API,每个API都能做什么,我们点击了办,点击这个系统控制器,在这边应该能看到啊,Get info,这是咱们已经实现过的了,Get wiify code,这个是咱们也已经实现过的了,这还有获得头像获得这个是头像上传啊,登录,还有这是更新密码等等这些操作,这这是开发完成之后,这里面还会有这样的一些接口啊。呃,这个都是由swaer来给我们生成的,但是咱们这个项目里面还目前还没有啊,咱们可以看看来一个swaer swagger-UIi.HTML来回车,你会发现它基本上啥都没有东西的啊,啥都没有东西的,那么这个东西是怎么生成的,那怎么写的,我们需要做什么?哎,咱们也会在这个呃,班级模块讲完之后也会给大家简简简单的这个给大家说一下这个玩意是怎么弄的哈,呃,其实也很简单,就是加。
11:18
几个注解加几个介绍的事儿啊,那说如果仅有这样一个结果呢,其实那就没意思了,还可以干嘛呢?诶注意看这个班级控制器这块,这是几个请求呢?Delete的请求,Get请求,Get请求,Get请求和一个post请求,这个UIUI都是啥?嗯,Delete class get class get class by什么什么orp啊,C update这些都是它对应的一些ul,然后看这个,嗯,看这个get这块叫呃,Get class吧,这个一点是查询全部的,呃,全部的班级信息,然后呢,你看这它是一个返回的信息,格式是长这个样子的啊。要提交的参数呢?提交参数没有,那你直接点这个try out就可以直接在这块呢进行测试了,我假设这个参数什么都没放啊,那它返回的结果是什么?你看哎,返回结果是什么都code message data,所以在这块呢,Swaer还是可以帮助我们对每个接口进行个测试,哎,来看这啊,再回到这,这是班级控制器,再回到年级控制器,不是年级控制器啊,是一个叫做啊,是年级控制器啊,在年级控制器里边看一看这个get grades,哎,看这,呃,这里边也没有提交任何参数,再1.tryout,你看它会把所有的年级给咱们查出来啊,你看这个信息都是以这种格式来进行返回的,如果说出现这个信息说明查询成功了,哎,这个也帮助我们测完了是吧?哎,再来个带条件的吧,带个什么条件呢,这个看这。
12:31
这个get,这是你看这是分页,并且是带条件的,例如我想查第二页,每一页呢,五条,哎,好像没有这么大,每页三条,呃,年级的名字我,呃,如果是great的名字,我随便带上一个吧,带上一个哎,三带一个三把这个参数往这一放,然后我们一点这个tryout,它会把这个什么参数向后台一传,传完之后呢,你看还给你介绍了,这是分页查询的页码数,这是分页查询大小,这是幕后查询的班级的名称,哎,这个是以pass的方式给我们带过去的,这个是以包子的方式呢,带过去的参数类型,你看这块都有啊,介绍的很详细,好不好使呀,填好一些测试数据,来1.tryout看下面的结果,如果这个response body是这样一个结果,看code message data是什么结果,在这咱们自己可以判断啊,Record里面都有啥呀,ID啊,什么什么email啊,什么什么这些信息都有,你看呃,这是总记录数,嗯,总总总什么,呃,这个是页大小,当前第几页,哎,然后等等一系列信息这块都有。
13:24
啊,那你说你看这个swaer还可以帮助我们测试一下前端工程师呢,在拿到他要是看这个页面,看一看哪个接口好不好用,他就可以直接在上面测了,对吧?诶所以这样前后端交互呢,它就会比较流畅,就会比较顺利啊,就会比较轻松,前端过程师只要看这个就OK了,他不需要啊去仔细去查阅咱们后面的代码啊,他是怎么玩的是吧,怎么写的运行过程是什么?哎,如果说他发现哪个地方有问题,他直接就就找咱们跟他说,哎,哪个接口啊,没测通啊,是有什么问题啊,你看一看这个这个效果呢,有点毛病啊,咱再沟通一下,调一调是吧,哎就可以调八它了,好,这个就是接下来哎咱们要写的第一个功能,哎注意啊,来看这回到回到回到这个9002这块啊。
14:07
然后请求90029002,咱们先把这个年级管理给它搞定,先写谁呢?先写一进入这个页面就要展示信息和这个搜索功能是一致的啊,这是一个分页带条件的一个查询是吧?接下来紧接着就要实现它。
我来说两句