商品 SPU 与 SKU
这篇解决什么
一件商品怎么拆成 SPU 和 SKU、价格库存存在哪、上下架怎么改。读完能对上 product_spu.specType 和 SKU 的 properties JSON。
默认端口 48080。开启见 商城功能设计。分类先建好见 商品分类。
示意图:保存 SPU 时一并写 SKU。没有单独的 SKU 管理 Controller。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 管理端 | @RequestMapping("/product/spu") | ruoyi-office/yudao-module-mall/yudao-module-product-server/.../controller/admin/spu/ProductSpuController.java |
| 用户端 | /product/spu | AppProductSpuController |
| SPU 表 | product_spu | ProductSpuDO |
| SKU 表 | product_sku | ProductSkuDO |
| 管理端页 | 列表 / 表单 | ruoyi-office-vben/apps/web-antd/src/views/mall/product/spu/ |
官方菜单:商品列表 2014。路由 /mall/product/spu。新增 /mall/product/spu/add。品牌页菜单 2008,表 product_brand,挂在 brandId。
上下架走 PUT /update-status,不是删行。
字段
金额单位都是分。SPU 上的 price / stock 是各 SKU 的最低价和库存合计,下单扣的是 SKU 库存。
| 名称 | 说明 | 仓库路径 |
|---|---|---|
categoryId | 必须是二级分类 | ProductSpuDO |
specType | false 单规格,true 多规格 | 同上 |
status | -1 回收站,0 下架,1 上架 | ProductSpuStatusEnum |
deliveryTypes | 配送方式数组 | 同上 |
deliveryTemplateId | 运费模板 | 同上 |
properties | SKU 规格 JSON | ProductSkuDO |
barCode / stock | 条码、库存 | 同上 |
单规格时属性用默认项:ProductPropertyDO.ID_DEFAULT = 0,名字「默认」。多规格从属性页选规格再组 SKU。
不要写到 erp_product
进销存产品、仓库结存在 ERP。这里改的是商城可售库存。两边数量不会自动对账。
按本仓库 DO 生成的 ER。price 单位分。
用户端只展示 status = 1 的 SPU。回收站用状态 -1,不是物理删除优先路径。
配置与操作
走 商品列表(2014,/mall/product/spu),新增 /mall/product/spu/add。categoryId 必须是二级分类。specType:false 单规格(默认属性 id 0),true 多规格再组 SKU。金额单位分。品牌挂 brandId(菜单 2008)。上下架走 PUT /update-status:0 下架,1 上架,回收站 -1。
保存 SPU 时一并写 SKU。用户端只展示 status = 1。下单扣的是 SKU 库存。不要写到 erp_product。
