第二十三章第二节:解决保存商品信息时的问题
1、保存spu的产品介绍图片异常

解决:
修改SpuInfoDescEntity实体类的spuId为非自增长
com.applesnt.onlinemall.product.entity.SpuInfoDescEntity
/**
* 商品id
* type= IdType.INPUT:不是自增长
*/
@TableId(type= IdType.INPUT)
private Long spuId;
2、远程调用onlinemall-coupon的服务超时
异常信息:Read timed out executing POST http://onlinemall-coupon/coupon/spubounds/save,异常类型是:class feign.RetryableException
解决:
修改配置文件,配置超时时间
onlinemall-product\src\main\resources\application.yml
#ribbon的超时时间
ribbon:
ReadTimeout: 30000
ConnectTimeout: 30000
3、sku保存时,没有选中的图片也保存了,导致数据库img_url为空,保存时需要过滤掉这些数据

解决:
com.applesnt.onlinemall.product.service.impl.SpuInfoServiceImpl

//6.2、保存sku的图片信息 pms_sku_images
List<SkuImagesEntity> collect1 = item.getImages().stream().map(img -> {
SkuImagesEntity skuImagesEntity = new SkuImagesEntity();
skuImagesEntity.setSkuId(skuId);
skuImagesEntity.setImgUrl(img.getImgUrl());
skuImagesEntity.setDefaultImg(img.getDefaultImg());
return skuImagesEntity;
}).filter(entity->{
/*过滤,只有imgurl有值 返回true进行封装,返回false过滤掉*/
return !StringUtils.isEmpty(entity.getImgUrl());
}).collect(Collectors.toList());
4、sku保存时,过滤掉无效的满减和打折信息


解决:
com.applesnt.onlinemall.product.service.impl.SpuInfoServiceImpl

//6.4、保存sku的优惠满减信息(远程调用服务)mall_sms-》sms_sku_ladder/sms_sku_full_reduction/sms_member_price
/*
*1:在common中创建TO SkuReductionTo、MemberPrice
*2:编写远程调用的接口saveSkuReduction
* 3:编写被调用的saveInfo 满减信息保存业务方法
* */
SkuReductionTo skuReductionTo = new SkuReductionTo();
//数据对拷
BeanUtils.copyProperties(item,skuReductionTo);
//设置skuId
skuReductionTo.setSkuId(skuId);
/*
* 如果sku的满减信息为空,咋不远程调用满减的保存服务
* skuReductionTo.getFullPrice().compareTo(new BigDecimal("0"))==1 :BigDecimal类型的对比
* -1:表示当前值比0小,0:表示当前值等于0,1:表示当前值比0大
* */
if(skuReductionTo.getFullCount()>0 || skuReductionTo.getFullPrice().compareTo(new BigDecimal("0"))==1){
R r2= couponFeignService.saveSkuReduction(skuReductionTo);
System.out.println("sku的优惠满减信息:"+r2);
}
com.applesnt.onlinemall.coupon.service.impl.SkuFullReductionServiceImpl



@Override
public void saveSkuReduction(SkuReductionTo skuReductionTo) {
//保存sku的优惠满减信息mall_sms-》sms_sku_ladder/sms_sku_full_reduction/sms_member_price
//保存sms_sku_ladder信息
SkuLadderEntity skuLadderEntity = new SkuLadderEntity();
BeanUtils.copyProperties(skuReductionTo,skuLadderEntity);
/*判断满几件打几折的信息不为空时 才保存*/
if(skuReductionTo.getFullCount()>0){
skuLadderService.save(skuLadderEntity);
}
//保存sms_sku_full_reduction信息
SkuFullReductionEntity skuFullReductionEntity = new SkuFullReductionEntity();
BeanUtils.copyProperties(skuReductionTo,skuFullReductionEntity);
/*判断满多少钱减多少钱的信息不为空时,才保存*/
if(skuReductionTo.getFullPrice().compareTo(new BigDecimal("0"))==1){
this.save(skuFullReductionEntity);
}
//保存sms_member_price信息
List<MemberPrice> memberPrice = skuReductionTo.getMemberPrice();
List<MemberPriceEntity> collect = memberPrice.stream().map(item -> {
MemberPriceEntity memberPriceEntity = new MemberPriceEntity();
memberPriceEntity.setSkuId(skuReductionTo.getSkuId());
memberPriceEntity.setMemberLevelId(item.getId());
memberPriceEntity.setMemberLevelName(item.getName());
memberPriceEntity.setMemberPrice(item.getPrice());
memberPriceEntity.setAddOther(1);
return memberPriceEntity;
}).filter(item->{
/*会员价格必须大于0 才会返回true进行封装 否则过滤掉*/
return item.getMemberPrice().compareTo(new BigDecimal("0"))==1;
}).collect(Collectors.toList());
memberPriceService.saveBatch(collect);
}

浙公网安备 33010602011771号