00:01
各位同学大家好,下面呢,咱们继续来实现公众号的相关功能开发,下面咱来实现这么一个功能,我们看一下啊,在公众号里边下面有菜单,一级菜单中有直播课程,还有个人,然后在里边有他的二级菜单,那咱下面来做这个功能,比如我们现在点击课程里边,点击后端开发,那把后端开发里边的所有这个课程在里边显示,然后咱们点击某个课程,进入到课程的详情界面,所以下面咱来做两个功能,第一个功能根据课程分类查询课程的列表,然后第二个功能就是课程的详情功能,那下面我们开始做实现,然后这个效果我课件中写到了第一个点击,比如后端开发,我们显示列表,列表根据课程分类做查询,并且进行扉页显示。另外,点击某。
01:01
课程就是点这个叫去看看,进入到详情页面中做个显示。所以咱们下面开始做这功能,这个功能呢,因为要查询课程的相关内容,所以咱们还是来到我们的这个模块,Vod模块,在模块中咱们首先编写它的接口,这个部分咱重点就来开发接口,前端我这里都已经写过了,后面咱们把前端每个步骤我们详细来看一遍就可以了,重点来写接口,那下面我们写一下啊。在这个vod里,我们创建一个SA,这咱们之前创建之前咱们创建这个接口是完成这个关键字搜索接口,那下面呢,我们在里边来写上这么两个接口,那我们来写一下这个接口。我给他写到这里啊,首先第一个这个就是根据这个课程分类查询课程的列表信息,这个信息咱要做一个分页的这么一个显示,这是第一个。
02:11
然后第二个接口,我们要做的事情就是根据课程ID查询课程的详情信息。写下啊查询课程的。详情信息,那下面我们先写第一个接口,我们加上这个A片,里边加上它的提示,就是里边的这个提示。我把这个直接复制过来,然后下面加上接口,我们加上一个public啊,先加上一个提交方式,这个提交方式咱就写一个盖头。然后里边加上我们的路径,这个路径为了后面前端方便,我就跟课件中保持一致,咱们看一下啊,上面叫A片vod cos,然后下面这个接口,我们就直接传入三个参数,把三个参数咱们过来。
03:05
我们看一下啊,第一个参数是你的分类的ID,也就是咱们那个一级分类ID,然后第二个是当前页,第三个是每页技术数,这是我们这个路径下面加上方法。Public。Result。加上这个方法名,咱们起个名字,我就叫这个配置。Cos。然后在里边得到咱们的三个参数,就是ID,当前页,还有每页记录数,那这三个值都是用那个pass valuable渠道,我把这个获取过程从课件中直接复制过来,因为之前我们都写过这个,就快速实现下。咱们看一下啊,第一个就是课程的分类ID。这个指的是你的那个一级分类的ID。这个咱们得到,也就是咱们刚才看到里面这个。
04:02
后端开发大数据这个分类,然后第二个当前页,第三个每月技术数,这个得到之后,下面咱们做一个进步实现。因为在这个过程里边,我们要做到这么一个条件的一个查询,所以咱们这么来做啊,我在这里边呢,先封装一下我们的条件,咱们用一个VO对象封装,或者说用cos也可以,我就用一个VO对象进行封装。那我写一下啊,我们加上一个cos,这个query VO啊,当然我这么写是故意写一种别的方式,你用最原始方式都可以做到,这里边多种方式,总之一个原则,能把数据查出来可以了,然后这个newy VO之后我们向VO里边设置咱们这个参数这个。ID,把这个分类ID进去,然后设置之后,下面咱们做这个分页查询,先创建一个配置对象用于分页,那我加上一个配置,然后加上泛型,这个泛型我们就叫cos view,最终咱们通过cos view这个值进行返回,因为里边是我们要显示这些数据的这些内容。
05:20
再用它进行实现,加上一个叫配置,P等于new上一个配置在里边传入当前页,还有每页技术数,这个做一个创建,创建之后最后我们调用service里边的方法做一个分页查询,我们就叫find配置。写上这么一个方法。然后咱们看啊,在这个里边。应该有很多的方法,那我们现在啊,咱就单独写我们这个方法,然后其他方法咱就不做了,咱重新写一个啊,因为之前其实有类似方法,但是咱们现在重新写一个方法。然后这个方法我们起个名字就叫范的配置,里边传入这个配置对象,还有咱们那个VO,就是条件的对象,最终返回分页中那个对象,咱们就用这个叫I配置,之前都用过啊,我就直接写一下。
06:17
然后里边加上这个叫Co。给它起个名字,我们叫配置model,所以现在这个结构完成,完成之后,最后我们把它做一个加上造点OK里边传入。配置model,在这配置model中有咱们分页查询之后的所有数据,所以现在这个CTRL部分我们就完成了,完成之后咱们在里边把这方法创建出来,就是进行这个根据课程分类ID进行分析查询方法,就这部分做到这里,然后做到这里之后,下面呢,咱把这个详情的CTRL部分也完成,然后最终就重点写。
07:03
里面的方法,那我们来写一下啊。首先加上A片Ali,给它起一个中文提示,就是这个提示下面加上提交方式,因为是查询,所以咱们还是写一个get提交,然后在get提交里边加上它的这个路径。路径课件中保持一致。咱们叫get info传入课程ID,根据课程ID得到课程的讲清信息,下面加上方法public。我们叫get info。然后在get应用方法中把cos ID这个课程ID给它取到,用pass加上浪类型的cos ID都是之前做过的啊,然后写完之后,最后我们调用service里边的方法进行查询,在service里边我写个方法,我就叫get这个info,然后根据ID进行查询。
08:04
然后这里边传入课程ID,最终呢,咱们让它就返回一个map集合。这种思想我之前提到过啊,就是如果说啊,你有专门的实体类能进行封装,那咱们肯定反映实体类,如果说你没有专门实体类,或者说你不好确定到底反映什么类型,咱一般为了方便都建议反应一个map类型,因为这样的话会特别方便,不管你是取值放置都很容易,所以现在我就反一个卖集合,最终做一个屡退。伪造的点OK,然后传入这个map,所以大家看啊,现在咱就把这个CTRL部分就完成了,就是一个是根据一级分类ID做分页查询,第二个就是根据课程ID查询课程的详情,这是咱们的CTRL部分我们就做到了,然后这个列表的部分呢,我们是用了一个VO这种方式做了一个条件封装,最终我们开始写这个。
09:06
最终的方法,那下面呢,Threat里边我把这方法做了创建,咱们来到它的实现类中,把这两个方法我们最终做实现。那咱们开始实现一下啊,首先第一个方法就是列表方法,然后第二个方法查询课程的详情方法,那下面我们分别来把两个方法最终实现一下,咱们来写一下啊。首先我们先写第一个方法,第一个方法就是进行一级分类,这个就是分页查询的方法,那这个结构之前咱们应该也写过很多遍了,那我下面啊,我就快速写一下这个结构。咱们看怎么来做啊。首先第一步通过VO这个对象先获取一下。我们这些条件值,因为里边有我们的条件,然后获取条件值之后,我们的第二部分判断条件值是否为空,进行封装,其实咱们目前呢,应该只需要一个分类ID,咱为了方法通用,咱把条件值都进行判断,进行判断之后下一步操作调用方法进行条件的分页查询,把这个做到,然后查询之后我们再。
10:30
就是获取到里边那些数据啊,比如说你的那个集合,包括你的什么总页数,什么总记录数等值,包括在过程中,咱们在封装一下里边的一些其他的数据。啊,其他数据,比如说你这个课程里边,咱们看课程表里边啊,找到课程表里边是不是有讲师ID,有分类ID,所以咱把这个讲师ID对应的名称,包括分类ID对应的名称都给它取到,或者咱们后面显示方便。
11:04
然后最终把这些数据呢,都给它封装到map机构中进行返回。以上是咱们一个基本步骤,那下面呢,咱们就把这个步骤的代码我们快速做实现,那咱写一下啊,第一步获取条件值,通过VO对象取到,那这部分我来到课件中,把这个代码咱们复制过来,因为它得到值的过程就是从里边get出来它的各个值,第一个课程名称,包括一级,二级分类ID,讲师ID都得到,得到之后下面咱们做一个条件判断,包括封装。我写下啊,加上quary加上。我们rapper等于上一个rap,然后下面做判断,咱们先判断第一个条件,我在这位置写下,加上缀。
12:04
s.is empty title,如果title值不等于空,那咱们进行封装,用rapper,我们加上like。看一下表里字段啊,课程的名称的字段,大家看叫什么。是不是叫title,所以咱们根据title做一个模糊查询,里边加上title啊title。这个值。这个我们得到,然后得到之后我们看啊,下面的其他的条件值判断跟这个写法应该说是一样的,所以下面部分我也是从课件中就复制了啊,咱就不再敲了,因为代码都是重复的,我们就节约时间把这个这些拿过来咱们看一下啊,第二个是分类ID啊,其实这是二级分类,这是一级分类,这是讲师ID,所以现在条件值我们就进行了封装,然后封装之后下面呢,我们调用方法做一个条件的分页查询。
13:05
咱们调用base map中的方法叫配置传入配置。再入最终返回的是一个配置对象啊,就是咱说那个I配置的一个对象,那我现在啊,把这个咱们做一个返回。我写下啊,就在里边给他返回下。我在这里边呢一个,然后里边上一个这位置给它起个名字,我们就叫这个啊,当然我们看啊,这里写这里报错了,大家看什么问题啊,应该是某个值写错了,咱们看啊,我这配置里边传的是一个cos,就这个cos对象,然后咱们回到CTRL里边,咱们看一下啊,大家看啊,问题应该在这里,呃,我这里写错了啊,这里怎么写的一个cos VO,这里应该写cos啊,写错了啊,我刚才说的VO是指的这个cos宽RYVO,咱用于封装条件,然后分页查询,里边还是写这个cos对象,这里写错了啊,咱给他快速改一下。
14:13
然后改完之后,把里边这位置也给它改一下。改成咱们的这个对象,然后最后来到实现类中改一下,刚才这个泛型写错了,应该用的是这个cos啊,不是cos VO,这写错了,然后下面我们看啊,这里边再经行查询得到是这个配置对象,在配置里边有咱们分页的数据。所以现在啊,这个得到,然后咱通过配置把里边需要数据都给它取出来,那我来到课件里边啊,把这部分给它复制一下,就是里边的。这些值咱们取出来之后看一下啊,第一个值总计数数总页数,当前页每页显示记录数,还有每页数据的历次集合,所以现在这些值我们就都取到了,然后都取到之后在集合里边有个cos对象,因为刚才我们提到了啊,咱们这里边有讲师ID。
15:14
有课程分类的ID,但是我现在想要把这个ID定的名称渠道,所以咱们需要把它再做进母封装,然后把封装数据同样放到cos里边,有一个P这个map集合中做进一步处理,所以下面啊,咱来做这个事情。我在里边写一下啊,就是获取讲师的名称,还有课程分类的名称,把这些值取到,那这过程我们来写一下啊,首先把这个集合做个便利。点上stream上for each给他做个便利,我用stream加表达式,然后下面加上一个方法,这个方法咱起个名字就叫get这个。
16:04
Teacher。就是teacher和这个。分类名称这个。所以现在啊,把这结构完成了,完成之后呢,这一方法咱们一会儿进行实现,因为咱们最终数据是要放到一个map集合中,所以我在里边把map集合先创建出来,我们加上一个string。Object map等于上一个哈希map,向map中来放它的数据啊,就是它需要的几个值,这几个值我从课件中复制一下啊,咱就要给它返回这三个值,第一个总计数数,第二个总页数,包括第三个每页数据的历子集合,在例子集合中的每个扣的对象中有你这个讲师,包括课程分类的名称。所以现在这部返程最后别忘记把map返回。
17:05
就是我们写的这个过程,把它做这么一个返回。所以咱们现在啊,这个基本结构就完成了,完成之后呢,咱们下面啊,在里边我们把这个方法做一下进一步的实现。那咱们来写一下啊,下面呢,我把这个方法咱们先做创建啊,当然里边有些小bug,一会儿咱再完善啊,咱们把结构先写出来,然后在里边怎么做,我给他改个名字,我们叫这个cos,从cos里边把那三个ID值给它得到,那我获取一下啊,第一个是这个讲师ID,咱们先得到,然后里边的第二个值是这个一级分类ID,就是这个。ID,然后第三个是里个二级分类的ID,这个值我们也得到,所以现在三个ID值得到,得到之后下面咱们分别调用service里边的方法,根据ID进行查询,查询之后封装到这个map机构中去,那下面咱们来继续做一下啊。
18:13
首先第一个就是讲师ID得到了,那下面我们写一下啊,咱们调用这个teacher service里面的方法,根据ID进行查询,然后返回的是讲师这个对象,我们叫teacher。返回讲师对象之后,咱们做一个判断。我写一下啊。如果说这个讲师的这个teacher对象,它不等于闹。那咱们进封装。在扣子里边把讲师名称扩进去,这是里边的第一部分。讲师名称,然后第二部分是我们这个。课程分类的名称,咱用同样的方式做后处理。那我写下啊,就是里边这个D1类ID,咱们得到一级分类这个对象。
19:10
啊,我们起个名字啊,就要这个。Subject,然后同样方式咱们判断进行封装。那我们来写一下啊,如果不等于空,那咱们把里面这个名称取到点,里面这个方法应该是这get title。就这个啊,写一下get title,一级分类名称,然后一级分类起个名字,咱们叫这个名字,课点中保持一致,为了咱方便啊,然后下面写法跟这一样。快速改一下啊,咱们来得到二级分类ID,我们叫这个subject,传入二级分类这个ID值,下面同样做一个判断,然后取到它这个title值,二级分类名称咱们叫这个名字subject这个。
20:03
Title,最终让这个方法返回的是一个cos这个对象。咱们给它返回下啊,Cos对象,所以现在这个就完成了,然后完成之后呢,里面一个小问题啊,大家看啊,我刚才写的时候呢,我是啊想用多种方式就把这个写乱了啊,首先第一个啊,你看啊,我CTRL里边呢,最终反应是一个配置这个对象,然后我刚才这里边呢,你看我最重要反应什么,是不是一个map部集合,其实都可以,你要么返这个配置对象,要么返外集合都可以实现,就看你想怎么做了,那我给他就统一一下啊,我就这么来做吧。啊,所以有时候呢,我是想用各种方式,就说几种方式都用了,咱最终只能用一种方式,那我这么做啊,我让他呢,还是最终反应一个map集合了啊,用这个来进行实现。外部集合,然后咱把这个方法给它都去改一下,还是让他返回一个外部集合。
21:04
包括实现类中也让他返回一个麦步集合,然后最终把这个做一个对退,所以说以上我们就完成了第一个接口,根据课程分类查询课程的列表的方法,就是一个条件查询带分析方法,注意里边这些值,这些泛型不要写错,我最终把这四的方法都改成了返回map集合。所以现在啊,这第一个接口就完成了,完成之后呢,下面我们再来写第二个接口,第二个接口做什么?根据课程ID得到课程的详情信息,那咱们下面再来做个实现,目前把第一个根据课程分类ID得到课程的列表,这个方法已经完成了。
我来说两句