Skip to content

SPU / SKU 模型(先看这个) ​

不理解这一条,商品那几页会一直觉得别扭

买家下单买的永远是 SKU,不是商品。

两个词 ​

词是什么例子
SPU(商品)一件"商品"本身,有名字、描述、图片「景德镇青花茶杯」
SKU(规格)买家真正下单的那一条,有独立的价格和库存「青花茶杯 · 大号 · 蓝」

一个商品下面可以有 1 条或多条 SKU。

单规格商品也有 1 条 SKU ​

这不是多余的

库存、价格、下单、发货、退款全部走 SKU。

如果单规格走另一套逻辑,系统里就有两份代码 —— 而其中一份迟早会漏掉某条规则 (比如"库存不足不许下单"),那种 bug 只在单规格商品上出现,极难被发现。

你在后台的实际操作:

  • 规格模式选「单规格」 → 保存时系统自动生成那 1 条 SKU,你不用管
  • 选「多规格」 → 先配销售属性,再生成 SKU 矩阵

销售属性 vs 参数属性 ​

这两个是两个命名空间,别混:

销售属性参数属性
作用参与组合成 SKU只在详情页展示
例子颜色、尺寸、容量产地、材质、净含量
买家能选吗能(详情页的规格选择器)不能
影响价格库存吗是否

同名不同义

在「规格」页打一个「材质」当销售属性,和详情页那个「材质」参数 是两个不同的东西,不会互相影响。系统按 是不是销售属性 分开存。

这是刻意的 —— 不分开的话,你在某个商品里把「材质」当规格用, 会把所有商品详情页的那个参数含义都改掉。

SKU 是怎么标识的 ​

每条 SKU 记的是一组 属性 → 取值,比如:

{ 颜色: 蓝, 尺寸: 大号 }

不能存自由文本

如果 SKU 上挂的是「蓝色」这样的字符串,那么「蓝」和「蓝色」会变成两个东西, 前台的筛选器再也聚合不起来。

所以后台允许你直接打字新建属性和取值,但打进去的会落进属性库 (同名的自动复用,不会建出两条)。你的体感是"随手填",数据仍然是规范的。

最多 3 个销售属性 ​

为什么限制

3 个属性各 5 个取值 = 125 条 SKU,已经很难维护了。再多的话 SKU 数量会爆炸, 你自己也填不完价格和库存。

真需要更多维度,通常说明应该拆成几个商品。

⭐ 改 SKU 时最关键的一条 ​

SKU 按「规格组合」认,不按 id 认

你在 SKU 矩阵页点「生成矩阵」时,前端会重新算一遍所有组合。 系统在保存时是按 颜色=蓝 & 尺寸=大号 这个组合去匹配已有的 SKU, 匹配上就保留它的 id 和库存。

为什么重要:如果按 id 匹配,重新生成矩阵时 id 会丢 —— 那些 SKU 会被当成新的,而购物车里、历史订单里指向老 id 的记录会全部失联。

你需要知道的实际影响:

  • 改价格、改图片、加一个新颜色 → 老 SKU 的库存不会丢
  • 删掉一个取值(比如不卖蓝色了)→ 那条 SKU 会被删,库存归零

商品保存不改库存 ​

保存商品不会修改库存

库存只走「商品 → 库存管理」。

这是刻意的:如果保存商品时顺带写库存,那么你在编辑商品的这几分钟里, 买家下单扣掉的库存会被你的表单值覆盖回去 —— 于是超卖。

新建商品时那个「初始库存」是例外 —— 它只在第一次创建时生效。

库存怎么扣 ​

原子扣减,不会超卖

下单时执行的是「库存够才扣」这一条语句,看影响行数。 不是"先查一下够不够,再扣" —— 那样两个人同时下单就会超卖。

所以你不用担心并发。

接下来 ​

这份文档只讲后台怎么用,不含任何真实密钥