# 承销商 — 首页(移动端 / 小程序) ## 1. 概述 | 项 | 说明 | | --- | --- | | Base Path | `/app/distributor/home` | | 数据表 | `biz_trade_order`、`biz_distributor` | | 鉴权 | 需登录(Token) | | 身份 | 当前登录 `sys_user.user_id` 须绑定 `biz_distributor.sys_user_id`(后台「分配账号」) | 界面 Tab「实时 / 昨日 / 7日 / 30日」与接口 `range` 对应关系: | 界面 | `range` | | --- | --- | | 实时(今日) | `TODAY` | | 昨日 | `YESTERDAY` | | 7日 | `DAYS_7` | | 30日 | `DAYS_30` | ## 2. 首页看板 `GET /app/distributor/home/dashboard` 一次请求返回**当前 `range` 时段**的汇总指标与金额趋势;小程序四个 Tab(今日 / 昨日 / 7日 / 30日)分别传对应 `range` 各请求一次。 | 需求项 | 实现 | | --- | --- | | 分时段查 `biz_trade_order`(承销商=本人) | `range` + 当前登录绑定的 `distributor_id` | | 累计下单数 / 采购总金额 / 已购牦牛数 | `summary.orderCount` / `totalAmount` / `totalHeads` | | 订单完成率 | `summary.completionRate`(已完成 ÷ 下单数) | | 成交供应商数 | `summary.supplierCount`(已完成订单 `supplier_id` 去重) | | 近期交易均价 | `summary.avgUnitPrice`(总金额 ÷ 头数) | | 今日/昨日金额趋势(按小时) | `trendGranularity=HOUR`,`amountTrend` 24 点 | | 7日/30日金额趋势(按天) | `trendGranularity=DAY`,连续自然日补零 | ### 2.1 请求 | 参数 | 位置 | 必填 | 说明 | | --- | --- | --- | --- | | `range` | Query | 否 | `TODAY`(默认)、`YESTERDAY`、`DAYS_7`、`DAYS_30` | ### 2.2 统计口径 - 仅统计 **`biz_trade_order.distributor_id` = 当前承销商** 且 **`del_flag = 0`** 的订单。 - 时段按订单 **`create_time`**(下单时间)落在对应自然日区间内统计(今日/昨日为当日 00:00:00~23:59:59)。 - **7日**:`[今日-6日, 今日]` 共 7 个自然日;**30日**:`[今日-29日, 今日]` 共 30 个自然日。 - **已完成**:`order_status = '1'`。 ### 2.3 响应 `data` | 字段 | 类型 | 说明 | | --- | --- | --- | | `range` | string | 请求时段编码 | | `rangeName` | string | 中文:今日 / 昨日 / 7日 / 30日 | | `updatedAt` | string | 统计刷新时间 `yyyy-MM-dd HH:mm:ss` | | `trendGranularity` | string | `HOUR`(今日、昨日)或 `DAY`(7日、30日) | | `summary` | object | 汇总指标,见下表 | | `amountTrend` | array | 交易金额趋势点,见下表 | **`summary`** | 字段 | 说明 | | --- | --- | | `orderCount` | 累计下单数(时段内全部订单笔数) | | `totalAmount` | 采购总金额(元,时段内 `total_amount` 合计) | | `totalHeads` | 已购牦牛数(头,时段内 `total_heads` 合计) | | `completionRate` | 订单完成率(%),已完成笔数 ÷ 下单数;下单数为 0 时为 0 | | `supplierCount` | 成交供应商数(时段内**已完成**订单的 `supplier_id` 去重计数) | | `avgUnitPrice` | 近期交易均价(元/头),`totalAmount / totalHeads`;头数为 0 时为 0 | **`amountTrend[]`** | 字段 | 说明 | | --- | --- | | `bucketLabel` | 横轴:`HH:00`(按小时)或 `MM-dd`(按天) | | `amount` | 该时段内订单 `total_amount` 合计(元) | - **今日 / 昨日**:固定 **24** 个小时桶(`00:00`~`23:00`),无数据补 0。 - **7日 / 30日**:按自然日连续补点,无数据补 0。 ### 2.4 示例 ```http GET /app/distributor/home/dashboard?range=TODAY ``` ```json { "code": 200, "msg": "操作成功", "data": { "range": "TODAY", "rangeName": "今日", "updatedAt": "2026-06-01 21:00:00", "trendGranularity": "HOUR", "summary": { "orderCount": 2, "totalAmount": 36800.00, "totalHeads": 3, "completionRate": 50.0, "supplierCount": 1, "avgUnitPrice": 12266.67 }, "amountTrend": [ { "bucketLabel": "00:00", "amount": 0 }, { "bucketLabel": "13:00", "amount": 36800.00 } ] } } ``` ### 2.5 常见失败 | `msg` | 说明 | | --- | --- | | 当前账号未绑定承销商,无法查看首页统计 | 登录用户未关联承销商主档 | | 统计时段仅支持 TODAY、YESTERDAY、DAYS_7、DAYS_30 | `range` 非法 | ## 3. 前端对接要点 1. 切换 Tab 时带对应 `range` 重新请求本接口。 2. 金额展示「万元」由前端将 `totalAmount`、`amount` 除以 10000 格式化;接口统一返回 **元**。 3. 折线图:`trendGranularity=HOUR` 用 `amountTrend` 画 24 小时轴;`DAY` 用按天序列。 4. 关联模块见 [README.md](./README.md)、[行情接口说明.md](./行情接口说明.md)。