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()方法,是批量保存的意思

总结:本节主要是要存储多个信息,调用比较繁杂,还没有用到远程调用
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
