00:01
好,呃,那我们的这个数据接口需求啊,这个日活实时监控就把它做完了啊,大家这个从整个过程中的话呢,应该也就能感受到,呃,怎么去写一个数据接口。对吧,好行,那我们再来写一个啊呃,第四章我们来写一个灵活查询数据接口开发。啊,先给大家去说效果吧,啊,现在我们是可以什么直接从这个角度去说效果的啊,来在我们这个自己开发好的这个界面中啊,这个管理平台里面,我们有一个交易分析,你点过来。点过来以后我们要做什么效果啊,大家看一下。哎哟,他这个正好把那个挡上了,正好给呃。这个这个他不会给我去掉吗?这个讨厌了啊来。正好给我挡上了,好吧,看一下吧,啊,就什么什么效果啊,我们现在做的这个效果。呃,诶好了没了是吧,来看一下啊。他要什么停留一定时间啊,我们现在想去做这个效果。
01:03
啊,我们要什么叫这个灵活查询呢?啊,就是我支持你这个日期的话呢,我们刚刚做过一次了,应该简单啊,就是我支持你搜索一个关键词。比方说啊,你你你现在做什么,你你做的是什么交易分析是不是,那你交易分析的话呢,你要分析什么东西。对吧,你要分析什么东西,我们分析的就是你的某一件商品,对吧,它的一个什么交易分析,比如说我搜索一个什么小米手机,对吧,那我就要知道你小米手机在这一天中。你的销售的一个情况,比如说诶你按照什么,按照这个性别,帮我去做一个什么统计,比如说诶男性买了多少,这个女性买了多少。对吧,按照这个年龄分布帮我做一个统计,比如说这个年龄段的买了多少,这个年龄段的贡献了多少钱,这个年龄段的贡献了多少钱。对吧,这是我让你去做的好,当然的话呢,我们还有一个什么是这个明细数据啊,在这个下面,就是我希望你把这个明细数据给我调出来,就是我的每一个交易明细给我调出来,给我写到这。
02:03
对吧,当然我们收的是小米手机,那如果我搜搜出一个什么,搜索一个华为手机,那你就要什么呀,动态的给我把华为手机在这一天中。我们性别是多少,然后呢,这个呃,按照性别的统计,按照年龄的统计,然后下面是我的诶详情。对吧,这就是一个灵活查询接口,就说白了,我是支持用户呢,支持这个使用的这个人呢,去灵活的传什么传条件的啊,传条件传这个查询条件的好,当然现在我只给了一个条件啊,你将来你可以扩展,比如说我给各种条件对吧,比如说商品的关键词,然后呢,这个什么可以什么按照什么,按照这个商品的什么类别去查,对吧,类别去查或者什么等等一些啊,我支持你们传各种各样的条件。只要你传了条件了,那我在后台去获取到条件,然后给你去查就可以了。明白吧,来,这是我们接下来要去做的啊,这个的话呢,比我们呃,刚才做的实时统计的会稍微麻烦一点啊,因为毕竟我们是传了多个条件的,而且呢,我们做的这个功能还比较多啊,你看一个是性别的,一个是年龄段的,对吧,还有什么查明信。
03:06
能看到吧啊,所以这个就比较多了啊OK,呃,那我们整体来看的话,大家注意哈,我们把这个F12给它打开啊,控制台打开,然后打开以后的话呢,比如说啊,我就输入这个日期,我输一个华为手机,我一点查询。大家看啊,他其实总共现在有四有三个404,那就说明什么,说明它总共发送了三个请求,这三个请求的话呢,现在你都没有做处理,所以他都是一个404然后的吧,那我们看一下啊,这三个请求分别是什么呢?这是第一个请求。我把它复制出来,这个复制出来看不到了是吧?呃。行吧,大家看一下吧,啊,这三个请求中啊,有两个是一样的啊,也不叫一样吧,有有两个发生的请求是一样的,你看都是什么呀,叫by it。对吧,就是查询就是按照什么,按照你的这个类别,就是按照你的什么类别,然后做一个什么统计分析啊,然后传上你的什么,你看这传的是age,这传的是真的,那这一看就什么呀。
04:04
一个是age,一个是真的,那一看就是age的,不就是这个吗?真着的不就这个啊,不对,A的不就这个吗?对吧,真着的不就这个吗?说明什么?说明他们两个其实做的效果差不多都是什么?一个是按照年龄,一个是一个是按照年龄,一个是按照什么性别去做一个什么交易分析的一个统计,那对于我们这个DSL来写的话呢,不就是一个分组的一个字段不一样吗?对吧,说他们两个求的这个方式是一样的,只不过是你这个分组的字段不一样,那我就可以把它写成同一个请求,对吧,只不过你传的参数不一样而已。好吧,然后最后一个是这个details by item,那这就是什么,按照你的这个条件呢,去查一个详情,那详情的话就是我们的下面的这个这个地方。啊,说明我们整个这个效果中,我们需要发送什么,发送三个请求对吧,但其实有两个请求呢,是。一样的,就是你的条件不一样而已。明白我的意思吧,好来,那你把这个明白以后呢,我们也可以什么从这个我们的接口文档中去看一下啊。
05:03
看这个位置。呃,我们有这个统计性别啊,统计图有一个性别的统计有一个。这个年龄段的统计,实际上他们两个啊,你看一下,实际上他们两个提交的请求是一样的。好,你看一下啊。都是一样的吧,都是一样的吧,唯独这个不一样就是你的查的类型不一样,你可以按照你的年龄去做统计,可以按照你的什么呀性别去做统计。能看到吧,然后最后返回的结果啊,其实也差不多,你看了哈。好,你看这个结果是不是也差不多啊,这个结果。你看都是一个什么摘的一个什么数组,对吧,这里面你看,比如说如果你按照性别统计,那就是男的多少个,女的多少个,对吧,如果你按照年龄段,就是多少岁以下的多少,多少岁以下多少,多少岁以下多少。整体的结构是不是都是一样子的呀?对吧,那么既然你这个都是一样子的,那我就完全可以把它们写成一个方法,写成一个方法,我只要判断你是年龄还是性别,不就完事了吗?
06:06
对吧,我按照你的这个传的参数,然后呢,动态的去求你对应的东西就可以。好吧,这是去写的一个统计图啊,那么还有一个是明细列表啊,这个明细列表的话呢,我们用的是这个请求,这个请求就不一样了啊,它是detail by it要传你的日期,传你的这个,呃,关键字还有什么做分页。对吧,我们这里面是有分页的啊同学们。对吧,它是有分页的啊,还要去做分页啊,OK行,那这就是我们最后要查的,然后最后给你返回的结果明细嘛,明细就是整个的一个什么摘啊,这个等我们写的时候再来去解析它。OK吧,行,那你把这个如果能够分析明白的话呢,接下来你就可以回到你的代码中开始着手去写这个东西了啊,我们来过来还是来到我们的这个controller中啊。好,来到我们的这个CTRL里面,呃,那这里面我们将来需要处理两个请求啊,处理两个请求,一个是啊,不能往这行小镇。
07:05
好解释一下啊,这个是我们刚刚写的啊,这是那个日活统计对吧,日活这个分析啊,日活分析。好,那我们再来写两个方法啊,一个是就是统计啊,就是这个交易交易交易分析啊,交易分析对吧,比如说我们这个,呃,按照类别统计,按照类别统计,比如说这个类别有什么呀,就是我们刚刚说到的你的年龄,或者说你的什么性别。对吧,性别啊。是不是啊,类别获得性别啊,年龄获得性别好,那么你发送的这个请求是什么样子的?请求是这样子的啊,我随便复制一个吧。对吧,你加他发了请求,要不就是他。要不就是他对不对,好,那我知道你这个效果,这个效果以后,那我就可以写方法了啊来最后我们给他。返回结果,那你返回的结果的话,我们看一下啊,它是这种结果,这种结果的话,我们分析一下它应该是什么格式的啊。
08:05
这种结果的话,你看一下啊,这个很明显是一个中括号,这是一个数组对不对啊,数组的话,那我可以什么通过数组或者什么通过集合来去描述,然后这里面的话,你看就是一个什么name value name value name value。对吧,这很明显这是一个map,这也是个map,这也是个map。对吧,或者说呢。既然你频繁的会用到这个格式,那我可以考虑什么,给它封装一个对象,对吧,通过一个对象的去表达它,你比如说啊,我就可以封装一个对象,怎么封装的,看了啊,我在我的病里面,我写上一个这么个玩意儿。又上一个什么呀,又上一个,呃,又上一个这个Java类啊。好,我就我就叫什么,就叫内VALUE6对吧,我的这个类就叫内VALUE6,诶错了啊。改一下名字啊。呃。Name。
09:03
对吧。叫name value啊,刚刚写错了啊,你看这样就都改了啊,行,这里面我就两个字段啊,一个是那我的这个name肯定都是一个字符串哈,好,但是我的这个value吧,就不一定它是什么东西了,就现在你来看它是一个数字,那将来很有可能还是个别的对不对,有可能是个别的吧,所以说这个的话,我就怎么定义成一个object啊,就叫value对吧,这样的话我更灵活一点,然后明白吧,好,那这个有了以后呢,我们就什么使用我们的long book,然后呢,呃,加东西啊,比如说这个你的无偿构造器,对吧,你所有的这个么构造器,然后呢,你的get和set,那如果说你又要加get又要加的话,我们可以直接写个data。对吧,直接写个data就可以了啊,这就是你的该和三都加上了。好吧,那我们加这么几个就够了啊,行,那这个写好以后你看一下啊,就将来我把你的这个呢,每一个呢,都给你什么封装成一个name value,然后你整体呢,是一个数组或者什么集合,那我就写一个什么集合吧,这里面放的是你的name和value,然后明白吧,我就写个集合啊就行了。
10:05
好,这是我们的叫做就叫state by item,就是查询这个名字,查你的这个统计啊,好,然后呢,这里面我们写一个get mapping对吧,Get mapping写他还写它。还写它,然后后面的话就是你的参数了啊,我们有一个item name有一个什么呀,叫这个data对吧,有一个什么呀,这个叫什么,这个叫做T是不是,你看这是你的name,这是你的data,这是一个T啊T就是你的类型对吧?来我们挨个什么通过这个。Request去指定一下啊。指定一下,好,这里面写的是你的item name。对吧,这里面写的是你的data。好,这里面写的是你的就是一个T吧,对吧,你看它的这个参数里面传的就是一个T,好,那我把这个拿到以后,大家注意啊,你有了这个以后,接下来不就是把它交给我的这个业务层去做这个处理了嘛,对吧,那假如说啊,我们的业务层来我们的叫publisher service,好它里面有个方法啊,这个是,呃,这个是叫什么呀,这个是统计,对吧,那就什么还是this do吧,好吧,Do把这个加上就完事了啊。
11:25
好,那我就什么挨个往过传呗,比如说把你的什么item name传过去,把你的这个什么data传过去,然后把你的什么这个T传过去,好,那我将来肯定要求你给我返回的结果,什么返回,返回这么个结果呗,对吧,这是我要求你给我返回的结果啊,这是我的result。好,然后呢,我就什么把这个。称一下诶称一下啊对吧。这边搞定了吗?是不是对于我的这个请求端来讲啊,我就是把你该拿东西拿到,然后呢,直接我给你往后传,然后你在后面给我处理去吧,对吧,最后呢,你把这个我想要的结果给我返还回来。
12:00
好吧,来,那我们就把这个调过来啊,这个方法给它创建出来。呃,创建到我的这个service中,然后呢,把它都定义好,定义好以后呢,接下来我们回到我们的实像类中啊,Service的这个实像类。这个对吧,好,它里面呢,就需要我们去实现一个抽象的方法了啊,来实现出来。好,呃,这个是我们还是写个注释啊,同学们,这时候这个日活的这个业务处理啊,日活统计的这个日活分析的这个业务处理啊,好,那么这个的话就是我们的,嗯。叫什么叫这个交易分析的啊,交易分析的这个业务处理啊OK。啊,这个都不要了,行吧,好,那这个时候你看一下啊,它里面你要做什么处理啊,那这里面肯定会有这个业务处理的啊,肯定会有一些这个业务处理对不对?好,那你处理完成以后,你的业务处理了以后呢,你不得去调数据吗?对吧?所以说这里面我还会什么直接什么通过你的publish map点什么呀,我们要调数据啊search。
13:07
这是什么,你的这个这个呃。设置什么设置就是带什么。对吧,然后呢,BY这个item啊,我就这么去写吧,这个方法的名字哦,我觉得你想怎么定义怎么定义吧,啊这无所谓。OK吧啊,这无所谓啊,然后呢,你就什么挨个往后传呗,比如说你的item name对吧,你的这个data啊,你的什么这个T给他往后传好,那这个最后的话给我返回来,肯定还是这么个结果啊,我还是要这么个结果。对吧,这是我的这个。呃,这个叫什么呀,叫呃search的这个结果吧,好吧,行,那我就把这个结果给他什么返回回去,这不就搞定了吗。对吧。啊,当然这个有什么业务处理,我们这个到时候写的时候再来去分析它哈,行,那最后呢,再把这个方法给它创建出来,创建到什么,创建到我的这个map里面,那我再来到我这个map的实现类里面,啊map实现类。
14:07
好在这打开打开以后呢呢,它这个方法也要实现一下啊,把它实现出来。好实现出来啊,行,这个实现出来以后,呃,我这个看看啊。折起来啊,那我把这个,呃,我的方法是在哪。这个是吧,那我把它拿到上面吧。这个下面都是写过的啊,我就什么直接拿到这个上面来写啊,好放到这儿。对吧,这不就可以了吗?那这里面不就是你正常去查数据了吗?你该查什么查什么呗,从你的ES中查数据就完事了呗。对吧,好行,那这个我们就先不给这个假数据了啊,因为这个假数据呃,这给了没啥意思吧。嗯。先不给假数据了,好吧,就是现在我们呃,大家已经应该已经知道这个大概的一个开发流程啊,就是你需要先把它这个整个的流程给它调通了啊,调通以后的话,你再去写这个数据的真正的什么,这个数据的一个什么查询啊,那这我就不再测了哈,行,那我们这个呃,到时候什么直接上来以后怎么去写这个数据查询就完事了。
15:11
OK吧,那这个整个流程应该是已经把它这个调通了,好行,那我就先停一下吧。
我来说两句