前端对接供应商

供应商画像

运营后台供应商列表/详情右侧抽屉:基础信息与标签编辑、经营概览与履约售后(近7/30天环比)、处罚明细、品类看板及明细、统计口径文案

端
运营后台
后端服务
admin
状态
已上测
测试分支
bulky-test/admin
更新
2026-10-28
接口数
7

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

总览

交互以原型 供应商画像-V1.1.html 为准。所有接口在运营后台服务(admin)下,需登录 token。

#接口用途何时调
①POST /supplier/profile/base头部基础信息 + 标签打开抽屉;保存标签后可用 ⑦ 的返回直接刷新
②POST /supplier/profile/metrics经营概览 + 履约与售后(7 天、30 天一次返回)打开抽屉
③POST /supplier/profile/punishPage处罚明细弹窗(分页)点「查看明细」/翻页
④POST /supplier/profile/category品类数据(主营/优选/品质优选)Top3、在售主力花材 Top3、增长最快品类 Top3打开抽屉
⑤POST /supplier/profile/categoryPage品类数据明细 / 在售主力花材明细弹窗(排序 + 分页)点「查看明细」/切换/排序/翻页
⑥POST /purchaser/userTag/list(已有)系统标签库打开「编辑标签」弹窗
⑦POST /supplier/profile/tagSave保存标签(已有标签 + 新建标签一次提交)点「保存标签」

通用约定

加载时序

点「画像」 → 并发 ① base + ② metrics + ④ category → 7/30 天切换:纯前端切 ② 的 "7"/ "30",默认近 7 天

「处罚次数 · 查看明细」 → ③ period = 当前履约卡片选中的 7/30

「品类数据 · 查看明细」 → ⑤ viewType = 当前分段(main/prefer/quality) → 「在售主力花材 · 查看明细」 → ⑤ viewType=active

「编辑标签」 → ⑥ 拉标签库(过滤 type=2) → 前端维护草稿 → 「保存标签」调 ⑦

枚举

标签分类 tagCategory(按分类显示不同颜色徽标)

code名称原型样式类
risk风险预警sp-tag-risk
attention需关注sp-tag-attention
action需行动sp-tag-action
profile客户画像sp-tag-profile
preference偏好标签sp-tag-preference
promotion推广属性sp-tag-promotion
other其他sp-tag-other(未知 code 也按其他显示)

合作状态 cooperateStatus

直接展示 cooperateStatusName 即可:0 未认证 / 1 待审核 / 2 正常 / 3 审核不通过 / 4 已清退 / 5 已冻结 / -100 已删除。

品类视图 viewType

main 主营品类 · prefer 优选 · quality 品质优选 · active 在售主力花材

等级 rankNum

1~6 对应 A/B/C/D/E/O,可拼在商品名后(如「红玫瑰 A级」)。

接口

POST/supplier/profile/base基础信息与标签

入参

json
{ "supplierId": 10002 }

出参 data

字段类型说明
statDatedate数据截至日(昨天)
supplierId / supplierNamelong / string供应商 ID / 名称
loginTelstring手机号
cooperateStatus / cooperateStatusNameint / string合作状态,见枚举
enterTimedatetime入驻时间(审核通过时间,无则注册时间),展示到日期
lastSellTimedatetime | null最近动销时间;null 显示「—」
tagList[]array全部标签(≤ 8 个):tagId、tagName、tagCategory
json
{
  "statDate": "2026-10-25", "supplierId": 10002, "supplierName": "云岭花卉合作社",
  "loginTel": "18756300314", "cooperateStatus": 2, "cooperateStatusName": "正常",
  "enterTime": "2024-03-18 10:00:00", "lastSellTime": "2026-10-25 14:26:00",
  "tagList": [ { "supplierId": 10002, "tagId": 1, "tagName": "玫瑰主供", "tagCategory": "profile" } ]
}

POST/supplier/profile/metrics经营概览 + 履约与售后

入参

json
{ "supplierId": 10002 }

出参结构

business、service 都是以 "7"、"30"(字符串)为 key 的对象。带环比的指标统一为 指标对象:

指标对象字段说明
current近 N 天值
previous上 N 天值(展示「上N天xx」)
delta环比。数量/金额类:百分比(%);比率类:百分点差。previous=0 的数量/金额类为 null,显示「—」

business["7" | "30"](经营概览)

字段页面文案单位delta 类型
sellDays近N天动销天数天%
sellNum近N天销售扎数扎%
sellAmount近N天销售金额元%

service["7" | "30"](履约与售后)

字段页面文案类型说明
afterSaleAmount近N天售后金额指标对象元;delta 为 %
afterSaleRate近N天售后率指标对象%;delta 为 百分点(「↑ 0.3 个百分点」)
afterSaleNum / afterSaleCount售后率下方「· 1,459 扎 / 86 单」number近 N 天售后扎数 / 售后单数(无环比)
lackRate近N天缺货率指标对象%;delta 为百分点
lowerRankRate近N天降级率指标对象%;delta 为百分点
punishCount近N天处罚次数number无环比;旁边「查看明细」

顶层

statDate 数据截至日;totalPunishCount 历史累计处罚次数(不随 7/30 变化)。

json
{
  "statDate": "2026-10-25",
  "business": {
    "7":  { "sellDays": { "current": 6, "previous": 5, "delta": 20.0 },
            "sellNum":  { "current": 9200, "previous": 8100, "delta": 13.6 },
            "sellAmount": { "current": 138000.00, "previous": 123000.00, "delta": 12.2 } },
    "30": { ... }
  },
  "service": {
    "7":  { "afterSaleAmount": { "current": 4680.00, "previous": 4440.00, "delta": 5.4 },
            "afterSaleRate":   { "current": 2.70, "previous": 2.90, "delta": -0.2 },
            "afterSaleNum": 320, "afterSaleCount": 19,
            "lackRate":      { "current": 0.90, "previous": 1.20, "delta": -0.3 },
            "lowerRankRate": { "current": 0.60, "previous": 0.80, "delta": -0.2 },
            "punishCount": 4 },
    "30": { ... }
  },
  "totalPunishCount": 27
}

POST/supplier/profile/punishPage处罚明细

入参

字段必填说明
supplierId必填
period可选只允许 7 / 30,默认 30;传履约卡片当前选中的周期
pageNum可选默认 1
pageSize可选固定 10,传其他值会报错

records[](按处罚时间倒序)

字段说明页面列
punishTypeName处罚类型名称处罚类型
punishTime处罚时间处罚时间(左对齐)
punishPrice处罚金额(元)处罚金额(左对齐)
id / punishType / roundNo / orderSn / remark处罚 ID / 类型 code / 场次 / 订单号 / 处罚描述原型未展示,按需使用
json
{ "index": 1, "size": 10, "total": 16, "records": [
  { "id": 1, "punishType": 1, "punishTypeName": "缺货处罚", "punishTime": "2026-10-18 09:32:00",
    "punishPrice": 800.00, "roundNo": "2026-10-18", "orderSn": "...", "remark": "..." } ] }

total 与指标里的 punishCount(同周期)一致;弹窗副标题「共 N 条 · 每页 10 条」用 total。

POST/supplier/profile/category品类看板

入参

json
{ "supplierId": 10002 }

出参 data

字段说明
main / prefer / quality品类数据三个分段的 Top3(近30天销售扎数降序),元素为 商品对象
active在售主力花材 Top3(近7天销售扎数降序);其中 sellNum 为 近7天,afterSaleRate 为近30天
growth[]增长最快品类 Top3(按 diffNum 降序,含负增长;近 14 天有销量的品类不足 3 个时不足 3 条):secondId、secondName 品类名、recentNum 近7天、previousNum 上7天、diffNum 扎数差
mainTotal / preferTotal / qualityTotal / activeTotal各视图完整条数(明细弹窗「共 N 个品类」也可直接用 ⑤ 的 total)
statDate数据截至日

商品对象(④ ⑤ 共用)

字段说明
productId商品 ID
productName / rankNum商品名称 / 等级
sellNum销售扎数(main/prefer/quality 近30天;active 近7天)
afterSaleRate近30天售后率(%)
preferFlag / qualityFlag当前是否优选 / 品质优选(1 是)
json
{
  "statDate": "2026-10-25",
  "main": [ { "productId": 1, "productName": "红玫瑰", "rankNum": 1, "sellNum": 12800, "afterSaleRate": 2.60, "preferFlag": 1, "qualityFlag": 0 } ],
  "prefer": [ ... ], "quality": [ ... ], "active": [ ... ],
  "growth": [ { "secondId": 9, "secondName": "绣球", "recentNum": 1760, "previousNum": 980, "diffNum": 780 } ],
  "mainTotal": 8, "preferTotal": 6, "qualityTotal": 6, "activeTotal": 6
}

POST/supplier/profile/categoryPage品类明细

入参

字段必填说明
supplierId必填
viewType可选main(默认)/ prefer / quality / active
sortBy可选sales 按销售扎数(默认)/ afterSaleRate 按售后率;均为降序
pageNum / pageSize可选同 ③,pageSize 固定 10

出参

{ index, size, total, records: [商品对象] }。sortBy=sales 时第 1 页前 3 条与 ④ 的 Top3 一致。

POST/purchaser/userTag/list系统标签库(已有接口)

无入参。返回全部标签 [{ id, type, tagCategory, name }],前端过滤 type == 2(供应商标签)。

POST/supplier/profile/tagSave保存标签

入参

字段必填说明
supplierId必填
tagIdList必填保存后该供应商的 全部已有标签 id(从标签库选的 + 原来保留的);传 [] 表示清空
newTagList可选手动新增的标签 [{ name, tagCategory }];name 去首尾空格后 1~5 个字,tagCategory 必选
json
{
  "supplierId": 10002,
  "tagIdList": [1, 5, 9],
  "newTagList": [ { "name": "冷链配送", "tagCategory": "other" } ]
}

出参

供应商对象,取 supplierTagList[](tagId、tagName、tagCategory)刷新抽屉头部标签。

规则

错误文案(直接 toast)

「每个供应商最多 8 个标签」「标签名称最多 5 个字」「标签名称不能为空」「请选择标签分类」「标签不存在或不是供应商标签:{id}」;5 秒内重复提交会报重复提交。

展示规则

「统计口径」弹窗文案

抽屉右上角「统计口径」入口,静态文案(与后端实现一致,可直接使用):

指标口径
动销天数统计周期内有交易的场次数
销售扎数同供应商列表/详情「近30天销售扎数」口径(已付款、已发货、已完成订单的花材扎数)
销售金额统计周期内供货金额(以供货价计算)
售后金额统计周期内已发货订单产生的售后中,供应商承担的部分
售后率售后金额 / 销售金额
缺货率 / 降级率按花材数量统计:缺货或降级扎数 / 统计周期内销售扎数
处罚次数统计处罚类型:缺货处罚、迟到处罚、城市仓处罚、换货未换、缺货补货、缺货不补、退货不补、退货补货、退货转代卖处罚、退货补货转代卖处罚、降一级处罚、降二级处罚、超时转代卖、迟到未配货、配错货处罚、其它
品类数据主营品类:按近30天销售扎数排序,看板展示前 3,弹窗查看更多;优选:当前是优选的商品;品质优选:当前是品质优选的商品
在售主力花材当前上架的商品,按近7天销售扎数排序,看板展示前 3,弹窗查看更多
增长最快品类以 7 天为周期每天滚动,比较品种(不分等级)近 7 天与上 7 天的销售扎数,取增量最大的 3 个;没有增长的品类时也展示,增量为负数

统计周期均以昨天为截止日,今天的场次不计入。

联调注意

注意

供应商不存在时 ①~⑤ 返回 code != 0(供应商不存在),toast 后关闭抽屉即可。