10.发布商品—保存spu和sku的基本信息

1)发布商品时,包括了“基本信息”、“规格参数”、“销售属性”、“sku信息”的保存

最后的前端出现的笛卡尔积结果如下,要把这些信息保存到后台数据库中,就要建立相应的实体类

因为json文件较冗杂,这里使用json自动创建java实体类工具进行创建(网上一搜就有很多)

建立好放在SpuVo包下

最后保存使用的时SpuSaveVo,它里面包含了多个子类。

要记得把id更改为Long型,长度更改为BigDecimal类型

 

2)重写spuInfo的save方法

分为多个模块:

i.保存spu基本信息 pms_spu_info

ii.保存spu的描述图片(desc) pms_spu_info_desc

iii.保存spu的描述图片(desc) pms_spu_info_desc

iv.保存spu的规格参数(baseAttrs) pms_product_attr_value

v.保存spu的积分信息(bounds) sms_spu_bounds

 

vi.保存当前spu对应的所有sku信息(sku) pms_sku_info

又分为:

 

一、保存spu基本信息:

比较spuInfoEnity和spuSaveVo的区别是前者多了createTime和updateTime

可以直接使用this.baseMapper.insert()方法

 

二、保存spu的描述图片

注意,这里取出的是list数组,这里不需要将每个描述都存在一个spuInfoDescEntity()中

而是用String.join(",")方法将desc用逗号分割成字符串形式

引入spuInfoDescService。而saveSpuInfoDesc()方法只是在spuInfoDescService下使用this.baseMapper.insert()

这里以及下面的spuId都是通过BeanUtils.copyProperties()的spuInfoEntity的getId()获取来的,spuSaveVo的属性字段里没有id这个属性,id是后端数据库存储时,自动填充的

 

三、保存spu的图片集

这里与上面保存desc不同的是,这里的每一个图片都对应一个spuId

saveImages方法有一定的普遍性,传入spuId和Images数组,可以用于别的场景

spuImagesService下:

 

四、保存spu的规格参数

这里获取属性名需要引入AttrService,通过获取AttrEntity来获取属性名attrName

这里的规格参数要存入ProductAttrValueEntity中,没有自动创建的实体类为其保存值

 

3)保存sku的基本信息:

i)defaultImg为1时,表示有imgUrl,可以放入

defaultImg是用于存储,下面会存到entity中

ii)存sku进数据库的时候会自动分配一个skuId,后面获取到,有用

 

sku的图片信息:

this.saveBatch()和this.baseMapper.insert()的区别 :

service层可以直接save(),dao层是insert()

注意有个filter过滤:过滤掉为空的图片,也就是“未勾选”的意思

filter(imageEntity -> {

return (!StringUtils.isEmpty(imageEntity.getImgUrl()));

}

 

sku的销售属性形象:

直接用service层的saveBatch()方法,是批量保存的意思

 

总结:本节主要是要存储多个信息,调用比较繁杂,还没有用到远程调用


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部