changgou-day03
- 目标
- 理解SKU 和SPU
- 实现商品的添加 商品的修改 (8个表)
1 sku和spu
SPU = Standard Product Unit (标准产品单位)
SKU = stock keeping unit( 库存量单位)
单品:没有规格(属性)的商品
2 表结构
分类表:1.parent_id =0的时候表示 该分类没有父分类(他是一个顶级分类/一级分类)
-- 查询 所有的一级分类的列表数据
select * from tb_category where parent_id=0;
-- 查询出 图书、音像、电子书刊 的直接子分类的列表
select * from tb_category where parent_id=2;
3 需求查询分类的列表
思路:
页面加载的时候发送请求 获取 一级 二级 三级分类的列表展示
请求: /category/list/{pid} GET
参数:pid 传递要查询的分类的ID作为parent_id来执行SQL
返回值:result<List<Category>>
select * from tb_category where parent_id=?(你传递过来的id的值,如果是0 标识一级分类)
驼峰命名转换开启mybatis:
configuration:
map-underscore-to-camel-case: true # 开启驼峰命名 (自动将 下划线转换成大写)
4 品牌列表数据展示
思路:
+ 当点击了三级分类之后
+ 展示品牌的列表(展示的是点击到的三级分类ID对应的那些品牌的列表数据)
select tbb.* from tb_category_brand tcb,tb_brand tbb where tcb.category_id=76 and tbb.id=tcb.brand_id;
思路:
当点击下拉框的时候发送请求 查询 当前第三级分类对应的品牌的列表数据返回前端
请求:/brand/category/{id} GET
参数:分类的ID (三级分类的ID) Integer
返回值:Result<List<Brand>>
5 规格的列表数据展示
思路:
展示 当前点击到的三级分类对应的规格列表数据,并不应该展示所有的规格的列表
+ 1.select template_id from tb_category where id=76(之前点击到的三级分类的ID)
+ 2.select * from tb_spec where template_id=上边查询到的ID
+ 3.返回给前端
请求:
请求: /spec/category/{id} GET
参数:三级分类的ID
返回值:result<List<spec>>
6.参数列表数据展示
思路:
展示 你点击到的3级分类对应的参数的列表 并不应该展示所有的参数的列表
7 保存商品
1.创建POJO 组合spu和sku的列表属性
2.发送请求 该组合POJO 来接收请求体对象
3.将数据添加到sku表和spu表中
请求路径:/spu/save POST
参数:表单数据(Goods来接收)
返回值:result true/false
8 雪花算法
是由64位二进制的数据组成(时间戳+工作机器ID+数据中心ID+序列) 共同组成的数字:递增的趋势。数据长度不长,比较适中。
9 测试添加商品
测试添加数据
{
"skuList": [
{
"alertNum": 10,
"brandName": "华为",
"categoryId": 64,
"commentNum": 0,
"image": "http://www.baidu.com",
"images": "",
"name": "华为P30手机",
"num": 5,
"price": 1000,
"saleNum": 0,
"sn": "No1001",
"spec": "{\"颜色\":\"红\",\"机身内存\":\"64G\"}",
"weight": 0
},
{
"alertNum": 10,
"brandName": "华为",
"categoryId": 64,
"commentNum": 0,
"image": "http://www.baidu.com",
"images": "",
"name": "华为P30手机",
"num": 5,
"price": 1000,
"saleNum": 0,
"sn": "No1001",
"spec": "{\"颜色\":\"绿\",\"机身内存\":\"64G\"}",
"weight": 0
},
{
"alertNum": 10,
"brandName": "华为",
"categoryId": 64,
"commentNum": 0,
"image": "http://www.baidu.com",
"images": "",
"name": "华为P30手机",
"num": 5,
"price": 1000,
"saleNum": 0,
"sn": "No1001",
"spec": "{\"颜色\":\"绿\",\"机身内存\":\"8G\"}",
"weight": 0
},
{
"alertNum": 10,
"brandName": "华为",
"categoryId": 64,
"commentNum": 0,
"image": "http://www.baidu.com",
"images": "",
"name": "华为P30手机",
"num": 5,
"price": 1000,
"saleNum": 0,
"sn": "No1001",
"spec": "{\"颜色\":\"红\",\"机身内存\":\"8G\"}",
"weight": 0
}
],
"spu": {
"brandId": 8557,
"caption": "104期手机大促销",
"category1Id": 1,
"category2Id": 59,
"category3Id": 64,
"commentNum": 0,
"freightId": 0,
"images": "http://www.qingcheng.com/image/1.jpg,http://www.qingcheng.com/image/2.jpg",
"introduction": "华为产品世界最强",
"isEnableSpec": "1",
"isMarketable": "1",
"name": "104期特牛逼的手机",
"specItems": "{\"颜色\":[\"红\",\"绿\"],\"机身内存\":[\"64G\",\"8G\"]}",
"paraItems": "{\"赠品\":\"充电器\",\"出厂年份\":\"2019\"}",
"saleNum": 0,
"saleService": "一年包换",
"sn": "No10001",
"status": "1",
"templateId": 42
}
}
10 修改商品
1 回显数据
请求: /spu/goods/{id} GET
参数: spu的ID
返回值:Result<Goods>
2 修改数据 判断是否更新和添加(通过spu的ID 是否有值来判断)
请求: /spu/save POST
参数:goods
返回值:result