谷粒商城--SPU和SKU(属性分组、规格参数、销售属性)-1

简介: 谷粒商城--SPU和SKU(属性分组、规格参数、销售属性)

SPU和SKU


SPU:standard product unit(标准化产品单元):是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。如iphone13是SPU,它是一个产品的集合


**SKU:stock keeping unit(库存量单位):**库存进出计量的基本单元,可以是件/盒/托盘等单位。


SKU是对于大型连锁超市DC配送中心物流管理的一个必要的方法。现在已经被引申为产品统一编号的简称,每种产品对应有唯一的SKU号。如iphone13ProMax 1T 蓝色 是SKU,包子店中肉包子是SKU,素包子是SKU,水煎包是SKU…


规格参数和销售属性


像这里的商品介绍,规格与包装都是属于SPU的属性。它们都属于是规格参数


ad6bd1d3792aaf655fd98d8111f5d6d1_2c808ddb5120bd963fefb5b4011c089b.png


像版本,颜色等都属是SKU的销售属性


58b9ec6b5f8eb1aced6d7279de3c84da_af61b0e7e1a4803f80fb9a1cddabfea3.png


表的关系理解


(1)属性关系-规格参数-销售属性-三级分类 关联关系


每个三级分类下有各自的属性分组表通过id和catelogid关联,能查出每个分类下的属性分组


属性分组表和属性表通过一个属性&属性关联表进行关联,能查出每个属性分组下的属性


最终这样的关系我们可以查出每个分类的属性分组和每个属性分组对应的属性


398a0b3adccf30104d732e9ec2ee37f5_62eb29cc8e5f1ed305151ff08537e15d.png


(2)通过思维导图来理解


手机是一级分类,它下面又有属性组,每个属性组又有各自的属性


eaba6460d27fd53046a54055faac7491_fcdd39e93e38806c5d93688c520eea3c.png


(3)SPU-SKU属性表


商品属性表和属性表通过attrid和id进行关联,能查出每个spu的属性


sku销售属性表是为了表示spu下不同sku,比如1号spu在此表有两个sku,这两个sku有不同的销售属性,是通过和属性表关联获取的


312d66d09faee2348be9b9aba7f94344_c65a05a543049dbd5945a8a0b11bfdfc.png


(4)通过思维导图来理解


像网络、像素一般是固定不可选的所以是SPU属性


而内存、容量、颜色等可选的就为SKU销售属性


02e4a4a73eea68affc6733ef9d64bcca_2c35e6266c522d832bdaf69ba9932f56.png


导入前端代码


(1)重新执行“sys_menus.sql”,完善菜单。


正常我们是在系统管理里自定义添加,步骤都是一样的,其实在前端页面添加就是把数据提交到mall_admin表中,这里我们直接把提供的sql语句导入即可!


如下结果:


7710829783607f6163ec82633b3bd747_eb0a07a1941df07644d966f8813545f9.png


(2)实现点击菜单的左边,能够实现在右边展示数据


2614e41468a92c8bec49ca4b882328c5_4c65fe9aafbbc3201b141c45c9424353.png


这个页面就是三级分类和一个表格显示在一块对吧,属于是父子组件交互


前端不具体写了,我们直接导入代码,效果如下:


d38b3c9f3a3dc2a795a2e7a24b0ea1b5_ee1411c79a8cd97d85854f72895979c6.png


因为数据库没数据,所以这里不显示


完善后端接口


接口开发流程

什么是开发接口?

开发接口就是开发Controller、service、dao


在线接口文档如下https://easydoc.net/s/78237135/ZUqEdvA4/OXTgKobR

别人告诉你需要什么功能,需要返回什么样的数据,你就通过接口的形式把他们呢实现出来即可!


以后工作了也是这种形式,主要是开发接口为多,前端其实不用写太多,能看懂即可!!!


开发思路

思路:


  • 根据接口文档写接口
  • 代码中大部分接口已自动生成(MBG),所以我们在前端页面看哪个请求失败
  • 后端改接口


这一部分都是CRUD相关的代码,所以要好好练好好写!!!


属性分组详情

显示属性分组

接口如下:


97c1e4a966c2c4886826bf32db822f7f_48d10a7475f6548312ae56b90d5f70e9.png


controller


    @RequestMapping("/list/{catelogId}")
    public R list(@RequestParam Map<String, Object> params,
                  @PathVariable("catelogId") Long catelogId){
//        PageUtils page = attrGroupService.queryPage(params);
        PageUtils page = attrGroupService.queryPage(params, catelogId);
        return R.ok().put("page", page);
    }

service


这里注意,前端有两个查询按钮


查询和查询全部


这两个都要有模糊查询的功能!


PageUtils queryPage(Map<String, Object> params, Long catelogId);
@Override
public PageUtils queryPage(Map<String, Object> params, Long catelogId) {
    //多条件查询
    String key = (String) params.get("key");
    QueryWrapper<AttrGroupEntity> wrapper = new QueryWrapper<>();
    if (!StringUtils.isEmpty(key)) {
        wrapper.and((obj) -> {
            obj.eq("attr_group_id",key).or().like("attr_group_name",key);
        });
    }
    if (catelogId == 0) {
        //如果是默认的是查全部的一级分类
        IPage<AttrGroupEntity> page = this.page(
            new Query<AttrGroupEntity>().getPage(params),
            wrapper);
        return new PageUtils(page);
    } else {
        wrapper.eq("catelog_id", catelogId);
        IPage<AttrGroupEntity> page = this.page(
            new Query<AttrGroupEntity>().getPage(params), wrapper);
        return new PageUtils(page);
    }
}

测试


7b4c48131ac537d2fe04404ca366b24b_97f92c989a29179873f7bcaa8d2b0ad3.png


属性分组回显

这一部分主要是做属性分组的数据回显的


接口如下:


93c627dd04754479c5b11d5a9b9e4530_b79f2d4fa1714657db07ebacb6d30c61.png


前端这里省略,需要去elementui找组件,改数据


controller

/**
 * 信息
 */
@RequestMapping("/info/{attrId}")
public R info(@PathVariable("attrId") Long attrId){
  AttrEntity attr = attrService.getById(attrId);
    Long catelogId = attr.getCatelogId();
    Long[] path = categoryService.findCatelogPath(catelogId);
    attr.setCatelogPath(path);
    return R.ok().put("attr", attr);
}

service


获取分类路径id


通过递归操作完成


过程


给一个分类id,不断的查它的父类id直到查不到为止,最后把查询到的id到放到一个集合里


怎样写好递归?


  1. 确定参数值和返回值
  2. 确定终止条件
  3. 递归逻辑


三者缺一不可!!!


//找到catelogId的完整路径:[父/子/孙]
@Override
public Long[] findCatelogPath(Long catelogId) {
    ArrayList<Long> list = new ArrayList<>();
    List<Long> parentPath = findParentPath(catelogId, list);//1.确定递归参数和返回值
    Collections.reverse(parentPath);
    return (Long[]) list.toArray(new Long[parentPath.size()]);
}
private List<Long> findParentPath(Long catelogId,ArrayList<Long> list){
    //3.递归逻辑
    list.add(catelogId);
    CategoryEntity entity = this.getById(catelogId);
    if (entity.getParentCid()!=0){//2.递归终止条件
        findParentPath(entity.getParentCid(),list);
    }
    return list;
}

测试


返回属性的父路径id

2671125db8f45f4548bda3cb8dbfcefc_58021efab77c44f9f9fcbd731d8ce0c3.png

相关文章
|
28天前
|
存储 数据采集 JSON
电商API分享:如何批量获取商品详情页数据(属性图价格sku视频评论)
电商API(应用程序接口)通常提供了丰富的数据获取功能,使开发者能够方便地获取商品详情页的各种数据,包括商品属性、图片、价格、SKU(库存量单位)、视频以及评论等。以下是一个基本的步骤指南,用于通过电商API批量获取商品详情页数据:
|
8月前
|
XML JSON 缓存
Java实现根据商品ID请求京东工业商品详情数据方法
Java实现根据商品ID请求京东工业商品详情数据方法
69 0
|
5月前
|
前端开发 API 数据库
谷粒商城--SPU和SKU(属性分组、规格参数、销售属性)-2
谷粒商城--SPU和SKU(属性分组、规格参数、销售属性)
62 0
|
5月前
|
JSON 前端开发 Java
谷粒商城--SPU和SKU(分组与属性关联、发布商品、仓库服务)-2
谷粒商城--SPU和SKU(分组与属性关联、发布商品、仓库服务)
41 0
|
5月前
|
JSON 数据格式
谷粒商城--SPU和SKU(分组与属性关联、发布商品、仓库服务)-1
谷粒商城--SPU和SKU(分组与属性关联、发布商品、仓库服务)
27 0
|
5月前
|
测试技术 API 微服务
谷粒商城--SPU和SKU(分组与属性关联、发布商品、仓库服务)-3
谷粒商城--SPU和SKU(分组与属性关联、发布商品、仓库服务)
33 0
|
7月前
|
API
电商API接口开发系列-商品采集接口、关键字搜索接口,获取商品ID、商品主图接口
目前各大电商平台都有自己的开放平台,通过API接口开放本电商平台的相关数据和功能,以自由开放的姿态来占领更多的市场份额。也让更多的人能来电商市场分得一杯羹。 通过电商API接口可以实现获取电商平台商品数据、订单数据、上下架商品、批量处理订单、批量发货、批量购买、买家信息、卖家信息等等功能。
电商API接口开发系列-商品采集接口、关键字搜索接口,获取商品ID、商品主图接口
|
9月前
|
XML JSON 缓存
Java实现商品ID获取淘宝商品SKU属性数据方法
Java实现商品ID获取淘宝商品SKU属性数据方法
113 0
|
9月前
|
XML JSON 缓存
Java实现商品ID获取京东商品详情Desc商品描述数据方法
Java实现商品ID获取京东商品详情Desc商品描述数据方法
57 0
|
9月前
|
XML JSON 缓存
Java实现商品ID获取淘宝商品类目数据方法
Java实现商品ID获取淘宝商品类目数据方法
93 0

热门文章

最新文章