changgou-day03

  • 目标
    • 理解SKU 和SPU
    • 实现商品的添加 商品的修改 (8个表)

      1 sku和spu

      1. SPU = Standard Product Unit (标准产品单位)
      2. SKU = stock keeping unit( 库存量单位)
      3. 单品:没有规格(属性)的商品
      changgou-day03 - 图2

      2 表结构

      分类表:
      1. 1.parent_id =0的时候表示 该分类没有父分类(他是一个顶级分类/一级分类)
      2. -- 查询 所有的一级分类的列表数据
      3. select * from tb_category where parent_id=0;
      4. -- 查询出 图书、音像、电子书刊 的直接子分类的列表
      5. select * from tb_category where parent_id=2;

      3 需求查询分类的列表

      changgou-day03 - 图3

      思路:
      1. 页面加载的时候发送请求 获取 一级 二级 三级分类的列表展示
      2. 请求: /category/list/{pid} GET
      3. 参数:pid 传递要查询的分类的ID作为parent_id来执行SQL
      4. 返回值:result<List<Category>>
      5. select * from tb_category where parent_id=?(你传递过来的id的值,如果是0 标识一级分类)
      changgou-day03 - 图4
      驼峰命名转换开启
      1. mybatis:
      2. configuration:
      3. map-underscore-to-camel-case: true # 开启驼峰命名 (自动将 下划线转换成大写)

image.png
image.png
image.png

4 品牌列表数据展示

  1. 思路:
  2. + 当点击了三级分类之后
  3. + 展示品牌的列表(展示的是点击到的三级分类ID对应的那些品牌的列表数据)
  4. select tbb.* from tb_category_brand tcb,tb_brand tbb where tcb.category_id=76 and tbb.id=tcb.brand_id;

changgou-day03 - 图8
changgou-day03 - 图9
思路:

  1. 当点击下拉框的时候发送请求 查询 当前第三级分类对应的品牌的列表数据返回前端
  2. 请求:/brand/category/{id} GET
  3. 参数:分类的ID (三级分类的ID) Integer
  4. 返回值:Result<List<Brand>>

5 规格的列表数据展示

思路:

  1. 展示 当前点击到的三级分类对应的规格列表数据,并不应该展示所有的规格的列表
  2. + 1.select template_id from tb_category where id=76(之前点击到的三级分类的ID)
  3. + 2.select * from tb_spec where template_id=上边查询到的ID
  4. + 3.返回给前端

changgou-day03 - 图10
请求:

  1. 请求: /spec/category/{id} GET
  2. 参数:三级分类的ID
  3. 返回值:result<List<spec>>

6.参数列表数据展示

思路:

  1. 展示 你点击到的3级分类对应的参数的列表 并不应该展示所有的参数的列表

7 保存商品

  1. 1.创建POJO 组合spusku的列表属性
  2. 2.发送请求 该组合POJO 来接收请求体对象
  3. 3.将数据添加到sku表和spu表中
  4. 请求路径:/spu/save POST
  5. 参数:表单数据(Goods来接收)
  6. 返回值:result true/false

8 雪花算法

  1. 是由64位二进制的数据组成(时间戳+工作机器ID+数据中心ID+序列) 共同组成的数字:递增的趋势。数据长度不长,比较适中。

9 测试添加商品

测试添加数据

  1. {
  2. "skuList": [
  3. {
  4. "alertNum": 10,
  5. "brandName": "华为",
  6. "categoryId": 64,
  7. "commentNum": 0,
  8. "image": "http://www.baidu.com",
  9. "images": "",
  10. "name": "华为P30手机",
  11. "num": 5,
  12. "price": 1000,
  13. "saleNum": 0,
  14. "sn": "No1001",
  15. "spec": "{\"颜色\":\"红\",\"机身内存\":\"64G\"}",
  16. "weight": 0
  17. },
  18. {
  19. "alertNum": 10,
  20. "brandName": "华为",
  21. "categoryId": 64,
  22. "commentNum": 0,
  23. "image": "http://www.baidu.com",
  24. "images": "",
  25. "name": "华为P30手机",
  26. "num": 5,
  27. "price": 1000,
  28. "saleNum": 0,
  29. "sn": "No1001",
  30. "spec": "{\"颜色\":\"绿\",\"机身内存\":\"64G\"}",
  31. "weight": 0
  32. },
  33. {
  34. "alertNum": 10,
  35. "brandName": "华为",
  36. "categoryId": 64,
  37. "commentNum": 0,
  38. "image": "http://www.baidu.com",
  39. "images": "",
  40. "name": "华为P30手机",
  41. "num": 5,
  42. "price": 1000,
  43. "saleNum": 0,
  44. "sn": "No1001",
  45. "spec": "{\"颜色\":\"绿\",\"机身内存\":\"8G\"}",
  46. "weight": 0
  47. },
  48. {
  49. "alertNum": 10,
  50. "brandName": "华为",
  51. "categoryId": 64,
  52. "commentNum": 0,
  53. "image": "http://www.baidu.com",
  54. "images": "",
  55. "name": "华为P30手机",
  56. "num": 5,
  57. "price": 1000,
  58. "saleNum": 0,
  59. "sn": "No1001",
  60. "spec": "{\"颜色\":\"红\",\"机身内存\":\"8G\"}",
  61. "weight": 0
  62. }
  63. ],
  64. "spu": {
  65. "brandId": 8557,
  66. "caption": "104期手机大促销",
  67. "category1Id": 1,
  68. "category2Id": 59,
  69. "category3Id": 64,
  70. "commentNum": 0,
  71. "freightId": 0,
  72. "images": "http://www.qingcheng.com/image/1.jpg,http://www.qingcheng.com/image/2.jpg",
  73. "introduction": "华为产品世界最强",
  74. "isEnableSpec": "1",
  75. "isMarketable": "1",
  76. "name": "104期特牛逼的手机",
  77. "specItems": "{\"颜色\":[\"红\",\"绿\"],\"机身内存\":[\"64G\",\"8G\"]}",
  78. "paraItems": "{\"赠品\":\"充电器\",\"出厂年份\":\"2019\"}",
  79. "saleNum": 0,
  80. "saleService": "一年包换",
  81. "sn": "No10001",
  82. "status": "1",
  83. "templateId": 42
  84. }
  85. }

10 修改商品

  1. 1 回显数据
  2. 请求: /spu/goods/{id} GET
  3. 参数: spuID
  4. 返回值:Result<Goods>
  5. 2 修改数据 判断是否更新和添加(通过spuID 是否有值来判断)
  6. 请求: /spu/save POST
  7. 参数:goods
  8. 返回值:result