冷库库存转代卖 · 前端对接文档

客服将客户不想要的冷库暂存花材转为平台代卖。运营后台新增 2 个接口,仓库小程序在现有出库流程上增加最终扎数确认。所有接口均为 POST + JSON,通用约定(登录态、返回结构 R<T>)与现有冷库暂存接口一致。

业务流程与规则

两阶段流程

  • ① 运营后台(客服):暂存列表操作「转代卖」→ 先调 预填信息接口 弹窗展示可转扎数上限 → 客服填写扎数、备注后调 确认转代卖,生成一条待出库的转代卖任务并锁定库存。
  • ② 仓库小程序:在暂存出库列表看到该任务(outType=3),点击出库时必须填写最终出库扎数(其余照片必传、备注选填等同现有出库)。
  • 待出库期间客服可撤销(复用现有撤销接口),撤销后库存解锁:包裹回暂存中、裸花回待发货。
权限复用现有权限点:预填信息 = 冷库查看权限,确认转代卖 = 冷库操作权限,不新增权限项。

两种暂存类型的口径差异

裸花暂存(storeType=2)包裹暂存(storeType=1)
转出粒度支持部分转出,按扎数扣减整库存转出,全部在库包裹一起锁定
可转上限(预填接口 maxBunchNum当前剩余暂存扎数,必有值发货单总扎数(打包时点快照),可能为 null —— 前端显示「-」且提交时不做前端校验
客服填写扎数校验≤ 剩余暂存扎数快照有值时 ≤ 快照;快照为 null 不校验
仓库出库最终扎数≤ 客服审批扎数,且 ≤ 当前剩余;扣完出清,有剩余则回「待发货」继续暂存(需客服重新确认发货)≤ 客服审批扎数;包裹全部置已出库
不支持转代卖的情况城市仓货架暂存(ware_id>0,跨多客户)直接拦截;已存在待出库任务的库存需先完成或撤销。

枚举变更速查

outType 出库方式(新增值)

1 关联发货单 2 直接出库 3 转代卖(新增)

历史出库记录、暂存出库列表等所有带 outType 的接口天然支持值 3,筛选参数无需改动。任务状态枚举不变:10 待出库20 已出库30 已撤销

运营后台端(客服)

POST新增/cold/convert-sale/info转代卖预填信息

点「转代卖」弹窗前调用,返回暂存类型与可转扎数上限。同时做资格预检——不满足条件(城市仓货架、已有待出库任务、没有在库包裹等)会直接报错,前端 toast 错误信息即可,避免弹窗填完提交才被拒。

请求参数

字段类型必填说明
coldStockIdLong冷库库存 id(暂存列表行的 id)

返回 data

字段类型说明
storeTypeInteger暂存类型 1:包裹 2:裸花
maxBunchNumInteger可转扎数上限。裸花=当前剩余暂存扎数;包裹=发货单总扎数快照,可为 null(前端显示「-」,输入框不做上限校验)

示例

// 请求
{ "coldStockId": 1024 }

// 返回(裸花)
{ "code": 200, "data": { "storeType": 2, "maxBunchNum": 15 } }

// 返回(包裹,快照查不到)
{ "code": 200, "data": { "storeType": 1, "maxBunchNum": null } }

POST新增/cold/convert-sale确认转代卖

生成待出库的转代卖任务。包裹暂存会锁定该库存全部在库包裹;实际出库由仓库小程序完成。返回 data 为任务 id。

请求参数

字段类型必填说明
coldStockIdLong冷库库存 id
bunchNumInteger转代卖扎数,正整数(≥1)
remarkString备注(转代卖原因或操作说明),≤255 字

业务报错文案(toast 展示即可)

  • 「城市仓货架暂存不支持转代卖」
  • 「存在待出库任务,请先完成或撤销后再转代卖」(包裹)
  • 「该库存没有可转代卖的在库包裹」(包裹)
  • 「转代卖扎数不能大于发货单总扎数X扎」(包裹,快照有值时)
  • 「转代卖扎数不能大于当前剩余暂存X扎」(裸花)

示例

// 请求
{ "coldStockId": 1024, "bunchNum": 10, "remark": "客户不要了,转平台代卖" }

// 返回
{ "code": 200, "data": 88 }   // data = 出库任务 id

POST复用/cold/out/cancel撤销出库任务

转代卖任务待出库期间的撤销完全复用现有撤销接口,入参出参不变。撤销后:包裹解锁回「暂存中」,裸花库存回「待发货」;历史出库记录中该任务显示 outType=3 及撤销信息。

POST字段变更/cold/out/records历史出库记录

入参不变(outType 筛选传 3 即可查转代卖记录)。返回行新增/调整字段:

字段类型变更说明
finishBunchNumInteger新增仓库确认最终出库扎数(转代卖任务,已出库后有值;其他任务为 null)
outTypeInteger枚举扩展1:关联发货单 2:直接出库 3:转代卖
outBunchNumInteger语义扩展原为裸花暂存出库扎数;转代卖任务为客服填写的转代卖扎数,包裹暂存也有值

POST字段变更/cold/stock/page暂存列表

返回行新增字段,用于在列表上给待出库的转代卖库存打标签:

字段类型变更说明
outTaskTypeInteger新增最新任务的出库方式 1:关联发货单 2:直接出库 3:转代卖(无任务时为 null;=3 时前端显示「转代卖」标签)

仓库小程序端

POST字段变更/cold/mini/out/finish点击出库

入参新增 bunchNum。任务为转代卖(outType=3)时前端必须让仓库人员填写最终出库扎数;其他任务类型不传。照片必传、备注选填等原有规则不变。

入参新增字段

字段类型必填说明
bunchNumInteger转代卖任务必填最终出库扎数,正整数。裸花任务出库后:扣完 → 库存出清;有剩余 → 剩余扎数回「待发货」继续暂存

业务报错文案

  • 「请填写最终出库扎数」(转代卖任务未填或 ≤0)
  • 「最终出库扎数不能大于客服审批的转代卖扎数X扎」
  • 「最终出库扎数不能大于当前剩余暂存扎数」(裸花,并发或超量)

示例

// 转代卖任务出库请求
{
  "outTaskId": 88,
  "imageUrls": "https://cdn.example.com/a.jpg,https://cdn.example.com/b.jpg",
  "remark": "已搬到代卖区",
  "bunchNum": 8
}

POST字段变更/cold/mini/out/page暂存出库列表

入参不变,转代卖任务会自然出现在待出库/已出库列表中。返回行新增/调整字段:

字段类型变更说明
finishBunchNumInteger新增仓库确认最终出库扎数(转代卖任务,已出库后有值)
outTypeInteger枚举扩展1:关联发货单 2:直接出库 3:转代卖(=3 时点击出库需弹出最终扎数输入)
outBunchNumInteger语义扩展转代卖任务为客服填写的转代卖扎数(包裹暂存也有值),可作为最终扎数输入框的默认值/上限提示
转代卖任务展示建议待出库卡片显示「转代卖 · 客服审批 X 扎」;已出库卡片显示「转代卖 · 实际出库 finishBunchNum 扎」。物流相关字段(linkSendNoexpressName)转代卖任务为空。