前端对接供应商

供应商申诉优化

首页本月扣款、我的处罚统计/明细/详情(处罚+退款支出+缺货赔付)、质检问题汇总;缺货赔付申诉 complainType=6;运营后台商品申诉 Tab 多类型列表与审核

端
供应商小程序 / 运营后台
后端服务
supplier / admin
状态
已上测
测试分支
supplier/test · bulky-test/admin
需求单
XYLZ-3562
更新
2026-10-29
接口数
10

Markdown 原文(给 AI 用):https://doc.xfun.fun/supplier-punish-center-api.md

说明

XYLZ-3640「供应商申诉调整」(首页质检问题、换货扎数、场次卡口径与跳转、二级类目编码、状态标签、商品全称、客服 ID、凭证选填)的集中说明见 供应商申诉调整 · 前端对接。

总览

端接口用途
供应商端 xm-bulky-supplierPOST /home/supplierMoney首页「我的处罚 —— 本月扣款」:字段 monthPunishAmount
供应商端 xm-bulky-supplierPOST /home/supplierPunishCount首页「本月履约情况 —— 质检问题汇总」:字段 qualityIssueNum
供应商端 xm-bulky-supplierPOST /punish/center/summary我的处罚顶部统计、三大类卡、二级类目卡、「全部类型」下拉
供应商端 xm-bulky-supplierPOST /punish/center/list我的处罚 - 处罚明细(筛选 + 分页)
供应商端 xm-bulky-supplierPOST /punish/center/detail处罚详情页
供应商端 xm-bulky-supplierPOST /home/qualityIssue/summary质检问题汇总页(按月 / 按场次汇总 + 场次卡)
供应商端 xm-bulky-supplierPOST /comment/complain提交申诉:支持处罚(3)、退款支出(2)、缺货赔付(6),凭证选填、申诉理由必填
供应商端 xm-bulky-supplierPOST /comment/complain/cancel撤回申诉(仅处罚申诉)
运营后台 xm-bulky-adminPOST /order/complain/list「商品申诉」Tab 传 complainTypeList: [1,2,6];返回来源标签、缺货赔付信息、可退金额
运营后台 xm-bulky-adminPOST /order/complain/check支持审核缺货赔付申诉(6);2/6 同意金额上限、驳回必填原因

通用约定

sourceType来源sourceId 是提交申诉用的 complainType申诉规则
1处罚(质检、迟到、配货错误等)处罚 ID3处理后 48h 内首诉;首诉驳回后 24h 内可再诉一次;申诉中可撤回
2退款支出(售后单供应商承担)售后单 ID2售后通过后 48h 内,只能申诉 1 次,不可撤回
3缺货赔付(供应商承担)缺货赔付 ID6扣款后 48h 内,只能申诉 1 次,不可撤回

是否可申诉、截止时间都由后端算好(canAppeal / appealDeadline),前端不用自己判断规则。

页面与接口对应

原型页面元素接口 / 字段
02 首页「我的处罚 —— 本月扣款 ¥320.00 >」首页已调用的 /home/supplierMoney 字段 monthPunishAmount(不用另调接口);点击进入我的处罚
02 首页「本月履约情况 —— 质检问题汇总 16 扎 >」首页已调用的 /home/supplierPunishCount 字段 qualityIssueNum(不用另调接口),与质检问题汇总页按月当月「缺货 + 退货 + 换货」扎数一致;点击进入质检问题汇总
01 质检问题汇总「按月 / 按场次」切换④ 入参 statType:1 按月 / 2 按场次
01 质检问题汇总顶部下拉:按月为月份(默认当月),按场次为场次按月传 month;按场次传 roundNo(选项用 roundOptions,首次进入不传,后端取当月最近场次)
01 质检问题汇总汇总卡:售卖 N 扎 / 缺货 / 退货 / 换货 / 共 N 个场次saleNum / lackNum / returnNum / exchangeNum / roundCount,按所选月份或场次统计
01 质检问题汇总「场次质检汇总」场次下拉(按月时)roundOptions;选中后再调 ④ 带 statType=1, roundNo,只返回该场次卡片(汇总仍为整月)
01 质检问题汇总场次卡(商品行默认 3 行,「展开更多(n)」)rounds[],n = items.length - 3
01 质检问题汇总「查看处罚明细 —— 共 5 条处罚 已确认 · ¥120.00 >」punishCount / punishAmount;跳我的处罚质检 Tab,summary 带 statType:2, roundNo,list 带 statType:2, roundNo, category:1
03 我的处罚「按月 / 按场次」切换 + 月份 / 场次下拉① 入参 statType / month / roundNo;场次下拉用 ① 出参 roundOptions;② 明细传同样三个值
03 我的处罚实际处罚、共 N 笔、总处罚、申诉成功① actualAmount / totalCount / totalAmount / appealSuccessAmount,按所选月份或场次统计
03 我的处罚三大类卡(质检/迟到/其他)① categories[].actualAmount / totalCount
03 我的处罚Tab 下二级类目卡(类型统计·实际扣款)① categories[].subCategories[]
03 我的处罚处罚明细 + 三个筛选(全部类型 / 处罚状态 / 申诉状态)② /punish/center/list
04 处罚详情全部字段 + 申诉记录 + 去申诉③ /punish/center/detail
申诉页提交申诉 / 撤回⑤ /comment/complain、/comment/complain/cancel

枚举

类目(category → subCategory → 三级类型)

缺货/退货扎数按类目类型集合统计,只统计质检环节处罚(punish_link=1),人工下发、代卖等其他环节的处罚不计入;条件为 pid=0、data_status=0、handle_status IN (0,1)。换货扎数独立取 exchange_log,19、22 不计扎数。

categorysubCategory三级类型(sourceType / punishType:名称)卡片标题 title
1 质检处罚11 缺货1/1 缺货处罚、1/6 缺货补货、1/9 缺货不补缺货处罚
1 质检处罚12 退货1/7 退货不补、1/8 退货补货、1/11 退货不补转代卖、1/12 退货补货转代卖退货处罚
1 质检处罚14 降级1/13 降1级、1/15 降2级降级处罚
1 质检处罚15 换货配货1/25 换货未换、1/18 换货、1/19 配货错误处罚、1/22 先扫码后配货处罚换货配货处罚
2 迟到处罚21 配货迟到1/14 迟到配货处罚、1/23 代配送货迟到处罚配货迟到处罚
2 迟到处罚22 换货迟到1/20 换货迟到换货迟到处罚
2 迟到处罚23 迟到处罚1/3 迟到处罚迟到处罚
3 其他处罚32 售后处罚2/null 退款支出、3/null 缺货赔付售后处罚
3 其他处罚34 其他处罚1/2 未打勾处罚、1/4 其他处罚、1/16 退款赠花、1/17 超时转代卖及其他未归类类型;以及非质检环节的 1/1、6、7、8、9、11、12、13、15其他处罚

质检类型按处罚环节归类:处罚类型 1、6、7、8、9、11、12、13、15 在质检环节(punish_link=1)和其他环节(人工下发、代卖等)都会出现。只有质检环节的按上表归入「质检处罚」下的缺货 / 退货 / 降级;其他环节的同类型处罚统一归「其他处罚 · 其他处罚(34)」,明细、统计、二级类目卡、typeOptions 同一口径,质检问题汇总的缺货 / 退货扎数也只算质检环节。前端不用判断,按接口返回的 category / subCategory 展示即可。

二级类目 subCategory 有效编码仅以上 9 个,按表中顺序下发。以上树由 ① 的 typeOptions 下发,前端不要写死;「售后处罚」被后台开关关闭时,typeOptions 和 subCategories 里都不会出现 32。

状态

字段取值说明
deductStatus 扣款状态1 待扣款 / 2 已扣款 / 3 已退回待扣款 = 质检处罚待运营审核,不计入统计金额、不可申诉;已退回 = 申诉成功有退款(含部分退回)
appealStatus 申诉状态0 未申诉 / 1 申诉中 / 2 申诉通过 / 3 申诉驳回取最新一条未撤回的申诉

供应商端接口

POST/home/supplierMoney

首页金额接口,其中 monthPunishAmount 用于「本月履约情况 —— 我的处罚 本月扣款 ¥320.00」。

字段类型说明
monthPunishAmountnumber本月扣款 = 我的处罚当月实际处罚,与 /punish/center/summary 按月不传月份时的 actualAmount 一致(不含待扣款)。计算失败时为 null,前端显示「--」或隐藏金额,不影响首页其他数据
text
// 响应 data(仅列出本页相关字段)
{ "dayMoney": 126.90, "...": "...", "monthPunishAmount": 320.00 }

POST/home/supplierPunishCount

首页「本月履约情况 —— 质检问题汇总 N 扎」 读 qualityIssueNum。四个字段固定统计当月,与请求里的 startRoundNo/ endRoundNo 无关;其余字段(stockOut、salesReturnNum 等)口径不同,首页卡片不要用。

字段类型说明
qualityIssueNumint当月质检问题扎数 = qualityLackNum + qualityReturnNum + qualityExchangeNum,与 /home/qualityIssue/summary 按月(statType=1、不传月份)的 lackNum + returnNum + exchangeNum 一致。计算失败时为 null,前端显示「--」,不影响首页其他数据
qualityLackNumint当月质检缺货扎数,= 质检汇总页按月 lackNum
qualityExchangeNumint当月换货要求扎数,等于汇总页 exchangeNum,包含已完成与未完成换货
qualityReturnNumint当月质检退货扎数,= 质检汇总页按月 returnNum
text
// 响应 data(仅列出本页相关字段)
{ "stockOut": 3, "...": "...", "qualityIssueNum": 19, "qualityLackNum": 8, "qualityReturnNum": 8, "qualityExchangeNum": 3 }

POST/punish/center/summary

我的处罚统计,按月或按场次。首页「本月扣款」取 /home/supplierMoney 的 monthPunishAmount,见接口 POST /home/supplierMoney。

请求参数

字段类型必填说明
statTypeint可选统计方式:1 按月(默认)/ 2 按场次
monthstring可选统计月份 2026-10,不传 = 当月
roundNostring可选场次 2026-10-14,传了只统计该场次(从质检汇总页跳转时也传它);statType=2 不传时取所选月份最近一个有处罚的场次

响应 data

字段类型说明
statTypeint实际统计方式(传了 roundNo 即为 2)
month / startRoundNo / endRoundNostring实际统计的月份与场次区间(含);按场次时起止都为该场次
roundNostring按场次时实际统计的场次;所选月份无处罚时为 null
roundOptions[]array所选月份有处罚的场次(倒序),按场次时的场次下拉用
actualAmountnumber实际处罚(顶部大数字、首页本月扣款)= 总处罚 - 申诉成功
totalAmountnumber总处罚
appealSuccessAmountnumber申诉成功(已退回金额)
totalCountint共 N 笔
pendingAmount / pendingCountnumber / int待扣款金额/笔数,不含在上面四个数里,需要时可单独展示
categories[]array固定 3 个一级类目(0 也返回):category, categoryName, actualAmount, totalAmount, appealSuccessAmount, totalCount, subCategories[]
categories[].subCategories[]array该一级下全部二级(0 也返回):subCategory, subCategoryName + 同样 4 个统计字段
typeOptions[]array「全部类型」下拉树:category, categoryName, subCategories[{subCategory, subCategoryName, types[{sourceType, punishType, name}]}]
serverTimestring服务器时间

示例

text
// 请求:按月
{ "statType": 1, "month": "2026-10" }
// 请求:按场次(首次切换不传 roundNo,后端取最近场次)
{ "statType": 2, "roundNo": "2026-10-14" }
// 响应 data(按月)
{
  "statType": 1, "month": "2026-10", "roundNo": null, "roundOptions": ["2026-10-14", "2026-10-12"],
  "startRoundNo": "2026-10-01", "endRoundNo": "2026-10-31",
  "actualAmount": 320.00, "totalAmount": 350.00, "appealSuccessAmount": 30.00, "totalCount": 12,
  "pendingAmount": 0.00, "pendingCount": 0,
  "categories": [{
    "category": 1, "categoryName": "质检处罚",
    "actualAmount": 240.00, "totalAmount": 260.00, "appealSuccessAmount": 20.00, "totalCount": 9,
    "subCategories": [
      { "subCategory": 11, "subCategoryName": "缺货", "actualAmount": 60.00, "totalAmount": 60.00, "appealSuccessAmount": 0.00, "totalCount": 3 },
      { "subCategory": 14, "subCategoryName": "降级", "actualAmount": 40.00, "totalAmount": 40.00, "appealSuccessAmount": 0.00, "totalCount": 2 }
    ]
  }],
  "typeOptions": [{ "category": 1, "categoryName": "质检处罚", "subCategories": [
    { "subCategory": 11, "subCategoryName": "缺货", "types": [
      { "sourceType": 1, "punishType": 6, "name": "缺货补货" },
      { "sourceType": 1, "punishType": 9, "name": "缺货不补" } ] } ] }],
  "serverTime": "2026-10-21 10:00:00"
}

POST/punish/center/list

处罚明细。按处罚时间倒序。

请求参数(包含 ① 的 statType / month / roundNo)

字段类型必填说明 / 对应页面操作
statType / month / roundNoint / string可选同 ①,与统计取同一范围;按场次时建议传 ① 返回的 roundNo
categoryint可选Tab:不传 = 全部,1 质检 / 2 迟到 / 3 其他
subCategoryint可选点击二级类目卡
sourceType + punishTypeint可选「全部类型」下拉选中的三级类型,原样回传 typeOptions 里的两个值(售后两项 punishType 为 null)
deductStatusint可选「处罚状态」下拉:1 待扣款 / 2 已扣款 / 3 已退回
appealStatusint可选「申诉状态」下拉:0 未申诉 / 1 申诉中 / 2 申诉通过 / 3 申诉驳回
pageIndexint可选默认 1
pageSizeint可选默认 20,最大 50

响应 data

{ total, records[], serverTime },records[] 字段:

字段类型说明
itemKeystring列表 key,sourceType_sourceId
sourceType / sourceIdint / long来源与来源 ID,进详情、提交申诉都用它
category / categoryName / subCategory / subCategoryName类目
punishType / typeName三级类型(售后处罚 punishType 为 null)
titlestring卡片标题 = 二级名 + 处罚,如「退货处罚」「换货配货处罚」「迟到处罚」「售后处罚」
roundNo / punishTimestring场次 / 处罚时间
productName / rankNum / num / orderItemUrl商品信息:名称、等级(15 = AE)、扎数、图片;可能为空
skuDesc / productFullNamestring规格属性描述 / 商品名 + A~E级 + 属性值;属性按原顺序用空格拼接,忽略规格中的等级和包装 JSON,例如高原红A级不卷边。质检汇总商品行同样返回
statusTag / statusTagNameint / string统一展示状态,见状态标签表
reasonstring处罚描述(行名显示「处罚描述」)
orderSnstring关联单号(可复制)
punishAmountnumber原处罚金额(卡片金额)
returnedAmountnumber已退回金额
actualAmountnumber实际处罚 = 原金额 - 已退回
deductStatus / deductStatusName扣款状态
appealStatus / appealStatusName申诉状态
complainTypeint提交申诉时传给 /comment/complain 的值(3 / 2 / 6)
canAppealbool当前能否申诉(含再次申诉)
nextAppealNoint可申诉时为第几次申诉(1 首诉 / 2 二诉)
appealDeadlinestring本轮申诉截止时间(倒计时用);已申诉过的售后处罚为 null
canCancelAppealbool能否撤回申诉(仅处罚申诉中)
latestComplainIdlong最新一条申诉 ID,撤回时用
latestComplainobject最新一条申诉:reason, pictures, status, operationContent(驳回原因/审核说明) , returnMoney, operatorId(处理客服 ID,0 或 null 显示「系统」) , createTime, handleTime 等;operatorName 恒为 null

示例

text
// 请求
{ "statType": 1, "month": "2026-10", "category": 1, "sourceType": 1, "punishType": 7,
  "deductStatus": null, "appealStatus": null, "pageIndex": 1, "pageSize": 20 }
// 响应 data
{ "total": 4, "serverTime": "2026-10-21 10:00:00", "records": [{
    "itemKey": "1_922652537", "sourceType": 1, "sourceId": 922652537,
    "category": 1, "categoryName": "质检处罚", "subCategory": 12, "subCategoryName": "退货",
    "punishType": 7, "typeName": "退货不补", "title": "退货处罚",
    "roundNo": "2026-10-09", "punishTime": "2026-10-09 17:16:00",
    "productName": "卡罗拉", "rankNum": 2, "skuDesc": "中熟", "productFullName": "卡罗拉B级中熟",
    "num": 5, "orderItemUrl": "https://…",
    "reason": "花材品质不达标", "orderSn": "T2026100910033425",
    "punishAmount": 45.00, "returnedAmount": 0.00, "actualAmount": 45.00,
    "deductStatus": 2, "deductStatusName": "已扣款", "appealStatus": 0, "appealStatusName": "未申诉",
    "statusTag": 1, "statusTagName": "待申诉",
    "complainType": 3, "canAppeal": true, "nextAppealNo": 1, "appealDeadline": "2026-10-21 17:16:00",
    "canCancelAppeal": false, "latestComplainId": null, "latestComplain": null }] }

POST/punish/center/detail

请求参数

字段类型必填说明
sourceTypeint必填列表项的 sourceType
idlong必填列表项的 sourceId

响应 data = 列表项全部字段 + 以下字段

字段说明原型位置
sourceId处罚编号处罚编号
deductStatusName顶部标签(待扣款/已扣款/已退回)扣款状态标签
title处罚判定处罚判定
roundNo场次场次
shelfDisplay / zoneShelf货架号,如 #07-167(仅处罚有)货架号
zoneShelfList换货迟到处罚涉及的多个货位号货架号(多个)
num / supplierPrice / punishProportion处罚数量 / 供货价 / 处罚比例(0-100,%)处罚数量、供货价、处罚比例
reason处罚描述处罚描述
remark处罚备注(售后为售后单备注)处罚备注
evidencePics相关素材图片:处罚为 pic_url(与旧处罚详情 picUrl 同格式),售后为买家图片 pictures相关素材
platformPics售后平台补充图片(仅退款支出)相关素材
evidenceVideos售后视频(仅退款支出)相关素材
ruleDesc处罚规则说明,为空不展示—
sourceDesc处罚来源,如「质检处罚」「系统自动处罚」「售后处罚」「售后单」「缺货赔付(订单 T…)」,不含姓名,为空不展示—
operatorId / enterTime下发处罚人 ID(质检处罚为质检员)/ 入场时间;显示「客服:ID」,0 或 null 显示「系统」;operatorName 恒为 null客服 ID
complainHistory[]全部申诉记录,按提交时间正序,appealNo 为展示序号;含已撤回记录(delTime 非空 = 已撤回);处理人显示 operatorId(「客服:ID」,0 或 null 显示「系统」),operatorName 恒为 null处罚申诉 - 申诉记录(空数组显示「暂无申诉记录」)
serverTime服务器时间倒计时

处罚不存在、不属于本人、已被运营直接撤销、已取消、处罚金额为 0,或为城市仓处罚、供应商拒不开票处罚时返回失败「处罚不存在」。

POST/home/qualityIssue/summary

请求参数

字段类型必填说明
statTypeint可选统计方式:1 按月(默认)/ 2 按场次
monthstring可选不传 = 当月;传了 roundNo 时取场次所在月
roundNostring可选按月:「场次质检汇总」下拉选中值,rounds 只含该场次,汇总仍为整月;按场次:所选场次,汇总与 rounds 都只算该场次,不传取当月最近场次

响应 data

字段说明
statType实际统计方式
month / roundNo统计月份 / 按场次时实际统计的场次(当月无场次时为 null,按月时为 null)
roundCount统计范围内场次数(按场次为 1 或 0)
saleNum / lackNum / returnNum / exchangeNum统计范围内售卖扎数 / 缺货扎数 / 退货扎数 / 换货扎数(缺货/退货为质检数量,含处罚金额为 0 的)
roundOptions[]所选月份内有售卖、缺货、退货或换货的场次(倒序),场次下拉用
rounds[]场次卡(倒序):roundNo, productKinds(共 X 种商品) , saleNum(售卖 Y 扎) , lackNum, returnNum, exchangeNum(红标「缺货a扎·退货b扎·换货c扎」) , punishCount, punishAmount(共 N 条处罚 已确认 · ¥X:条数为该场次质检处罚,含待扣款;金额仅为已扣款/已退回项的实际处罚,不含 0 元处罚) , items[]
rounds[].items[]商品行,按售卖 → 换货 → 退货 → 缺货扎数倒序,全部返回由前端折叠;商品列展示 productFullName:productId, productName, rankNum, skuDesc, productFullName, saleNum, lackNum, returnNum, exchangeNum
text
// 请求:按月
{ "statType": 1, "month": "2026-10" }
// 请求:按场次
{ "statType": 2, "roundNo": "2026-10-14" }
// 响应 data(按月)
{
  "statType": 1, "month": "2026-10", "roundNo": null, "roundCount": 2, "saleNum": 50, "lackNum": 2, "returnNum": 5, "exchangeNum": 3,
  "roundOptions": ["2026-10-14", "2026-10-12"],
  "rounds": [{
    "roundNo": "2026-10-14", "productKinds": 5, "saleNum": 32, "lackNum": 2, "returnNum": 3, "exchangeNum": 2,
    "punishCount": 5, "punishAmount": 120.00,
    "items": [{ "productId": 1, "productName": "高原红", "rankNum": 1, "saleNum": 8, "lackNum": 1, "returnNum": 1, "exchangeNum": 2, "skuDesc": "卷边", "productFullName": "高原红A级卷边" }]
  }]
}

POST/comment/complain

提交申诉。成功后刷新列表/详情/统计。

字段类型必填说明
idlong必填处罚项的 sourceId
complainTypeint必填处罚项的 complainType(3 处罚 / 2 退款支出 / 6 缺货赔付)
reasonstring必填申诉理由,≤255 字
picUrlstring可选申诉凭证(图片/视频地址 JSON 数组字符串),三种类型都 选填,最多 6 个(前端限制);不传、空串或 [] 均可提交,后端统一存 []
appealDescstring可选诉求说明

缺货赔付申诉(complainType=6)可能的失败提示

POST/comment/complain/cancel

撤回申诉:{ "id": latestComplainId },仅 canCancelAppeal = true 时显示按钮(只有处罚申诉支持撤回)。

列表/详情展示规则

客服只展示 ID:详情 operatorId(下发人)、列表 latestComplain.operatorId 与详情 complainHistory[].operatorId(处理人)显示「客服:ID」,0 或 null 显示「系统」;operatorName 恒为 null;sourceDesc 不含客服或质检员姓名。适用于 /punish/center/* 与 /home/qualityIssue/summary。

状态标签

列表/详情统一读取 statusTag / statusTagName;按下表优先判断待扣款。申诉状态筛选仍用 appealStatus,不增加「已确认」筛选项。驳回后可二诉时仍显示「申诉拒绝」,同时显示再次申诉按钮及倒计时。

条件标签(statusTag / statusTagName)
deductStatus = 1(优先)0 / 空字符串,不展示
appealStatus = 0 && canAppeal1 / 待申诉
appealStatus = 0 && !canAppeal5 / 已确认
appealStatus = 12 / 申诉中
appealStatus = 23 / 申诉成功
appealStatus = 34 / 申诉拒绝

金额

提示条

条件提示
appealStatus = 0 && canAppeal申诉剩余 hh:mm:ss,超时将无法申诉
appealStatus = 1申诉中,等待客服处理
appealStatus = 2申诉成功,款项已退回
appealStatus = 3 && canAppeal首次申诉已拒绝,可再次申诉 + 二次申诉剩余倒计时
appealStatus = 3 && !canAppeal申诉已拒绝(可展示 latestComplain.operationContent 作为原因)
deductStatus = 1待运营审核扣款(不可申诉)

按钮

条件按钮
始终查看详情
canAppeal && appealStatus = 0去申诉
canAppeal && appealStatus = 3再次申诉
canCancelAppeal撤回申诉
说明

倒计时归零后按钮自动隐藏即可;以后端为准,用户此时提交会返回超时提示。

运营后台

POST/order/complain/list

入参(申诉来源相关)

字段类型说明
complainTypeListint[]「商品申诉」Tab 传 [1, 2, 6];与 complainType 同时传时以本字段为准
complainTypeint支持 6(缺货赔付申诉);「售后申诉」Tab 传 2

records[] 字段(申诉来源相关)

字段说明页面列
appealSourceType1 商品申诉 / 2 退款支出申诉 / 3 缺货赔付申诉(其他类型 null)申诉类型/来源
appealSourceStr「商品申诉」「退款支出申诉」「缺货赔付申诉」,直接做彩色标签申诉类型/来源
orderPaidInfo仅 complainType=6:id, orderSn, reasonType, reasonTypeStr(缺货赔付/二次售后/其他) , paidReason, price, xmCoin, deductMoney, refundStatus, createTime, updateTime关联订单/商品/售后
deductMoney仅 2/6:实际扣款金额(2 = 该售后单申诉人承担金额,6 = 赔付金额 + 寻梦币)—
returnedMoney仅 2/6:同一记录已同意退回金额合计—
maxReturnMoney仅 2/6:同意时最多可退 = deductMoney - returnedMoney同意弹窗「最多可退 ¥x」

POST/order/complain/check

操作请求规则
同意(2 / 6){ "id": 1, "status": 2, "returnMoney": "10.00", "reason": "…" }returnMoney 必填且 > 0,不能超过 maxReturnMoney;缺货赔付同意后退回供应商余额(账变「售后承担退回」)
驳回(2 / 6){ "id": 1, "status": 3, "reason": "…" }reason 必填

可能的失败提示

审核后 12 小时内的「撤销」(/order/complain/revoke)也支持类型 6,撤销时会扣回已退金额;canRevoke 字段照常返回。

联调注意