00:00
前面我们通过分析页面,我们将页面可能提交的整个查询参数我们封装成了一个search palm对象,那么要完成整个检索功能,那就应该是我们页面提交来我们的查询参数,那么最终呢,查询到一些结果再来交给页面,那我们把这个查询参数呢,我们已经做了封装,那么再来根据页面来分析一下,那查询以后呢,要给页面转回什么结果,首先这个结果我们来看,最大的结果呢,就是应该是我们查到的所有商品信息,那这个商品信息呢,由于我们是去ES中检索的,所以我们查到的也是S中商品的模型数据,所以我们最快的方式,我先来写一个我们返回的数据类型,有search palm,这是我们查询参数,我们再来整一个search瑞Bo,这是我们最终检索过来的结果,那这个结果呢,首先它应该包含我们查询到的所有商品信息,那么先来写一个list,那商品信息呢?
01:00
我们之前给ES里边保存了一个叫e s s ku,我们来看一下SK ku在ES中的这个model,这个是我们SQ在ES中保存的这个商品信息,有他的ID、标题、价格等等,那么就应该从ES中查到的是这些数据,我们先来返回这些数据,我们就叫products,这是我们查到的所有商品还是一样,我们先来an data标注一下,好,然后呢,这个就是我们查询到的所有商品信息,那除了这个商品信息外,我们再来看,我们既然能查到商品信息,那么还有我们带的这个封页信息,封页信息至少要包含我们当前是哪一页,以及我们总共有多少页,总共有多少条记录,我们可以把这几个来封装一下,好,Private,首先TE,我们这个当前页码配置number,好,这是当前页码。
02:00
还有我们private,我们浪类型的总记录数,Total这个呢,我们就叫总记录数,还有我们private in配类型的,我们这个总页码,我们聚焦total pages,好,这是我们的总页码,那这个是呢,我们这个当前页码,我们这一块呢,封装的就是我们的分页信息,诶以下呢是分页信息,是封页信息,那除了我们查到的商品信息和分页信息外,来看最麻烦的呢,在这儿我们以京东这个为例,如果我来搜索小米来看一下,我们来搜索小米,走我们搜索小米以后呢,我们查到所有跟小米有关的,那这一块呢,首先我们查到的所有小米涉及了哪些品牌,这相当于是我们的属性,这个品牌信息呢。
03:00
啊,也挺复杂的,首先有我们的品牌的名字,还有我们这个品牌的图片,肯定我们选中了哪个品牌,还有品牌的ID,还有我们这个小米涉及了哪些分类,而且这两个呢,注意这是加粗字体,我们这两个呢是公共的,我们以后搜什么东西,我们这两个呢,我们都让他进行公共显示,比如我们来搜手机,它涉及了哪些品牌,涉及了哪些分类,我们都需要在这儿来展示,所以我们先来在这儿来展示我们第一个我们所有涉及到的品牌信息,我们就将list,我们返回到整个品牌的VI数据,我们把这个数据呢,我们就直接写到我们自己的这个静态内部类里边,Static class class,我们首先呢,有一个品牌信息的brand VO返回的这个VO,那品牌呢,保证我们有这几个数据,首先应配我们品牌的ID,我们就来写一个brand ID这些信息呢。
04:00
我们给ES中保存商品数据的时候,其实都有,那么最好呢,参照他们的这个属性名,我们来一一封装,以后我们对考也就方便了,好品牌ID我们有品牌的名字,还有品牌的图片,包括呢,我们这个品牌ID,我们是浪类型的,行,我们就来写成浪类型的,这是我们的品牌,那么希望呢,在这一块就封装的是我们所有的品牌,我们查询到的结果,所涉及到的所有品牌啊,我们就叫brands,注意这一块是我们当前查到的结果,当前查询到的结果,所有涉及到的品牌,同样我们把这一块呢,给它加上get set方法来enter data来写上这什么,来分析这儿还有我们的品牌,还有什么呢?还有我们单独的这个分类数据,我们选中分类的ID,分类的名字,我们在这一块看的是名字,当然我们选中某一个。
05:00
类肯定是按照分类的ID我们来进行查询的,包括下边这一块呢,都是我们检索到的这些商品所涉及到的所有属性信息,特别这一块,比如我们来选中了一些东西,我们在这一块我用个多选,诶我选中了一些东西,我点一个确定,然后呢,下边展示的这些商品一定都是我们选中的这个属性以及值信息,还有我们剩下的这些属性,就是我们筛选以后,我们剩下的这些商品所能拥有的所有属性,以及我们可供选择的所有值,所以这一块呢,整个属性我们划分成一个整体,我们再来分析这个属性怎么办?首先呢,属性有属性名,还有它可能的所有值,这呢是一个完整的属性信息,然后呢,下边又有非常多这样的属性,所以我们现在来这样封装,那还是来写一个静态的内部类,我们在里边呢,除了有品牌外,还有我们的。
06:00
点VO,其中呢,包含at TD,这是我们当前属性的ID,比如我们选中了操作系统,这是一号属性,我选中了这两个值,所以说呢,每一个属性有它的属性ID,还有属性名字,名字呢就叫操作系统,还有它允许的所有值,所以我们就在这儿有属性的ID,还有我们at tr属性的名字,以及由于我们属性的值会有很多,所以我们来写一个list,我们就叫属性的value值,我们就叫at tr value好,而且呢,这些都是我们查询到的所有商性,他们所能涉及到的属性,不可能出现一个我们没有的属性值,比如我们分辨率上写了个1080P,大家点了进去,结果没有查到所有商品,这肯定就是有问题的,所以我们这一块能出现的属性都一定是我们符合检索。
07:00
条件,符合我们以前检索条件查出来的所有商品,他们重新可以涉及到的所有属性,那么把这些东西呢,我们也得封装出来,我们封装的这个响应里边,除了我们这个商品信息,封面信息,还有它的品牌,还有它所涉及到的所有属性,我们这个list,我们是一个at tr VO,这个属性呢,我们就将at t RS,这是我们当前查询到的结果,所涉及到的所有属性,所有属性,那属性有了,那品牌有了,我们之前还说我们固定两个,还要有个分类,比如说我们这两个呢,搜索任何东西,我们都给它通用返回,那这个分类呢,大家注意分类呢,它作为一个固定属性,属性名呢就叫分类,但是在分类里边呢,有非常多种分类的值。比如我们属于手机,我们选中它,那么需要把手机的ID提交过去,你们分类在这儿查询的时候,我们来可以看一下,那要拼到分类的时候,我们要拼一个CATALLO3ID是多少,所以呢们要提交ID,跟其他属性不同的是,我们如果提交其他属性,我们是这么来提交的,我们会写一个,比如我们来对照着,我们会写一个at t RS问号at t RS我们等于一个,比如我们操作系统是一号属性,它的值是安卓好,我们写了一个,并且呢,我们at t RS,我们继续假设呢,我们在分辨率它是五号属性,它的值呢,我们写了其他,以及我们的1080好P,我们其他属性呢,都是这样组装的,而唯一不同的是我们的这个分类,我们传的是cat log3id等于直接一个指定的ID值。我们其他属性都是提。
08:54
当它的这个检索的值,而我们这个分类是提交ID,所以呢,我们有多少种分类也应该是一个list,这个list呢,至少有分类的ID和分类的名字,那我们在这呢,就可以来再来封装一个我们这个分类的信息,我们就来写一个分类的VO,好这有品牌的VO at tr的VO,那再来封装一个分类的VO,那就叫cat log,那这个VI里边首先有我们这个分类的ID,我们每查到一个商品,我们都会有封装分类的ID,并且呢,我们还要展示它分类的名字,所以我们在这儿来封装一下分类的ID,以及我们分类的名字,我们把这个呢复制过来,而这个分类也有可能有多个,好,我们CRLY把这个删除,那在这来写一个list,它也有可能有非常多的分类,Cat log VO就叫cat logs。好还是一样,我们。
09:54
当前查询到的结果所涉及到的所有分类,那以上就是我们要返给页面的所有信息,好们在这儿来提取一下,我就说以上是要返给以上市返回给页面的所有信息,那在这呢,大致做了一个封装,所有的商品都在这,其他页面要用的信息都在这,那我们最终就希望我们的search controltr了,这个service调方法,那就应该给我们返回search response,而且我们的这个ES里边也有search response,我们自己也写了一个search response,我们就不叫这个search response了,为了防止冲突,我们shift f6,我们就叫search result,我们最终检索到的这个结果。
10:44
好,我们希望这个方法能返回这个结果,能把这个方法签名呢,我们就来重新改一下,来选择第四个。好,我们来看我们的这个检索方法,把以前的这个service里边的这个东西好,我们就替换了,我们最终返回我们的检索结果,里边包含我们页面的所有信息,里面包含那页面需要的所有信息,那么最终就希望我们controller呢,能简单的调用service,将我们页面传递过来的参数传递给service service去ES中给我们检索得到结果,把最终的结果呢在页面进行展示好,所以我们就希望有这么一个方法,根据我们传递来的页面的查询参数去ES中,它的作用就是去ES中检索我们这个商品,那最终呢,将检索到的结果,因为我们要放到页面展示,所以我在这儿来写一个model,我们将所有的数据呢,都放在这个model中,好,我们就来写一个model model点一个。
11:53
attribute.and attribute属性的名字呢,我们就将检索的结果result,那么最终检索到的结果呢,就是这个值,我们希望呢就有一个它,那完了我们在页面再来渲染这个值,那么下一刻就来考虑一下我们这个检索方法到底该怎么写。
我来说两句