00:00
前面我们编写了库存系统的几个功能,接下来我们再来编写一个商品系统po管理里边的商品规格功能,那我们在第一次添加商品的时候,给商品指定了一些规则,但然我们后来呢可能需要改变,所以我们在这儿可以选中规格,首先呢,它会查出这个商品所有的这些规格参数,然后要进行回显,所以我们需要编写第一个接口叫获取s po规格,它的请求路径呢是product at tr base,丽色for s po,我们带上商品的ID,最终返回每一个商品规格,而这个商品规格呢,我们都保存在了我们这个商品系统PMS里边,有一个叫product at t ry6,这都是我们商品的一些基本属性,也是它的规格保存了某一个商品它的哪些属性,属性名以及当时录的属性值,包括是不是快速展示属性。那这一块呢,我们都已经有了,我们接下来就来编写这个接口,来到这个商品的controller,我们看一下我们这是一个product at tr base,那么就来到商品的at tr ctrl了,那现在呢,要查询出我们这些接口,好,我们现在来编写我们这个接口,像我们这个接口的功能是要查出我们商品的这个规格属性,那我们的请求路径就是这样,来写一个接口来处理这个请求。
01:25
啊,这一块呢,先复制来,把放到签名先复制来,好,那么这个请求的路径我们也在这复制来,Base po ID,那这一块呢,主要有一个咱们这个po的ID,而且它是一个路径变量at,一个pass variable,我们这个路径变量我们把它复制过来,包括呢,我们这叫base at tr list for PU,好,然后呢,我们来return,啊,点一个OK,那先点put,现在来把data先放里边,我们希望呢,有一个方法能查出这个s po的所有。
02:03
规格参数,那么这个规格参数呢,由于是这张表叫product at t6,所以我们需要注入product at t r6的这个service product ATT ry6,我们把它的这个service呢注入过来,来owa,我希望它有一个方法来直接进行查询。我们把这个方法呢拿过来,这个service点,我们就叫best at tr list for PU,我们给一个po的ID,那最终返回什么呢?我们来写一个例子,最终返回到我们来看这个数据模型,这个idsp ID t ID这些其实就是我们这张表里边的数据,所以我们直接给它反一个这个实体类就行了,那就叫product at tr y6的这个实体类entities,好,然后呢,我们把这个放进去。创建出这个方法,并且呢,我们来添加上它的这个实现。
03:05
在这来添加上实现我们这个实线呢,直接利用他的这个。这有一个直接base member this.base member点一个,那我们想要查,那就调用list的方法,这是select list直接new一个corry wrapper,这个wrapper查询。那么这个查询条件呢,那就是我们来写上点一个E口,那们现在必须按照表里边的这个po ID等于我们指定的值,哎,这一块的po ID就等于我们指定的这个po ID。那最终呢,会给我们返回这个属性数据,好把这个数据呢,我们往上一反就行了,这是我们来获取这个的,那么这个接口呢,我们就写好了,我们接下来重启一下,我们进行一个测试,在product来重启。
04:01
我们在这儿呢,只要发送请求,我在这儿,只要我来点击规格,那他就会查出我们这个商品的规格,并进行回响,我重新让他先点一个查询。好,那现在来准备点击规格。我把这块呢都先清空看一下network,我来点击规格,好发送的这个查询11号商品的这些数据我们已经查到了,那在这一块呢也回显了,那我们华为呢,回显的是华为相关的信息,那如果我们是这个iPhone,我们来点击规格,那这一块呢,就是iph,我们当时录入的这些信息,那这些信息都录完,我们做了一个修改以后,当我来点击确认修改,我们点击确定,他又会发送请求来修改我们这些商品规格,他发的请求呢是product at tr update,带上我们这个商品ID,那参照接口文档,那这一块呢,就有个修改商品规格的,好,我们把这个复制过来,我们顺便来把这个功能也编写上,在这儿更新,以前呢有这么一个更新方法,那这个更新呢,我们现在要带上s po的ID来批量更新它的这些商品属性,好,那就来写上这个方法,我把这块呢也复制过来。
05:16
我们就叫update PU tr。那我们这个请求路径request mapping,我们直接给它加上叫post mapping发的是post请求,然后要带上poidd,这是一个路径变量。好,那么在这呢,先来获取我们的路径变量pass variable,那路径变量的po ID代表我们要更新它。Long类型的PUID,然后接下来我们又会携带一些参数,这个参数呢是a TD tr name at tr y6以及quick克show。那这些参我们拿过来,最终要改到我们这些数据库里边啊,这参数呢,其实就是我们这个数据表对应的这些内容,At TD name,包括at t y6这些数据,那么就可以来直接把这些内容呢,我们可以收集成一个list,这个list呢,我们也叫product at tr value这个实体类,我们把这个nities放在这,而且呢,由于这是杰森数据传过来的,所以们用responsibility body,那把杰森转换成这个例思,那么就希望这个product at tr value service,那就有一个方法能叫update PU的at tr,那更新哪个呢?Poidd给它传过来,包括它要更新的所有这些enity实体类给他传过来,好,然后呢,我们来编写这个方法,创建出这个方法,那再来添加上它的这个实现。
06:47
那这个更新呢,由于我们可能存在这些问题,我们以前没录的,我们给他录上了,以前录了的我们有可能又给取消了,所以我们会新增或者取消一些数据,而且我们整个提交我们看一下,我们前端呢,会我们为我们提交这些批量我们录过来的数据,所以我们这个更新啊,其实要先把它之前的旧属性,我们也不用判断谁的值变了,还是谁的值没变,直接把poidd以前所有的这些属性,我可以给它全部删掉,删掉以后呢,把新提交的属性再来提交进来,这就行了,好,那么就可以来做这个操作,那我们要做的第一步就是删除这个PUID之前对应的所有属性,那这个删除呢,我们直接用它的这个base member,这个base member就是这个at tr value do,好点一个我们调用delete,因为我们这个delete呢,要按照条件,所以这有一个vaper,那这个vaper呢,我们直接。
07:47
有一个corry waper,条件是什么?我们传进去就行了,点一个eo,我们的删除条件是我们的这个poidd是我们指定的值就行了,好,我们的poidd就是我们指定的这个值,我们传过来的这个po ID,把这个拿过来,我们先做的第一步删,那删完了以后呢,我们接下来才是更新,那这个更新其实又是一个新的这个插入操作,插入这个at t tr name at t r y6,包括它的quick show字段以及sqidd字段,所以我们想要插入的这些数据,好,我们直接把这个批量数据呢给它搞过来。这有一个entities,我们可以先遍历stream.map,比如我们要将里边每一个东西要给它添上新的po ID,所以我们给这个item,我们映射上set po ID,把这个ID给它放上,然后最终呢,把这个item再一反。
08:47
会议收集return item。我们把它呢,进行一个collect to list,好收集到我们最终的数据以后,我们就来更新,他们直接调用批量更新方法,BI map,我们现在是批量插入,那我们就insert。
09:05
模型测呢,肯定有一个批量插入,我们找一下有没有bench。那这个do里边没bench,那我们这个service里边它本身就封装了be,我们来找一下,这有一个叫save bench,我们直接呢把这个collect往进一传,这就是我们的批量保存方法,当然整个东西也必须是一个事物,我们加上这个事物注解。那这个更新呢,我们就写完了,在写完了以后呢,我们最终给他返回return更新成功R点一个OK就行了。好,我们现在来重启我们这个商品服务,我们测试一下整个完整的逻辑,首先如果我们想要修改某一个商品的这个规格,我们在s pou管理里边点击它的规格就行了,把这一块呢都进行清空,我来重新点击这个查询。先先来查出所有的po,我们想要修改,先来点规格,它会查出他以前的规格,然后我们再来录入一些新的数据,比如机身颜色,我随便选一个黑色,当然这个应该是SKU。
10:10
根据它的这个颜色来走的,不是在SPU规格里边设置的,你先选上吧,然后呢,这有一个机身的材质工艺,来选一个陶瓷玻璃,好我们选上,包括咱们这个芯片,我们来比如来选一个970,好我们来点击确认修改,那说是否来继续,我点一个确定,那更新成功这块就会说属性更新成功来到s pou管理里边,比如我们来重新想要看它的属性,我来点击规格,那么以前录的这些数据,诶全部又都回显过来了,这就是没什么问题的。那至此呢,我们后台管理系统的一些我们常用功能,我们都写好了,后来我们需要用的其他接口,比如优惠营销里边的,等我们用到的时候再来写这些接口。
我来说两句