当前位置:网站首页>商品管理系统——商品新增本地保存实现部分
商品管理系统——商品新增本地保存实现部分
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
边栏推荐
- Tips in Android Development: requires permission android.permission write_ Settings solution
- C / C + + Programming Notes: pointer! Understand pointer from memory, let you understand pointer completely
- 分库分表的几种常见玩法及如何解决跨库查询等问题
- 20201108 programming exercise exercise 3
- ubuntu 上使用微信的新方案——手机投屏
- Combine theory with practice to understand CORS thoroughly
- The vowels in the inverted string of leetcode
- LTM understanding and configuration notes
- Linked list
- Save code
猜你喜欢
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!
Application of cloud gateway equipment on easynts in Xueliang project
Talk about my understanding of FAAS with Alibaba cloud FC
Oschina plays disorderly on Monday
20201108 programming exercise exercise 3
如何通过Sidecar自定义资源减少Istio代理资源消耗
14.Kubenetes简介
Common feature pyramid network FPN and its variants
结合阿里云 FC 谈谈我对 FaaS 的理解
GDI 及OPENGL的区别
随机推荐
linx7.5 初始安装
How does semaphore, a thread synchronization tool that uses an up counter, look like?
Apache Iceberg 中三种操作表的方式
常见特征金字塔网络FPN及变体
Ten year itch of programmer
Programmers should know the URI, a comprehensive understanding of the article
For the first time open CSDN, this article is for the past self and what is happening to you
商品管理系统——SPU检索功能
亚马逊的无服务器总线EventBridge支持事件溯源 - AWS
A few lines of code can easily transfer traceid across systems, so you don't have to worry about losing the log!
2 normal mode
In 2020, what are the best tools for Android developers to break the cold winter?
Adding OpenGL form to MFC dialog
Linked list
2.计算机硬件简介
STS安装
Five indispensable open source tools for me
Salesforce connect & external object
Combine theory with practice to understand CORS thoroughly
Copy on write collection -- copyonwritearraylist