当前位置:网站首页>商品管理系统——商品新增本地保存实现部分
商品管理系统——商品新增本地保存实现部分
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
边栏推荐
- 卧槽,这年轻人不讲武德,应届生凭“小抄”干掉5年老鸟,成功拿到字节20Koffer
- 5 个我不可或缺的开源工具
- 分库分表的几种常见玩法及如何解决跨库查询等问题
- STS安装
- Tips in Android Development: requires permission android.permission write_ Settings solution
- 自然语言处理(NLP)路线图 - kdnuggets
- object
- [Python从零到壹] 五.网络爬虫之BeautifulSoup基础语法万字详解
- 商品管理系统——SPU检索功能
- Several rolling captions based on LabVIEW
猜你喜欢
上线1周,B.Protocal已有7000ETH资产!
Talk about my understanding of FAAS with Alibaba cloud FC
Do you know how the computer starts?
架构中台图
Huawei HCIA notes
LTM understanding and configuration notes
The file size uploaded by WordPress import exceeds php.ini Upload defined in_ max_ Filesize value -- & gt; solution.
Investigation of solutions to rabbitmq cleft brain problem
This program cannot be started because msvcp120.dll is missing from your computer. Try to install the program to fix the problem
Depth first search and breadth first search
随机推荐
基于LabVIEW实现的几种滚动字幕
The vowels in the inverted string of leetcode
Pipedrive如何在每天部署50+次的情况下支持质量发布?
使用递增计数器的线程同步工具 —— 信号量,它的原理是什么样子的?
range_sensor_layer
分库分表的几种常见玩法及如何解决跨库查询等问题
写时复制集合 —— CopyOnWriteArrayList
File queue in Bifrost (1)
How to get started with rabbitmq
14.Kubenetes简介
一堆代码忘了缩进?快捷方式教你无忧无虑!
Bifrost 之 文件队列(一)
失业日志 11月5日
14. Introduction to kubenetes
STS安装
华为HCIA笔记
Tips in Android Development: requires permission android.permission write_ Settings solution
LTM理解及配置笔记记录
Finally, the python project is released as exe executable program process
Core knowledge of C + + 11-17 template (2) -- class template