当前位置:网站首页>商品管理系统——商品新增本地保存实现部分
商品管理系统——商品新增本地保存实现部分
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
边栏推荐
- B. protocal has 7000eth assets in one week!
- Review of API knowledge
- Why don't we use graphql? - Wundergraph
- A bunch of code forgot to indent? Shortcut teach you carefree!
- Do you know how the computer starts?
- 写时复制集合 —— CopyOnWriteArrayList
- Three ways to operate tables in Apache iceberg
- Get the first cover image of video through canvas
- Commodity management system -- the search function of SPU
- range_sensor_layer
猜你喜欢

Concurrent linked queue: a non blocking unbounded thread safe queue

上线1周,B.Protocal已有7000ETH资产!

失业日志 11月5日

Apache Iceberg 中三种操作表的方式

python生日贺卡制作以及细节问题的解决最后把python项目发布为exe可执行程序过程

Linked blocking queue based on linked list

非阻塞的无界线程安全队列 —— ConcurrentLinkedQueue

RabbitMQ脑裂问题解决方案调查

几行代码轻松实现跨系统传递 traceId,再也不用担心对不上日志了!

Do you know how the computer starts?
随机推荐
2.计算机硬件简介
商品管理系统——整合仓库服务以及获取仓库列表
A solution to the problem that color picker (palette) cannot use shortcut keys in sublime Text3 plug-in
Share API on the web
为什么我们不使用GraphQL? - Wundergraph
A few lines of code can easily transfer traceid across systems, so you don't have to worry about losing the log!
Why don't we use graphql? - Wundergraph
常见特征金字塔网络FPN及变体
[Python from zero to one] 5. Detailed explanation of beautiful soup basic syntax of web crawler
FC 游戏机的工作原理是怎样的?
Concurrent linked queue: a non blocking unbounded thread safe queue
RabbitMQ脑裂问题解决方案调查
Several common playing methods of sub database and sub table and how to solve the problem of cross database query
object
The difference between GDI and OpenGL
Core knowledge of C + + 11-17 template (2) -- class template
链表
一堆代码忘了缩进?快捷方式教你无忧无虑!
OpenGL ES 框架详细解析(八) —— OpenGL ES 设计指南
Android emulator error: x86 emulation currently requires hardware acceleration的解决方案