好的,这是一个非常核心的电商业务问题。商品的状态贯穿了从创建到销售、下架乃至删除的整个生命周期。一个设计良好的商品状态机对于电商系统的稳定运营至关重要。
以下是电商项目中常见的商品状态,可以分为几个主要维度:
一、核心生命周期状态(从商家视角)
这些是商品最基本、最常见的一系列状态,通常构成一个状态机。
-
草稿 / 未上架
- 描述:商品信息已创建但尚未完善,或者已保存但不想让前台用户看到。通常用于商家临时保存、待编辑的商品。
- 触发操作:商家新建商品并保存。
-
待审核
- 描述:商品信息填写完毕,商家提交给平台进行审核。在一些平台型电商(如天猫、京东)或对商品资质要求严格的系统中,此状态是必需的。
- 触发操作:商家点击“提交审核”。
-
审核失败 / 驳回
- 描述:平台审核人员发现商品信息有问题(如图片不符、类目错误、资质不全等),驳回修改。
- 触发操作:平台审核人员执行驳回操作。
- 下一状态:通常退回至“草稿”状态,并附带驳回原因。
-
已上架 / 销售中
- 描述:商品通过审核(或无需审核),已经在前台网站/APP上展示,用户可以看到并购买。这是商品的正常销售状态。
- 触发操作:商家点击“上架”或审核通过后自动上架。
-
已下架 / 仓库中
- 描述:商品从前台隐藏,用户无法搜索和购买,但商品信息和销售数据等均被保留。商家可以随时再次上架。常见于季节性商品、暂时缺货或需要修改的商品。
- 触发操作:商家手动点击“下架”。
-
强制下架
- 描述:平台由于违规、投诉等原因,强制将商品下架。与商家自主下架不同,此状态下商家可能无法自行重新上架,需要申诉或整改。
- 触发操作:平台管理员执行。
二、库存与销售相关状态
这些状态通常与核心状态并行存在,影响商品的可售卖性。
-
有库存
- 描述:商品库存数量大于0,可以正常销售。
-
缺货 / 无库存
- 描述:商品库存为0。此时,即使商品处于“已上架”状态,用户也无法下单购买(或可以下单但无法支付)。系统可以设置自动将缺货商品下架。
- 下一状态:补货后,自动或手动恢复为“有库存”。
-
预售
- 描述:一种特殊状态,商品尚未正式入库或生产,但允许用户提前下单购买。会有明确的预售截止时间和发货时间。
三、逻辑状态(通常对用户不可见)
这些状态更多是后台逻辑上的标识。
-
已删除 / 回收站
- 描述:商品被删除。通常不是物理删除,而是逻辑删除(在数据库中用
is_deleted字段标记)。商品数据依然保留,便于数据统计和恢复。处于此状态的商品完全从前台和后台列表(回收站除外)中消失。 - 注意:已删除的商品如果曾有订单记录,通常不允许被物理删除。
- 描述:商品被删除。通常不是物理删除,而是逻辑删除(在数据库中用
-
锁定库存
- 描述:这不是商品主状态,而是库存的一个子状态。当用户下单但未支付时,对应的商品库存会被锁定,防止超卖。锁定库存会计入“已占用的库存”,但不计入“可用库存”。
状态流转示意图
一个典型的状态流转可以用下图表示:
graph TD
A[草稿] -->|提交审核| B(待审核)
B -->|审核通过| C[已上架/销售中]
B -->|审核驳回| A
C -->|商家下架| D[已下架/仓库中]
D -->|商家上架| C
C -->|库存为0| E[缺货]
E -->|补充库存| C
D -->|删除| F[已删除/回收站]
F -->|恢复| D
C -.->|平台强制| G[强制下架]

实际业务中的扩展与考量
- 定时上架/下架:商品可以有一个“定时上架”状态,在到达设定时间后自动变为“已上架”。同理也有“定时下架”。
- 商品组合/套装:套装商品的状态可能依赖于其子商品的状态。
- 地区性销售:同一商品在不同地区(如不同仓库覆盖范围)可能有不同的上架/下架状态。
- 活动状态:参与秒杀、拼团等特定活动的商品,在活动期间可能会有独立的状态标识,影响其价格和购买流程。
总结:在设计电商系统的商品状态时,需要根据业务的复杂程度(是自营还是平台型?是否需要强审核?)来定义合适的状态机。清晰的状态划分和流转逻辑是保证电商后台操作顺畅、数据准确的基础。