00:00
我们继续来编写商品上架功能,那按照前面的要求,我们先来查询出我们当前SKU可以被用来检索的规格属性,而SQ的这些属性呢们都存在了我们这个PMS,我们的product at tr y6表里边,它里边呢表示了当前SPU对应的这些规格属性。SKU的规格都是继承于SPU的,所以我们需要查出当前SPU的这些规格属性。但是呢,我们还得查出。这些规格里边能被检索的这些规格,那每一个属性呢,我们在这之前都保存了它的这个检索类型,是否可以被用来进行检索。我们at TL y6的这个service,我们先来查出当前po对应的所有属性。那么就来先注入at try6的这个service,我们来找一下,我们这有一个product at t ry6service,好,我们把它拿到,我们在这呢,先来点一个。
01:05
我们之前写过一个方法叫base at tr list for PU,我们能获取到当前SPU对应的我们所有at tr信息,好,我们把它返回过来,我们就叫base at t RS,那这一块呢,查到的都是我们属性的ID,属性的名,以及对应的属性值,但是我们还要从它里边来挑出所有是检索属性的这些信息啊。那怎么调呢?我们先把它们里边的这些所有数据点map,我们把属性的ID呢,都先统一返回过来,我们叫at tr,把属性的ID我们直接return出去,At tr点。Get at TD,我们把它们呢收集成一个集合,我们写一个to list,这样我们就可以收集到所有属性的ID,我们叫a tr ids,这样我们就知道我们检索到的这些所有商品里边的这些属性的。
02:07
ID都有哪些,然后呢,再根据这些ID去我们的at tr表里边挑出他们的这个ID,在我们指定的集合里边,并且search type检索类型是一,我们的这个一代表的就是它是一个检索属性,当然这些零一呢,本来应该是一个枚举值。我们可以在这直接来写上,大家也可以建上那个枚举类,我们现在呢,就需要有一个at tr service点,我们假设有一个方法就叫select search。At t RS,那我们把所有的我们拿到的at tr的ID集合拿过来,让他们呢,最终给我们过滤出一个都是用来检索属性的,我们这个at t的集合,我们就叫search at t rads。我们返回呢,还是一个了,那要到它呢,那就是从这个集合里边,我们再从这个里边过滤出属于这个集合里边的内容,那我们就假设有这么一个方法,我们就叫select at t ids,我们先来创建出这个方法,那这个方法的作用呢,就是在指定的,在指定的。
03:20
所有属性集合里边挑出,挑出我们的。检索属性。我们来创建它的实现。奥塔英特尔。那这个实现呢,我们需要写的circle语句,那就是这样的,我们相当于要在这个集合里边挑,那就应该是select she from,我们这张表where,我们的at trid是我们刚才指定的这个集合,应我们刚才的这个集合里边,并且呢,我们的这个检索类型search type等于一代表呢,它是被用来做检索的,但我们只要ID,所以我们只返回at TD,我们把这个呢,我们拿过来,我们要做这个操作好。
04:12
那这个操作呢,那我们就直接来写一个自定义的方法,我们调用它自己的map base map。这个member呢,就是at tr do,他帮我们来找这个at tr的,我们就拿到这个base member,假设呢,它里边也有我们的这个方法,Select search at TDS,然后呢,我们给它传入at ts的集合,最终呢,再来返回我们的这个list集合。我们来创建出这个方法的实现,好,我们来创建出来这个呢,我们现在是在这个接口里边写的方法,当然这个方法呢,我们没有映射,所以我们接下来要做的第一个事情,我们先可以给它生成一个,以后我们要用这个集合,它的代名词就是at TDS,然后呢,我们再为它生成statement。
05:03
那我们直接来到我们的at t do,我们生成了这个statement,而且返回值类型我们是一个long类型的数组,所以呢,我们这一块类型只写数组里边。元素的类型,然后我们接下来把我们的SQL语句我来复制过来,Ctrl a ctrl c,好我们复制到这,那集合里边的数据呢,那都是一个一个用逗号分割的,那这一块呢,我们就需要进行一个遍历操作,那么这个遍历呢,我们使用myab的for each标签,我们来进行遍历,那么要遍历的集合,那就是我们传过来的at TDS好点过来。我们是它集合里边的每一个元素,我们就用ID来表示,包括呢,每次电力元素之间的分隔符,那就是逗号,我们把这个呢,我们就来写上,每遍历一个元素呢,我们就来取出它井号,大括号,ID,那就取出我们当前正在遍历的值,而且呢自动的用逗号拼装,而且我们便历呢,硬是在我们的这个小括号里边,我们前面一个括号,后边一个括号,所以我们在这来继续来指定open。
06:13
我们便利开始有一个小括号,然后呢,便历结束close,关闭符号呢,又有一个小括号,那么这个方法呢,就写好了,我们来到我们的duo,好,我们来到引用他的人。CTRL按住,我们来点到service里边,那么掉了这个方法就可以找出我们指定的这些ID,好,我们CTRL按住再来点过来,那现在呢,我们这块就找到了这些ID,那要从这个集合里边过滤出只属于这个集合的内容,那么就可以来继续来进行一个遍历,点一个stream.map我们来进行映射,我们把每一个at tr拿过来啊,然后呢,我们最终返回的肯定还是这个at tr,所以这个映射倒没必要,但是我们现在要做的是过滤be,我们来写上我们的表达式,好。
07:04
首先我们这个item,我们拿到当前正在便利的元素,我们拿到它的ID,它的ID如果能在这个集合里边,那就最好不过了。当然这个集合为了好判断,期间把它转换为set,我们判断这个set里边有没有包含这个值,那就简单了。那这个转换呢,也非常简单,比如我们来写一个set集合,这个集合里边呢,都是我们这些ID的数组,我们就叫ID set,我们就直接给它等于new一个哈希set,那在new哈希set的时候呢,我们直接传入我们这个list,将这个list呢转换成我们这个set,然后我们再来判断。如果说我们这个ID set里边点contents包含我们当前这个值item,点一个get at t,那相当于就返回处,返回处了我们就用,非处了我们就不用,所以我们最终返回它的这个判断,那如果包含了就是我们要用的元素,把这个元素呢,Collect变成一个list。
08:11
那么最终把这些数据我们可以来保存过来,我们在这呢,需要用到我们的这些商品的at tr信息啊,我们每一个ES models model.set我们的at tr,这个at tr呢,我们需要转换过来,然后拿到过滤掉的这些数据以后呢,我们可以再把它们进行一个转换啊,把这一块呢删掉,我们先过滤,然后呢,再将过滤好的结果我们再来映射。还是这个元素,我现在就拿到了属于我们检索属性的这些元素,但我们现在要把这些元素要封装成我们这些at t RS的集合,那么就来创建一个我们这个。List类型的我们叫at ts,我们是sqs model里边的我们就叫at ts等于你有一个list。
09:06
我们相当于要收集这些数据。但这数据呢,我们来直接我们先来拗一个我们ES model里边的JATTRS,好我们创建一个他们这个对象呢,我们要封装来自于我们item里边的值,Item呢是从数据库里边查的,我们进行属性对拷。因为我们这个base at t RS他们里边的这个里边已经包含了at TD t r name和at tr y6跟我们的这个at t RS ctrl n,我们来检索一下at t RS,我们这个里边的这些属性名,At trid tr name at tr value那都是一样的,那么就直接进行对抗。然后把这一块呢,我们来关掉,我们来继续来进行对考,我们就写一个being UUS第二。Copy properties。
10:01
我们将item里边的所有值拷贝到我们的at t RS这个里边,那最终呢,将我们这个at t RS再来返回我们return我们的这个at t rs1把它们呢,收集成一个list才是我们要用的。那把这一块的这个我们就可以删掉了,好,那它呢,我们来创建出来al in,我们就叫at ts list,好把这个at ts list我们设置给每一个SKU里边,那我们在这儿的设置设置检索属性,我们就设置好了,每一个检索属性的ID名字和值我们在这都有,包括它的这个热度评分,那么现在为了简单起见,我们就可以直接。给他的这个热度评分,我们先来给一个零就行了,但这个热度评分应该是一个后台可控的比较复杂的操作啊,我们就先写一个零。那我们把这一块的信息查询到,SQ可以用来被检索的这些属性我们拿到了,那接下来最重要的就是我们发送远程调用检索我们系统里边是否还有库存,那么下一节课呢,我们继续来编写这个库存逻辑。
我来说两句