00:00
各位同学大家好,欢迎继续收看硅谷课堂项目视频课程,咱们继续来完成点播管理模块的相关功能,下面咱们来实现模块里边的课程统计功能,那这个功能要做什么事情?首先把需求给各位同学做个介绍,咱们看一下课件中这张图,这张图中呢就描述出来了,我们做的需求是怎么样的,那这里边给各位画一下,我在图上具体来说明一下这个功能咱们到底要做成什么样子。那大家看啊,我们在列表页面里边呢,这个位置有一个超链接,它叫做课程统计,也就是这个位置,咱们看一下啊,在我的列表页面中,这里是不是叫课程统计,那我们怎么实现,当我点击课程统计,就显示我当前这门课,它里边有多少人看了这门课程,这里边我们可以加个条件。大家看这条件,比如说我查询这表示我们里边这个叫开始时间,我写一下。
01:06
然后这个表示叫结束时间,那咱怎么查询,就查询2021年10月1号到2022年2月26号这区间范围中每天有多少人观看的这门课程,然后把这些观看的人数,咱们用一个图表方式做一个展现。那图表方式展现做成的就类似于课件中这个效果,咱们做的是一个折线图效果,那我在里边给各位同学画一下,咱们就是长这个样子。大家看啊。各位问各位,你说我现在画的这个叫什么?是不是叫一个坐标啊,坐标里边有它的X轴和Y轴,咱们一般来讲X轴显示的是什么内容是什么,是不是它里面的日期啊,就是假如说我现在啊,比如说我有三个日期,第一个日期比如说是这个2022年3月1号,我就简写了啊,就是零三杠零幺。
02:13
这是第一个日期,然后第二个日期,比如说是3月20号,第三个日期,比如说是4月5号,咱们有三个日期,这是X轴,Y轴里边是不是它的具体数量,比如说现在在Y轴里边,3月1号这一天我们有,比如有一个人观看3月20号,比如说有两人观看4月5号这一天,比如说有。更多人观看,比如咱们现在有这么一个效果,然后咱们把它用一个线连到一起去,所以咱一会儿就做成这个效果,这个图在咱图表中是不是叫一个折线图效果,所以咱一会儿要做成这个效果,这是我们一个需求说明,我再说一遍啊,在课程列表里面,我们点击每个课程后面有一个叫课程统计,查看当前这门课程在这个日期范围中每天有多少人观看,然后把观看人数用过图表方式做个展现,这是我们要实现的这么一个需求。
03:16
然后这个过程中,咱要查的话,在咱表里边有这么一个表。咱们看一下啊,就这个表叫video visit,这个表就是查看每天多少人观看,咱用它来做一个查询,所以咱就操作这个表,这个过程因为咱要涉及到统计过程,所以咱们一会儿也是通过编写circle语句进行实现,那么下面呢,在里边把这语句我们先写一下。然后怎么做,我们看一下啊,在我这里边,然后按照我刚才的需求里说到,在这过程中呢,我们有一个条件就查询当前课程,另外有个时间查询,这个区间范围,也就是大于等于开始时间,小于等于结束时间,根据它我们要做个查询,所以下面我先把这个circle语句给一个同学写一下,然后一会儿我们通过代码做一个进步实现。
04:11
然后语中提到了啊,就是统计每天有多少人观看,所以根据他的这个日期,咱是不是要做一个分组实现,比如说3月1号这一天很多人观看,然后把这些做个统计,3月2号很多人观看,把这些做个统计,而这里边咱们看一下啊,在表里边呢,有一个字段,这个字段叫draw time,这一字段什么意思,就表示我当前看就什么时间开始看这视频,Draw加入时间,所以咱就可以根据这个字段进行分组,根据他查询你的开始和结束时间。然后下面我把这语句给各位同学写一下,写这语句啊,首先我先来一个select,后面先来个星号,一会咱再完善,加上from,加上我们的表,我们目前的表叫这个。
05:03
Video就是里边的这个表。就是他啊,我把这个名字咱们。复制一下,这是咱们要查的这个表,然后下面我加上一个where条件,在where条件中,首先第一个条件我们要根据这个课程进行查询,课程里边咱们根据课程ID进行查询,加上一个cos ID等于咱们的一门课程,比如说一会儿咱就找一门课程,我就查这个18的这门课程。这是一个条件,然后这个之后我们继续加条件,咱们加上一个and and里边呢,根据这个时间做个差,就是大于等于开始时间,小于等于结束时间,那我写一下啊,用这字段叫draw time。大于等于开始时间,小于等于结束时间,咱可以写大于等于and小于等于,另外有这么一个关键字叫比T都可以,那我就这么做了啊,大于等一个时间,比如说啊,我就随便写个时间,就这个二零。
06:08
二一年。1月1号啊,咱为了有数据,我就写的时间长一点啊,然后咱们再加and这个。Draw time,它小于等于一个结束时间,我们写一个2022年这个12月12号,这是加的这么一个条件,然后加上之后,咱们下面做一个分组的一个处理,加上一个叫。可如何拜。根据这个叫。Draw time进行分组,这是写一个基本语句,另外咱要统计它的数量,在里写一下啊。首先draw time字段咱们先加上啊,这里加上我们的字段。这里,然后加上之后,我们再加它那个数量,加上一个count这么一个函数。然后函数里边我们可以加上一个星号,或者说一个掐值啊,咱就来一个星号了,然后给它起个别名,就是咱们叫这个啊,User count,就是用户的统计数量,包括这个也给它起个名,我们叫这个。
07:14
Draw in time。所以现在啊,大家看咱们把这个最基本的语句就完成了,完成之后咱们执行一下看效果啊,这个时间再加个引号,为了能测试啊,因为时间跟字符串需要用引号给它括起来。现在咱们执行,然后大家看效果是出来了,我这里边得到了我们相关的数据啊,就是最终把这个我们就得到了。啊,但是这得到之后啊,一个小问题啊,大家看这里边啊,你发现啊,我这个时间有问题。这两个都是12月1号,但是因为他们的小时分秒不一样,所以它变成两个数据,那我现在比如说我就想根据它的年月日,就是我现在比如说10月1号是不是两个数据,12月2号一个数据,12月3号一个数据,根据这个日期进行分组,咱就不加这个小时分秒了,所以咱们给他做个处理。
08:12
那怎么处理,我写一下啊。在咱们circle语句里边,或者说里边有一个函数,这个函数叫做date。大家看这单词啊,Date什么意思啊。是不是叫日期啊,就是日期指的是年月日,它就表示把你这个年月日小时分秒换成日期的格式,咱根据它进行一个分组啊,那把这个写一下啊,都换成这个date。转换成他的日期,这里边也变成他的日期。所以现在啊,这个语句完成完成之后咱把它执行下,大家看效果出来了,12月1号两人观看,二号三号分别都是一个人观看,所以现在这是我们完成的一个语句,这各位能给他准确做到啊,这个咱们就完成了关于我们的语句编写,然后语句写完之后,下面呢,咱们在代码中先编写这个课程统计的接口,然后在整合前端把功能我们最终实现,那下面咱们开始写接口,接口里边的,因为他要操作咱这个视频,或者说课程的这个统计表,或者课程的访问表,所以咱把这个表相关的controller service和map都创建出来,然后进行实现。
09:35
那我来操作一下啊。这个过程呢,咱们通过代码生成器生成,因为之前这个应该没有创建,那我找到啊,这是代码生成器。首先把这个表咱们给他改一下,改成video video,然后其他部分应该不需要变,也是咱们这个项目,包括这个库应该都是一样的,现在把这个执行,咱们把相关的代码先生成出来,然后再进一步实现。
10:05
等他出来。然后咱们看一下你们的特点。现在完成我们看一遍啊,这个service,包括map,包括它的这个control这一类都有,然后咱们同样把实体类换成咱们model中统一那个实体类,这个就去掉了啊,咱给他快速换一下,这之前都做过,我现在就快速实现一下。首先这里边给他换一下啊。Video把依赖我们引入。换成model中统一这个是一类,再来到它的实现类里边,把这个也给它换下。直接复制,最后来到map里边,把这个是一类,最终给它也是换一下,所以现在咱就把这个相关代码都生出来了,然后最后在这个video video的CTRL里边来编写咱们这个课程统计的最终代码,把这个做时间。
11:07
那首先啊,CTRL,我跟课件中的路径保持一致,方便咱们前端整合这个拿过来。咱们都这个名字,In,就这是跨域注解加上,加上之后在CTR里边把它的service咱们注入进来。Private。Service,然后在里边咱们就具体写这个代码,这个代码过程中呢,咱们需要调用service,包括调用map,最终得到我们需要的数据,那下面咱们开始写一下啊这个功能。首先在里边我先写下这个方法,就是做这个课程统计的接口,咱们写方法啊,方法中我就直接加上。
12:01
Get提交,然后给方法起个名字,咱就叫find count,在里边传入咱需要的参数,第一个参数刚才咱们看到啊,里边有课程ID,所以第一个参数我就加上一个叫cos ID。这个改一下啊,然后第二个参数有它的开始时间,包括第三个它的结束时间,咱们写一下开始时间,我就叫这个start。这个date结束时间我们叫and date。这是咱们加的三个参数,加上之后下面写方法,Public。造他。Find count,然后在find count里边把咱们三个参数给他获取到,咱们快速获取一下啊第一个。Pass valuable加上浪类型的Co ID。然后第二个第三个都是里边的时间,咱们获取一下啊,用pass我们加上一个类,第二个是开始时间,Start date,然后第三个是结束时间,我们给他也是快速加上就可以了啊,那咱给他直接加一下啊。
13:17
我把这个给它也是再拿过来。还有一个叫做and data。这个给它也是复制,所以现在把里面这个基本的结构咱就加过来了。然后加上之后呢,这里边啊,我们看啊报了一个小错误啊,这位是少写了一个逗号加上啊就这个小问题啊,都给能快速找到,所以现在方法结构完成,完成之后呢,咱下面来调用service中的方法来做这个操作,那我写个方法。Find count3个参数,第一个课程ID,第二个开始时间,第三个结束时间,最终咱们让他就返回这么一个map集合,因为咱们后面图标显示里面会有很多数据,如果咱们不确定,我就返一个map,这肯定更更准确。
14:08
然后里边加上啊加上。现在啊CTRL我们就完成,完成之后最后加个退result.ok串入这个map,现在啊CTRL部分我们就讲到这里,然后写完之后,下面咱们service里边建方法,调map map中编写SQL语句,最终进行实现。
我来说两句