00:00
下面呢,咱们继续完成课程统计接口,下面咱们开始编写service里边的代码,我在service里边首先把方法先进行创建,创建之后咱们来到service实现类里边,把方法最终做实现,而在里边我们要调map中的方法进行实现,那咱们来调用一下。我写一下调用map的方法,我们写上一个base map加上个方法叫count,里边三个参数,第一个课程ID,第二个开始时间,第三个接收时间,最终咱们要查的话,大家看啊看我刚才的语句查之后。返回到是不是有三条数据,所以咱就写上一个历史集合,然后里边加上一个VO类,这个VO类我已经提前创建好了,那咱们写一下啊,返回一个例子集合。然后这个list集合,我给它起个名字,这个名字我就叫这个list,就叫这个名字我在里边写下。
01:10
List,然后在里边呢,我加上一个型,这个型的名字叫video。Visit这个view。应该就是他啊。然后咱们看一下这个V类,里边会包含咱们需要的数据,大家看啊,里边有这个用户个数,包括加入时间,因为咱要显示就是你的时间,包括多少人进行观看,最终显示就两只,所以用它进行返回,这是咱们的map部分,然后最后咱后面再完成封装,放到map中,这个先放到这里,然后咱们后续进完善,我先加个图度啊,后续咱再完善,然后下面呢,咱们开始先写这个map中的方法,我在map中把这方法咱们先进行创建。
02:01
然后创建之后,下面呢,咱们开始写它那个叉L的配置文件,在配置文件中写它的最终的这个实现,大家找到这个配置文件里边写语句,然后写的时候呢,里面一个小问题各位应该知道啊,咱们买杯子阶段讲过,如果说啊,你map中有一个参数,那咱们取一个参数的话,那个名字是不是可以随便起。但是如果你有多个参数,这名字不能随便起,咱需要给他约定一个名字,在这里边有一个注解,它叫做pro,是买杯的一个注解,然后P里边你可以给这个参数起个名字,比如第一个参数我们就叫cosd,后面根据它能取到,然后后面两个我也都给它起个名字。咱们写一下啊,第二个叫date,第三个我们叫date,为了能取到这个值,这是map中的定义,然后写完之后,最后我们在map中编写它,最终这个circle语句,咱们用语句最终进行实现。
03:08
那我来写下啊,加上select标签,然后ID里边加上你的方法名字,咱们这个名字叫最后返回的结果类型,我们的类型叫visit。Count view,咱把这个包类路径复制过来,在里边写上它那个SQ语句,SQL语句,我从刚才咱那代码中把这段代码咱们给它复制过来,然后用它快速改成咱的效果就可以了,给他难不难啊,咱们看一下啊。首先各位看,然后后面加上第一个叫draw这个字段,咱们跟我们这里边保持一致,第二个user count一致,然后from加上这个表,这都对,后面加上where where,下面加上你的这个条件,有我们的课程ID,包括有它的其他值。
04:08
但是这个写的时候呢,咱需要做个处理。什么处理呢?各位注意啊,比如现在我们这个条件里边。你第一个啊,大家注意啊,我两个条件值是不是可能为空,也可能不为空了,所以咱们做一个非空的判断,这个过程咱们通过买杯子里边那个动态circle口进行实现,那咱们来写一下这个代码,之前应该也写过类似的,咱们快速实验一下,首先加上一个位标签表示语句拼接,然后在里边咱们做一个判断,加上一个if这个标签判断。然后if里边加上一个T的首先判断第一个就是里边这个重音time。这个啊,做个判断啊,其实真正判断应该不是是咱们里边的中的看一下啊,这个值,还有这个叫date判断这两值,那咱判断一下啊,先判断这个叫start date在里边写一下。
05:11
那我们来实现啊,Date,它不等于now。然后暗的它也不等于这个空字符串,那表示这个值不等于空,不等于空的话,咱们加上这个条件,我把这个就加过来,然后加完之后这位置加上咱们这个就是值,通过井号大括号来取到这个值叫start date,这是我们写的第一个啊,大于等于开始时间,然后它要小于等于接收时间,写法跟这个类似,咱把这复制它就改一下。结束时间叫and date。这个拿回来不等于那并且不等于空字符串,然后它要小于等于,这个叫and type。小于等于。
06:00
然后在这里边我们看一下啊,给它改一下,改成叫and date,但是我们这么写的话,因为这里边有个间括号,它需要做个转移,那怎么做,之前咱们应该也都讲过啊,很多种写法,第一个写法你可以把这段代码呢,放到我们一个叫c date去里边,里边支持特殊符号,然后第二个把小于号换成咱们转移的符号,那我直接转一下啊。加上N的符号LT,分号小于等于,大于等于应该叫GT啊,就大于是GT,大于等于是G,所以咱们把这个做转移就可以了。然后写完之后,最后我们再加上这个,就是cos这个条件,这个再给它加上啊,也是这个条件,Co STEM,这肯定是固定的,我们再加上一个叫and cos ID等于这个。井号取到这个值叫cosd,就是克乘ID。这些都加完之后,最后在where的下面加上一个葛珠BY进行分组,然后分组的基础之上呢,其实咱们可以做一个排序啊,也是加上这么一个东西给他排序一下。
07:10
加上这个。日期时间,给他做一个排序。也就是这么一个效果啊,所以这个咱给他也是加上。所以大家看啊,以上咱就把这个中这个circle语句就完成了,就是这个用MY里边的动态circle做一个实现,这各位能准确写出来,然后注意里边的这个注解的使用,所以现在啊,咱就把这个map完成了,完成之后呢,之前咱曾经讲过一点,特别说明一下啊,因为现在map默认它是不加载的,咱们在碰念中曾经加过这么一段话,就是这个S里面泡中加这句话让它加载。然后在配置文件中指定了你的插完了文件的位置,之前都做到了,现在这么做之后,这个插入文件会进行加载啊,这之前做的事情,这各位不要忘记,然后这个之后咱们最后把service最终完善出来,刚才你看啊,Service调过程我们已经写完了,最后把所里边咱完成这个最终的数据封装。
08:20
这个啊,咱们写一下,我们看怎么来做啊。首先我强调啊,因为咱们现在最终要返回map集合,所以我首先先创建一个map集合。因为咱们要返回它,那我写一下啊,加上map等于new上一个哈map。然后创建之后封装数据,那数据总封装说明啊,大家往下看我课件里边,因为我们最终要通过这个组件叫E叉S进行图标显示,ES呢最早是百度的一个项目,后来百度把它捐给了阿帕奇,由阿帕进行维护,里边能实现各种图表效果,那咱通过它的官网来看一下,这个图表的一个基本使用,就是这个官网。
09:10
直接看它的示例,在示例里边我们看第一个啊,就是这个图,因为咱用的就是这种图,折线图,咱们看他怎么做的啊。这里边有一段核心代码,大家来看啊,这个代码什么意思?首先看第一部分,这里这里什么意思呢?表示它的X轴,就是你的日期,这表是Y轴,是数量,当然大家看啊,X轴也好,Y轴也好,它的数据是不是都是一个数组形式,就是这是X轴的日期,这是Y轴的数量,它们都是数组,所以咱们怎么做,我们通过接口返回两个数组,一个代表日期,一个代表日期的数量,然后最终就能显示,因为用到E叉,E叉要求你要返回两个数组形式。而Jason的数组形式咱们提到过啊,对应Java里边的是不是就是例子集合呀,所以咱们怎么做,我写一下啊,我们在里边小这位置,我这位置就创建两个历史集合,一个代表咱们所有的日期,一个代表日期对应的那个数量。
10:20
咱们用它最终进行封装,那我在里边啊,给各位来写一下啊,首先我先。创建第一个集合,咱先创建出来啊,第一个集合这里边,因为它要保存是你的所有那个就是日期部分,咱就加上这么一个。缀。然后这个起个名字,我就叫date list,等于new上一个a list,这是第一个集合,然后咱们再写第二个集合list,这里边要放数量,数量呢我加一个叫inle。数量起个名字,我叫这个count list等于new上一个,然后咱们项里边放我们的数据,因为目前数据都在这个里边去,所以咱通过它把数据取道当经封装。
11:09
然后写一下啊,封装数据怎么封装,强调其实做法很简单,咱就把这查出的集合便利得到所有日期放到这个机构中去,得到日期的数量放到这里边去就可以了,这个过程呢,咱们可以用一种很简单的方式,比如这个stream流里面的方式,再次流里面一个方法叫map,然后通过它进行实现,首先我们写一下啊。加上这个VO里边,把它里边那个就是日期先得到,就是这个叫重音time。然后得到之后,最后我们再调一个方法叫collect,里边加上一个工具方法。我先写完,然后都会做解释啊,叫collect里边的to list给它最终转成一个。历次集合,然后历次集合咱给他直接。
12:00
处理一下啊,就把这直接拿过来。啊,就是在这个位置。我先复制啊。到这里,然后咱们看这句话的一个特点啊,我们来看一下啊,这句话一个基本写法。啊,咱们看啊,这里报了一个错误,这错误呢,应该是类型不一样,咱们看一下啊,这个方案里面是date,那我的泛型呢,我就改成date,或者说你把十几类的view类啊改成string也可以,因为这里边应该咱直接显示用就可以了。啊,那我就这么改一下啊,我把这个值呢,直接就改成死了。就是字符串类型改成它啊,然后这里边还是改成这个缀,这个代表我们封装的第一个数据,就是所有的日期。这个啊,我把注释拿过来,然后第二个咱用同样的方式得到里面那个所有那个数量,这是用水流的写法,你看啊,取到每个对象中的日期,然后给它转成历次集合放到这里面去,然后用同样的方式把它日期对应的数量取到,咱们快速写下啊,跟上面写法基本是类似的。
13:07
我们做个实践。我把这个拿过来,咱们看video里边是,然后在里边用video。List点上。然后点上一个map里,用这位置那个user count得到它里面的一个数量。然后我们在。点上里面那个叫的方法。啊的方法。用它的工具类to list最终进行转换,所以现在啊,咱们把这个就完成了,我把这行去掉啊,比如说以上得到了我们需要的两个数据,一个是我们这个课程里边所有的日期,另外就是日期里边就用这个数量,最终把这个封装到咱的map中就可以了。
14:03
就是放到map集合中去,那咱们给他最终放下啊。或者说我们看一下我的课件里边,其实就是这个代码,给它直接放进去就可以了。咱们拿过来啊,我这里写到,呃,一个叫X,就是X轴,X轴放的应该是你的日期date list y轴放的是你的数量,叫count list,最终别忘记把map做个旅退,所以咱们通过这个过程,就把这个课程统计的接口部分咱们就最终完成了,这各位能给他准确写出来。这个咱们就做到这里,然后这个做到这里之后,下面呢,咱把这个接口先用swag做个测试,如果测试没有问题,咱们把前端整合,再看一下最终效果,那咱们做测试啊,目前这个接口已经完成了。做一个课程统计功能,咱们启动swa测试一下啊。
15:04
等待先启动。现在啊,已经启动,我在里边访问一下。Local house道。8301加上swa-ui.html回车,在里边找到咱们刚才的接口,就这个video video传入我们的参数,那我传一下啊,第一个课程咱就传这个18的这门课程,你刚才咱们语句中有数据,第二个开始时间,我写这个时间。然后第三个结束时间,咱们也写个时间,比如说2022年。这个。12月1号现在数据参数传进去了,最终执行咱们看效果啊,大家看啊,最终得到效果啊,但是效果中我们发现啊,这里边没有数据,那我们看一下啊,它是哪一步我们写错了,咱们快速调试一下啊,因为这个参数这么传应该有数据,可能是某一步我们写的不对,那咱们快速排查一下啊,是哪里写的不对。
16:10
啊,咱们啊,先看这个条件的参数啊,大家看啊,不说各位同学是否能看到问题,这问题很明确,你看我写的参数啊,是不是写反了,开始时间应该是2021,结束是2022,我这么写肯定什么也查不到,因为时间是不对的啊,这时间写错了,拿来给他改一下啊,开始是你看啊,Start date,咱们改成2021年1月1号,结束改成202年12月1号,这参数别传错啊,然后我们再执行,大家看效果是不是出来了,这是。X轴的日期数据,这是Y轴的数量,所以以上就是咱们完成的课程统计的接口,这个咱们就做到了,然后里边呢,用到了搜索语编写,又用到了此人流的用法,通过此什么流把集合中到某个数据取到,最终放装到list中去,这个咱们在项目中也用到了。
我来说两句