# 供应商 — 首页(移动端 / 小程序) ## 1. 概述 | 项 | 说明 | | --- | --- | | Base Path | `/app/supplier/home` | | 数据表 | `biz_trade_order`、`biz_supplier_settlement`、`biz_entry_isolation`、`biz_entry_isolation_alloc`、`biz_isolation_patrol`、`biz_market_entry`、`biz_market_entry_ear_tag`、`biz_supplier` | | 鉴权 | 需登录(Token) | | 身份 | 当前登录 `sys_user.user_id` 须绑定 `biz_supplier.sys_user_id`(后台「分配账号」) | | 界面参考 | [Snipaste_2026-06-01_21-03-22.jpg](./Snipaste_2026-06-01_21-03-22.jpg) | | 模块索引 | [README.md](./README.md) | 界面 Tab「实时 / 昨日 / 7日 / 30日」与接口 `range` 对应关系: | 界面 | `range` | | --- | --- | | 实时(今日) | `TODAY` | | 昨日 | `YESTERDAY` | | 7日 | `DAYS_7` | | 30日 | `DAYS_30` | ## 2. 首页看板 `GET /app/supplier/home/dashboard` ### 2.1 请求 | 参数 | 位置 | 必填 | 说明 | | --- | --- | --- | --- | | `range` | Query | 否 | `TODAY`(默认)、`YESTERDAY`、`DAYS_7`、`DAYS_30` | ### 2.2 统计口径 **交易数据(随 `range` 切换)** - 订单:仅 **`supplier_id` = 当前供应商** 且 **`del_flag = 0`** 的 `biz_trade_order`。 - 时段按订单 **`create_time`**(下单时间)落在对应自然日区间内统计。 - **7日**:`[今日-6日, 今日]` 共 7 个自然日;**30日**:`[今日-29日, 今日]` 共 30 个自然日。 | 指标 | 规则 | | --- | --- | | 交易金额 | `sum(total_amount)` | | 交易订单数 | `count(*)` | | 支付买家数 | `count(distinct distributor_id)`,且 `order_status = 1`(已支付) | | 交易牦牛数 | `sum(total_heads)` | **结算数据(随 `range` 切换)** - 表:`biz_supplier_settlement`,`supplier_id` = 当前供应商,`del_flag = 0`,**`settlement_status = 1`(已完成)**。 - 时段按 **`settle_finish_time`** 落在对应自然日区间内统计。 | 指标 | 规则 | | --- | --- | | 结算金额 | `sum(payable_amount)` | | 服务费金额 | `sum(service_fee_amount)` | **交易金额趋势(随 `range` 切换)** - 数据源:`biz_trade_order`,按 **`create_time`** 汇总 `total_amount`。 - **今日 / 昨日**:按小时,固定 **24** 个桶(`00:00`~`23:00`),无数据补 0。 - **7日 / 30日**:按自然日连续补点,横轴 `MM-dd`,无数据补 0。 **实时牦牛状态(固定今日,不随 `range` 切换)** | 字段 | 说明 | | --- | --- | | `tradedHeads` | 已交易:今日下单订单 `sum(total_heads)`(`create_time` 为今日) | | `isolationEarTags` | 隔离中:当前处于隔离期内(`entry_time` 日期 ≤ 今日 ≤ `expected_release_date`)的入场隔离耳标去重计数,剔除该供应商关联栏位在 `biz_isolation_patrol` 中 **`sick_dead_qty > 0` 且填写了耳标** 的病死记录 | | `enteredPenEarTags` | 已进栏:今日 `biz_market_entry.entry_time` 的进栏登记关联 `biz_market_entry_ear_tag` **去重耳标数** | | `pendingPayHeads` | 待支付:当前供应商 **`order_status = 0`** 订单的 `sum(total_heads)` | ### 2.3 响应 `data` | 字段 | 类型 | 说明 | | --- | --- | --- | | `range` | string | 请求时段编码 | | `rangeName` | string | 中文:今日 / 昨日 / 7日 / 30日 | | `updatedAt` | string | 统计刷新时间 `yyyy-MM-dd HH:mm:ss` | | `trendGranularity` | string | `HOUR`(今日、昨日)或 `DAY`(7日、30日) | | `tradeSummary` | object | 交易汇总,见下表 | | `settlementSummary` | object | 结算汇总,见下表 | | `amountTrend` | array | 交易金额趋势点 | | `yakStatus` | object | 实时牦牛状态(今日) | **`tradeSummary`** | 字段 | 说明 | | --- | --- | | `totalAmount` | 交易金额(元) | | `orderCount` | 交易订单数 | | `payingBuyerCount` | 支付买家数 | | `totalHeads` | 交易牦牛数(头) | **`settlementSummary`** | 字段 | 说明 | | --- | --- | | `payableAmount` | 结算金额(元) | | `serviceFeeAmount` | 服务费金额(元) | **`amountTrend[]`** | 字段 | 说明 | | --- | --- | | `bucketLabel` | 横轴:`HH:00`(按小时)或 `MM-dd`(按天) | | `amount` | 该时段内订单 `total_amount` 合计(元) | **`yakStatus`** | 字段 | 说明 | | --- | --- | | `tradedHeads` | 已交易(头) | | `isolationEarTags` | 隔离中(耳标数) | | `enteredPenEarTags` | 已进栏(耳标数) | | `pendingPayHeads` | 待支付(头) | ### 2.4 示例 ```http GET /app/supplier/home/dashboard?range=TODAY ``` ```json { "code": 200, "msg": "操作成功", "data": { "range": "TODAY", "rangeName": "今日", "updatedAt": "2026-05-26 16:00:00", "trendGranularity": "HOUR", "tradeSummary": { "totalAmount": 74300, "orderCount": 2, "payingBuyerCount": 2, "totalHeads": 6 }, "settlementSummary": { "payableAmount": 36500, "serviceFeeAmount": 600 }, "amountTrend": [ { "bucketLabel": "00:00", "amount": 0 }, { "bucketLabel": "16:00", "amount": 74300 } ], "yakStatus": { "tradedHeads": 129, "isolationEarTags": 0, "enteredPenEarTags": 30, "pendingPayHeads": 4 } } } ``` ### 2.5 错误说明 | 场景 | 说明 | | --- | --- | | 未绑定供应商 | `当前账号未绑定供应商,无法查看首页统计` | | 非法 `range` | `统计时段仅支持 TODAY、YESTERDAY、DAYS_7、DAYS_30` |