谷粒商城--保存当前spu对应的所有sku信息

简介: 谷粒商城--保存当前spu对应的所有sku信息

开发流程如下: 开发需求,就像在线接口文档如下https://easydoc.net/s/78237135/ZUqEdvA4/OXTgKobR这里一样, 别人告诉你需要什么功能,需要返回什么样的数据,你就通过接口的形式把他们呢实现出来即可!


6.保存当前spu对应的所有sku信息


做完以上逻辑做完之后就可以开始对数据进行保存了,也就是

sku的基本信息

sku图片信息

sku的销售属性

sku的优惠满减信息(跨服务);

6.1sku的基本信息;pms_sku_info

这里主要添加vo中没有的信息

List<Skus> skus = vo.getSkus();
if (skus != null && skus.size() > 0) {
    skus.forEach(item -> {
        String defalutImg = "";
        for (Images image : item.getImages()) {
            if (image.getDefaultImg() == 1) {
                defalutImg = image.getImgUrl();
            }
        }
        SkuInfoEntity skuInfoEntity = new SkuInfoEntity();
        BeanUtils.copyProperties(item, skuInfoEntity);
        //添加vo中没有的信息
        skuInfoEntity.setBrandId(infoEntity.getBrandId());
        skuInfoEntity.setCatalogId(infoEntity.getCatalogId());
        skuInfoEntity.setSaleCount(0L);
        skuInfoEntity.setSpuId(infoEntity.getId());
        skuInfoEntity.setSkuDefaultImg(defalutImg);
        skuInfoService.saveSkuInfo(skuInfoEntity);

6.2sku图片信息;pms_sku_images

对于图片呢,只需要保存它的url地址即可

当然对于没有图片路径的就无需进行保存了!

//没有图片路径的无需保存
        Long skuId = skuInfoEntity.getSkuId();
        List<SkuImagesEntity> imageEntities = item.getImages().stream().map(img -> {
            SkuImagesEntity skuImagesEntity = new SkuImagesEntity();
            skuImagesEntity.setSkuId(skuId);
            skuImagesEntity.setImgUrl(img.getImgUrl());
            skuImagesEntity.setDefaultImg(img.getDefaultImg());
            return skuImagesEntity;
        }).filter(entity -> {
            return !StringUtils.isEmpty(entity.getImgUrl());
        }).collect(Collectors.toList());
        skuImagesService.saveBatch(imageEntities);

6.3sku的销售属性;pms_sku_sale_attr_value

sku的销售属性就很常规的操作,获得集合后,给集合中的每一项赋值

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());
        skuSaleAttrValueService.saveBatch(skuSaleAttrValueEntities);

6.4sku的优惠满减信息(跨服务);

通过OpenFeign来远程调用另一个微服务,写feign接口的形式来实现接口的远程调用!

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("远程保存spu积分信息异常");
            }
        }
    });
}

测试

查看数据库变化,如果又报错看控制台输出即可排错!

image.png


检索功能


也就是多条件分页查询,很常见的功能! 检索功能,一半就是多条件加上分页

套路都是一样的 都是这种形式...

先创建wrapper构建条件 QueryWrapper queryWrapper = new QueryWrapper<>();

获取这个条件   String key = (String) params.get("key");

判断有没有获取到    if (!StringUtils.isEmpty(key)) {

获取到了就加进条件      queryWrapper.and((w) -> {

这里是一个条件匹配两个字段            w.eq("id", key).or().like("spu_name", key);        });    }

后面的都是类似

  String status = (String) params.get("status");    if (!StringUtils.isEmpty(status)) {        queryWrapper.eq("publish_status", status);    }

  String brandId = (String) params.get("brandId");    if (!StringUtils.isEmpty(brandId) && !"0".equalsIgnoreCase(brandId)) {        queryWrapper.eq("brand_id", brandId);    }

spu检索

controller

/**
 * 列表
 */
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params){
    PageUtils page = spuInfoService.queryPageByCondition(params);
    return R.ok().put("page", page);
}

service

@Override
public PageUtils queryPageByCondition(Map<String, Object> params) {
    QueryWrapper<SpuInfoEntity> queryWrapper = new QueryWrapper<>();
    String key = (String) params.get("key");
    if (!StringUtils.isEmpty(key)) {
        //等价sql: status=1 and (id=1 or spu_name like xxx)
        queryWrapper.and((w) -> {
            w.eq("id", key).or().like("spu_name", key);
        });
    }
    String status = (String) params.get("status");
    if (!StringUtils.isEmpty(status)) {
        queryWrapper.eq("publish_status", status);
    }
    String brandId = (String) params.get("brandId");
    if (!StringUtils.isEmpty(brandId) && !"0".equalsIgnoreCase(brandId)) {
        queryWrapper.eq("brand_id", brandId);
    }
    String catelogId = (String) params.get("catelogId");
    if (!StringUtils.isEmpty(catelogId) && !"0".equalsIgnoreCase(catelogId)) {
        queryWrapper.eq("catalog_id", catelogId);
    }
    IPage<SpuInfoEntity> page = this.page(
            new Query<SpuInfoEntity>().getPage(params),
            queryWrapper
    );
    return new PageUtils(page);
}



相关文章
|
3月前
|
XML 前端开发 Java
谷粒商城笔记+踩坑(5)——商品服务-属性分组、品牌关联分类,spu+sku+分页拦截器
SPU和SKU、属性分组的增删改查、QueryWrapper的and和or用法、获取当前品牌关联的所有分类
谷粒商城笔记+踩坑(5)——商品服务-属性分组、品牌关联分类,spu+sku+分页拦截器
|
7月前
|
JSON Java API
京东sku属性数据接口(JD.item_sku)丨京东API接口
京东sku属性数据接口(JD.item_sku)丨京东API接口
|
7月前
|
JSON API 数据格式
如何使用京东商品SKU API获取商品的图片信息?
京东商品SKU API是京东开放平台提供的一套API接口,可用于获取京东商城的商品SKU信息。该API提供了丰富的商品信息,包括商品ID、标题、价格、销售量、评论数、评分等。除了这些基本信息之外,商品的图片信息也是商品SKU信息的重要组成部分。本文将详细介绍如何使用京东商品SKU API获取商品的图片信息,包括请求参数、响应数据结构以及示例代码。
|
JSON 前端开发 Java
谷粒商城--SPU和SKU(分组与属性关联、发布商品、仓库服务)-2
谷粒商城--SPU和SKU(分组与属性关联、发布商品、仓库服务)
99 0
|
JSON 数据格式
谷粒商城--SPU和SKU(分组与属性关联、发布商品、仓库服务)-1
谷粒商城--SPU和SKU(分组与属性关联、发布商品、仓库服务)
55 0
|
测试技术 API 微服务
谷粒商城--SPU和SKU(分组与属性关联、发布商品、仓库服务)-3
谷粒商城--SPU和SKU(分组与属性关联、发布商品、仓库服务)
73 0
|
前端开发 API 数据库
谷粒商城--SPU和SKU(属性分组、规格参数、销售属性)-2
谷粒商城--SPU和SKU(属性分组、规格参数、销售属性)
162 0
|
SQL 前端开发 测试技术
谷粒商城--SPU和SKU(属性分组、规格参数、销售属性)-1
谷粒商城--SPU和SKU(属性分组、规格参数、销售属性)
217 0
|
XML JSON 缓存
Java实现店铺ID(店铺链接)获取淘宝整店所有商品数据方法
Java实现店铺ID(店铺链接)获取淘宝整店所有商品数据方法
|
XML JSON 缓存
Java实现根据店铺ID获店铺昵称搜索抖音店铺所有商品数据方法
Java实现根据店铺ID获店铺昵称搜索抖音店铺所有商品数据方法