当前位置:网站首页>商品管理系统——商品新增本地保存实现部分
商品管理系统——商品新增本地保存实现部分
2020-11-09 08:25:00 【osc_9mctux05】
一 SpuInfoServiceImpl
/**
* 功能描述:保存商品信息
*
* @param vo 待保存的商品信息
* @author cakin
* @date 2020/11/8
*/
@Transactional
@Override
public void saveSpuInfo(SpuSaveVo vo) {
// 1 保存spu基本信息 pms_spu_info
SpuInfoEntity infoEntity = new SpuInfoEntity();
BeanUtils.copyProperties(vo, infoEntity);
infoEntity.setCreateTime(new Date());
infoEntity.setUpdateTime(new Date());
this.saveBaseSpuInfo(infoEntity);
// 2 保存Spu的描述图片 pms_spu_info_desc
List<String> decript = vo.getDecript();
SpuInfoDescEntity descEntity = new SpuInfoDescEntity();
descEntity.setSpuId(infoEntity.getId());
// 用逗号拼接List中的每一个元素
descEntity.setDecript(String.join(",", decript));
spuInfoDescService.saveSpuInfoDesc(descEntity);
// 3 保存spu的图片集 pms_spu_images
List<String> images = vo.getImages();
imagesService.saveImages(infoEntity.getId(), images);
// 4 保存spu的规格参数 pms_product_attr_value
List<BaseAttrs> baseAttrs = vo.getBaseAttrs();
List<ProductAttrValueEntity> collect = baseAttrs.stream().map(attr -> {
ProductAttrValueEntity valueEntity = new ProductAttrValueEntity();
valueEntity.setAttrId(attr.getAttrId());
AttrEntity id = attrService.getById(attr.getAttrId());
valueEntity.setAttrName(id.getAttrName());
valueEntity.setAttrValue(attr.getAttrValues());
valueEntity.setQuickShow(attr.getShowDesc());
valueEntity.setSpuId(infoEntity.getId());
return valueEntity;
}).collect(Collectors.toList());
attrValueService.saveProductAttr(collect);
// 5 保存spu的积分信息;gulimall_sms->sms_spu_bounds
Bounds bounds = vo.getBounds();
SpuBoundTo spuBoundTo = new SpuBoundTo();
BeanUtils.copyProperties(bounds, spuBoundTo);
spuBoundTo.setSpuId(infoEntity.getId());
R r = couponFeignService.saveSpuBounds(spuBoundTo);
if (r.getCode() != 0) {
log.error("远程保存spu积分信息失败");
}
// 5 保存当前spu对应的所有sku信息
List<Skus> skus = vo.getSkus();
if (skus != null && skus.size() > 0) {
// 依次遍历每一个sku
skus.forEach(item -> {
String defaultImg = "";
// 寻找默认图片
for (Images image : item.getImages()) {
if (image.getDefaultImg() == 1) {
defaultImg = image.getImgUrl();
}
}
SkuInfoEntity skuInfoEntity = new SkuInfoEntity();
// 对拷
BeanUtils.copyProperties(item, skuInfoEntity);
// 设置其他值
skuInfoEntity.setBrandId(infoEntity.getBrandId());
skuInfoEntity.setCatalogId(infoEntity.getCatalogId());
skuInfoEntity.setSaleCount(0L);
skuInfoEntity.setSpuId(infoEntity.getId());
skuInfoEntity.setSkuDefaultImg(defaultImg);
// 5.1 sku的基本信息 pms_sku_info
skuInfoService.saveSkuInfo(skuInfoEntity);
Long skuId = skuInfoEntity.getSkuId();
List<SkuImagesEntity> imagesEntities = item.getImages().stream().map(img -> {
SkuImagesEntity skuImagesEntity = new SkuImagesEntity();
skuImagesEntity.setSkuId(skuId);
skuImagesEntity.setImgUrl(img.getImgUrl());
skuImagesEntity.setDefaultImg(img.getDefaultImg());
return skuImagesEntity;
}).filter(entity -> {
//返回true就是需要,false就是剔除
return !StringUtils.isEmpty(entity.getImgUrl());
}).collect(Collectors.toList());
// 5.2 sku的图片信息 pms_sku_image
skuImagesService.saveBatch(imagesEntities);
// TODO 没有图片路径的无需保存
List<Attr> attr = item.getAttr();
List<SkuSaleAttrValueEntity> skuSaleAttrValueEntities = attr.stream().map(a -> {
SkuSaleAttrValueEntity attrValueEntity = new SkuSaleAttrValueEntity();
BeanUtils.copyProperties(a, attrValueEntity);
attrValueEntity.setSkuId(skuId);
return attrValueEntity;
}).collect(Collectors.toList());
// 5.3 sku的销售属性信息 pms_sku_sale_attr_value
skuSaleAttrValueService.saveBatch(skuSaleAttrValueEntities);
// 5.4 sku的优惠、满减等信息;gulimall_sms->sms_sku_ladder\sms_sku_full_reduction\sms_member_price
SkuReductionTo skuReductionTo = new SkuReductionTo();
BeanUtils.copyProperties(item, skuReductionTo);
skuReductionTo.setSkuId(skuId);
if (skuReductionTo.getFullCount() > 0 || skuReductionTo.getFullPrice().compareTo(new BigDecimal("0")) == 1) {
R r1 = couponFeignService.saveSkuReduction(skuReductionTo);
if (r1.getCode() != 0) {
log.error("远程保存sku优惠信息失败");
}
}
});
}
}
二 SkuInfoServiceImpl
/**
* 功能描述:保存sku信息
*
* @author cakin
* @date 2020/11/8
* @param skuInfoEntity sku信息实体类
*/
@Override
public void saveSkuInfo(SkuInfoEntity skuInfoEntity) {
this.baseMapper.insert(skuInfoEntity);
}
三 ProductAttrValueServiceImpl
/**
* 功能描述:批量保存商品属性
*
* @author cakin
* @date 2020/11/8
* @param collect 商品属性集合
*/
@Override
public void saveProductAttr(List<ProductAttrValueEntity> collect) {
this.saveBatch(collect);
}
四 SpuImagesServiceImpl
/**
* 功能描述:保存SPU图片
*
* @param id SPU的ID
* @param images 图片列表
* @author cakin
* @date 2020/11/8
*/
@Override
public void saveImages(Long id, List<String> images) {
if (images == null || images.size() == 0) {
} else {
List<SpuImagesEntity> collect = images.stream().map(img -> {
SpuImagesEntity spuImagesEntity = new SpuImagesEntity();
spuImagesEntity.setSpuId(id);
spuImagesEntity.setImgUrl(img);
return spuImagesEntity;
}).collect(Collectors.toList());
// 批量保存
this.saveBatch(collect);
}
}
五 SpuInfoDescServiceImpl
/**
* 功能描述:保存SPU的描述信息
*
* @author cakin
* @date 2020/11/8
* @param descEntity spu信息描述视图
*/
@Override
public void saveSpuInfoDesc(SpuInfoDescEntity descEntity) {
this.baseMapper.insert(descEntity);
}
版权声明
本文为[osc_9mctux05]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4364052/blog/4708529
边栏推荐
- 平台商业化能力的另一种表现形式SAAS
- App crashed inexplicably. At first, it thought it was the case of the name in the header. Finally, it was found that it was the fault of the container!
- 无法启动此程序,因为计算机中丢失 MSVCP120.dll。尝试安装该程序以解决此问题
- In 2020, what are the best tools for Android developers to break the cold winter?
- 上线1周,B.Protocal已有7000ETH资产!
- 对象
- Why choose f for the back end of dark website? - darklang
- Start learning discrete mathematics again
- Leetcode-15: sum of three numbers
- 1. What does the operating system do?
猜你喜欢

Unemployment log, November 5

AQS 都看完了,Condition 原理可不能少!

After Android solves the setrequested orientation, the rotation of the mobile phone screen does not trigger the onconfigurationchanged method

1.操作系统是干什么的?

商品管理系统——整合仓库服务以及获取仓库列表

OpenGL ES 框架详细解析(八) —— OpenGL ES 设计指南

Common feature pyramid network FPN and its variants

2.计算机硬件简介

Combine theory with practice to understand CORS thoroughly

Initial installation of linx7.5
随机推荐
Share API on the web
Introduction to nmon
Natural language processing (NLP) roadmap - KDnuggets
梁老师小课堂|谈谈模板方法模式
EasyNTS上云网关设备在雪亮工程项目中的实战应用
Ten year itch of programmer
STS安装
How does FC game console work?
一堆代码忘了缩进?快捷方式教你无忧无虑!
The file size uploaded by WordPress import exceeds php.ini Upload defined in_ max_ Filesize value -- & gt; solution.
App crashed inexplicably. At first, it thought it was the case of the name in the header. Finally, it was found that it was the fault of the container!
How does semaphore, a thread synchronization tool that uses an up counter, look like?
When iperf is installed under centos7, the solution of make: * no targets specified and no makefile found. Stop
Introduction to nmon
B. protocal has 7000eth assets in one week!
WordPress Import 上传的文件尺寸超过php.ini中定义的upload_max_filesize值--&gt;解决方法。
当我们聊数据质量的时候,我们在聊些什么?
商品管理系统——整合仓库服务以及获取仓库列表
Review of API knowledge
分库分表的几种常见玩法及如何解决跨库查询等问题