00:00
那接下来我们就来逐一保存,首先第一个保存po的基本信息,这个基本信息呢,我们还是用pofo service,用它自己,我们就直接this,那它自己里边呢,我们希望有一个方法,就叫save base pofo。那po的基本信息呢,主要就是po英这张表,那肯定要对应我们要传入一个po英的实体内,有一个SP英nity。把这个实体类给它传进去,这是跟数据库进行一一对应的,那么将实体类传进去以后呢,让他帮我们进行保存,那还没有这个方法,我就来创建出这个方法,直接创建到接口上,然后呢,我们再在接口下边添加这个实现,好,那就在下边我们相当于保存了这个方法,这是po info base的方法,那这个方法呢,首先要传入这个inferendity,最终它肯定调用我们的这个map,我就可以使用this.base member拿到s po的do,那保存基本信息,直接一个insert就行了,把这个往进一传。
01:12
但是在insert之前,我们还要把这些数据拿过来,那这些数据呢,都是来源于po save VO里边有名字、ID、重量、发布状态等等等等,那我们就要对着这些属性要一一复制过来,那们就可以做的第一件事先来进行属性对拷,比如being us第copy properties,我们将VO里边的整个数据直接拷到inferendity里边。但是呢,我们要区别看info n DD里边哪些跟VO的字段不一样,那目前呢,像po的name描述分类的ID以及重量发布状态这些都是一样的,那么相当于就无需设置了,只有这两个,一个是创建时间,一个是更新时间,那我们把这两个时间呢,我们给它附上默认值INF fority.set一个创建时间,那就是当前的时间,还有我们这个更新时间,我们用INF forendity.set一个update time来new一个,这是我们更新时间,这时间我们整错位置了,它也是一个create can new一个。
02:23
那在这我们的基本信息就保存完了,那接下来呢,就是保存po的描述图片,那这个描述图片呢,是在这个VO里边,VO里边有一个get describe,这是一个list string,由于它的整个图片有非常多,所以给我们提交的是一个list数组,而最终呢,我们要保存到SP英DC这张表里边,那就是我们来看一下PMS在这张表里边,这张表里边呢,ID不是自增的,所以这个po ID我们得拿来它的整个描述图片,那就是这个存一个它就行了,所以我们需要有一个叫puo described的这个NTT这个实体类里边,它需要两个数据。
03:08
一个数据是我们describe n dt的po ID,这个po ID只有在上一步保存了,我们才能知道po ID是什么,所以我们调用了这个save方法,那po ID又会自动的封装到这个实体类里边,所以我们的po ID就在这,那就直接点一个get ID,那这就是自增保存了以后poidd就是这样,当然现在所有的ID我们都默认自增,我们现在不考虑分布式情况下的,我们逐渐自增策略,我们在后来讲的时候再说,好,那这个SQID我们就设置上了,然后我们还要设置一个叫set describe,那这个描述,描述呢,那就是整个这个list里边的所有数据,而这个数据呢,我们就让它拼接一下,用逗号分割里边每一个元素就行。我们可以用最快的一个办法叫string string这个类里边呢,有一个方法叫join join我们来给一个分隔符,那就是逗号,我们将这个数组里边,那么就是这个describe里边的所有数据用逗号接起来,最终的这个状语方法帮我们来返回一个string的字符串,那这个描述信息就好了,那么接下来又要保存描述信息,那么就希望有一个方法叫this.save puo describe这个信息,那这个信息呢,我们将我们整个实体类给这一放,还是一样创建出这个方法,当然先创建到接口位置,然后呢再来创建出这个实现。
04:39
这个方法呢,还是一样,调用po info describe这个do就行了,那么就来注入这个do,那就是po info describe这个do,那其实呢,我们应该直接用它的这个service poo describe这个service,那这个service呢,我们来调用它的这个方法,而不是调用我们本类的,好那么我们为这个service来创建这个方法操作什么就来调用哪个的service,好为这个service添加上实现,那保存呢,直接调用它map里边的。
05:15
Base map里边insert方法将我们这个数据已保存就行了,而且这个数据保存的时候ID也是指定的好,保存完了以后,我们这一步就操作结束了,那我们将我们生成的这个方法就不要包括去接口位置。我把这个方法呢,也都删掉,把生成的这个方法好删掉。打开这个实现,好,现在我们的第二步做好了,接下来是第三步保存SPU的图片集,那这个图片集呢,是要操作p Ms po images这张表,那就是这张表,这张表里边呢,主要说明po的ID以及图片的URL路径,包括它是否当前默认的图片,当然这个图片的名字大家也可以来截取一下就行了。好,我们现在来保存这里边的信息,那这里边呢,肯定要操作po图片的这个q image service,我们用image service and一个autowa,由于这个图片呢有很多,所以我们可能还是一个批量保存,我们从VO里边获取到s po的所有图片,在这有一个images,在这个图片里边呢,保存了我们的所有图片,而这个所有图片,每一张图片都要进咱们这个数据表里边的一行记录,所以我们就在这儿来进行保存,我们就调用s po图片的这个service,这个图片的service。
06:36
好,Image service,我们拿这个service。我们希望呢有一个叫save images,将他们来进行保存,当要保存这些所有图片之前,我们得知道是哪个商品的,所以我们还可以传入puu的ID,这puu的ID就是上一步info nity保存里边的ID。我们就可以获取一下in for entity,第二,Get ID,这是po的ID,那希望呢,有这么一个方法,Al为这个service创建出这个方法,好,我们在这进行保存,再来创建上它实现。首先在做所有的保存之前,我们得判断它们是否为空的,如果说images。
07:18
等等,那或者。我们的images里边的lengths size是等等零的,那说明这个集合是空的,这个集合是空的我们就不用处理了,否则我们才需要处理,否则呢,我们每一张图片都是一条记录,所以我用images点2FOR each我进行一个遍历,但这个遍历呢,最终我们是想要调用它的这个批量保存方法,有一个save bench能传入整个po image nd的这个集合,所以我们还是调用images的stream方法,然后呢,我们来给它map处理里边的每一个元素,Img,好,然后呢,它里边的这个数据,每一个图片,我们就会拿到它真正的这个图片的值,然后我们要封装成一个s PU image这个实体类,这个实体类里边呢,主要有两个。
08:17
一个是我们的这个,看一下实体类里边set default po ID,这po ID那就是我们传过来的是这个商品的,然后呢,SP image entity,点一个set图片的URL路径,那么这个路径呢,也保存到这。那剩下的这些字段我们就不维护了,我们直接return一个PU image n,这所有的NDT,我们来给它收集过来,点一个collect。我们To Beast,啊,转过来,好,我们最终收集成我们要用的数据来调用一下,批量保存this.save bench,我们将整个collect给这一传,那我们的图片就保存好了。
09:02
那这个图片保存好了以后呢,接下来就是我们第四步保存s po的规格参数,这个规格参数呢,还是来源于页面,在这一块全部放在base at ts里边,这里边表示了当前商品关联了哪个属性,包括属性关联的值是什么,而且如果有多个值的话,我们页面上也会给我们直接以逗号的形式拼接起来,我们可以看一下咱们提交的这个华为的时候,在这些基本属性里边,诶这基本属性我们现在目前没有多个值,如果有它也会拼接。那么来继续保存。那现在的这些所有的规格参数,我们先拿过来。这是我们VO里边的get base at t RS啊,这是我们所有的基本属性,然后呢,我们要把这些基本属性进行保存,最终会保存到我们的这个S。PU,就是这个product at t r y6,这张表里边主要要关联商品的ID,还有它是哪个属性ID,哪个属性值,包括是否快速展示的,那我们呢,在这也给他处理一下,我们来便秘这些属性,还是一样来整一个stream,点一个map,那每一个a d tr呢,我们都可以拿出它的这个值,这些值呢,我们最终收集成一个这张表对应的实体类product at t value6,所以我在这有一个product at tr value流的这个实体类,这个实体类我们希望关联上相关的值,那在这个实体类里边,首先我们set上一些东西,这个at t rad,那就是当前的at tr的ID,那我们来点一个get at TD,还有我们这个value nt.site at tr name,这个name呢,页面没提交,本来页面直接一提交,我们可以用页面的,但是它如果没提交,我们就需要再查一遍。
10:54
好,我们现在放NTT点,继续来set,这是at t r y6,就是我们选中的这个值,我们就可以从at tr里边获取到页面给我们提交的这个属性值,它是values,包括我们的value entity.set这有一个叫quick show,是否快速展示。
11:13
那是不是快速展示也是页面提交的,在这个at tr里边,它有一个叫受DEC,是否显示在描述上,如果是一,那就是快速展示了,那我们就放在这儿,还有我们的value entity里边还有一个最重要的puid。这po ID呢,就是我们这个inferity get ID。那这个实体我们就构造好了,我们直接把它return出来,Value n,然后呢,我们将它收集过来,Collect to list在这收集之前呢,在这可以来查一下属性的名字,这属性名的查询我们肯定要调用at tr service。把用这个at t RA来查一下就行了,那么就来找一下我的at t RA service,我们将它来注入进来,这个at tr service里边有一个查找方法,我们来找一下at tr service里边有一个GET8ID,包括这还能找到at tr info的详情,我就直接用这个8ID方法。
12:17
按照主键去来找这个at tr的信息,那找到这个信息以后呢,那么就在这来给它保存atr的名字。点一个get at tr name,那最终这个收集来的数据,我们就希望这个product at tr value的service给我们批量已保存,而这里边所有的数据都构造,构造好了直接保存就行。好们调用一下product at tr value service,你把它的接口拿来,At tr value service enter一个owa。我把这个注入过来,来到这们调用这个方法构造完了以后,我们点一个,我希望它有一个save product。
13:00
At tr的方法,我们将构造好的这个数据传给他,接下来他来帮我们保存,创建出这个接口,好,然后我们再来创建出这个实现,在这个实现里边那就简单了,那就直接调用它的批量保存方法,那当前service呢,直接有一个save bench方法啊,你就调用它的这个批量方法。把这个保存进来,那这个功能我们就写完了。那接下来就是保存squ的积分,那这些远程保存呢,我们都先留在这儿,我们先将这些基本保存都先写好,好现在是我们保存SKU的信息了,SKU这里边呢,又需要一大堆的处理来,大家就先休息一下,我们下节课继续。
我来说两句