商户上传商品 → 平台审核 → 上架到平台公域(会员端可见可购)的完整链路设计与落地计划
业务目标:打通「商户在商家后台上传商品 → 提交平台审核 → 平台通过 → 上架到平台公域(会员端可见可购)」全链路;平台具备前置审核与治理权;全链路可审计。
范围边界:重新规划商品模块的数据模型、生命周期状态机、权限、接口、前端页面与平台公域目录。商户侧类型/分类/运费仍只读复用平台。uni-app 会员端接入为第二阶段,本阶段先交付接口规范 + 商家/平台后台。
goods / goods_sku / goods_spec+goods_spec_value / goods_gallery+goods_detail_image+goods_video / goods_category+goods_category_rel / goods_type / goods_import_task。
merchant/Goods.php:完整 CRUD + 多规格 SKU + 媒体 + 分类多选 + 运费模板只读复用 + 上下架。admin/Goods.php:list/detail/save/delete/status/category/type/import/export。app/goods/detail、api/goods/detail(老接口,任意商品按 id 返回,未过滤审核/状态);无公域商品列表接口。goods.status 仅 0/1;saveGoods 直接 status=1,新建即默认上架,商户可自放上架,平台无法前置管控。
会员端只能拿"任意商品详情",无"仅已审核+在售"的商品目录与搜索。
无驳回原因留档、无提交/审核/上下架操作审计轨迹。
商户(merchant_id>0)与平台自营(=0)混在同一表,缺"平台公域池 = 已审核&在售"统一定义。
引入两个正交维度:review_status(0 草稿 / 1 待审核 / 2 已通过 / 3 已驳回)与 status(0 下架 / 1 上架,仅 review_status=2 有效)。
可视化规则:平台公域仅展示 review_status = 2 且 status = 1。平台治理可强制下架。草稿/待审核/已驳回禁止直接上架。
goods 表新增:review_status(tinyint,默认0)、review_remark(varchar255)、submitted_at/reviewed_at(datetime)、reviewer_id(bigint)。新建表 goods_audit_log(goods_id / merchant_id / action / operator_id / operator_role / remark / created_at)。迁移脚本 migrate_goods_review.sql 幂等 ALTER + 建表 + 存量在售商品批量置 review_status=2。
商家后台:草稿增删改查、SKU、媒体、分类、运费、预售。
商家后台:提交/撤回/重提、查看状态与驳回原因、通过后的上/下架。
平台后台:待审列表/预览/通过/驳回(填原因)。
平台后台:全量列表、强制下架、违规/类目管控。
公域接口:仅返已审核在售,支持分类/搜索/排序/分页/门店。
商户在售/待审数;平台待审/违规数。
| 方法 | 路由 | 说明 |
|---|---|---|
| POST | goods/submit | 提交审核(draft→pending),校验必填:名称/类型/分类/价格/封面/SKU库存 |
| POST | goods/withdraw | 撤回(pending→draft) |
| POST | goods/resubmit | 重新提交(rejected→pending,保留草稿) |
| GET | goods/review/status | 我的商品各审核状态数量分布 |
| 调整 | goods/create|update | 仅存草稿:status 强制 0 |
| 调整 | goods/status | 仅 review_status=2 允许上下架 |
| 方法 | 路由 | 说明 |
|---|---|---|
| GET | goods/review/list | 审核列表(filter review_status) |
| GET | goods/review/detail | 审核预览(含商家信息) |
| POST | goods/review/approve | pending→approved(写 audit_log,高危) |
| POST | goods/review/reject | pending→rejected(必填 remark) |
| POST | goods/governance/off | 强制下架(高危) |
| GET | goods/platform/list | 平台治理全量列表 |
| 方法 | 路由 | 说明 |
|---|---|---|
| GET | goods/list | 公域目录:仅 review_status=2 & status=1,支持分类/关键词/排序/门店/分页 |
| GET | goods/detail | 已有接口增加校验:非 approved&on 返回"不存在/已下架" |
goods/list + goods/detail。merchant_id 隔离 + 门店 storeScope;下单仅在售商品,新增 review_status=2 约束。合计:约 9.5 人日
merchant_id=0)免审直接 review_status=2。goods:review / goods:governance 为 op2/op3,按需二次密码。review_status=2,避免全部"消失"。MERCHANT_API_BASE)为第二阶段。goods/list 需对 review_status+status+category 建联合索引,并考虑缓存。goods_audit_log 留痕。goods_audit_log 可追踪。