ysdp-juntechysdp/客运页面API接口文档.md

483 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 客运页面 API 接口文档
## 📌 文档说明
本文档用于记录**客运页面Traffic** 所有后端 API 接口的详细信息,包括接口地址、请求参数、返回数据格式及测试方法。
---
## 🔧 基础配置
### 接口基础信息
| 项目 | 说明 |
|-----|------|
| **Controller 类名** | `TrafficApiController` |
| **基础路径** | `/api/traffic` |
| **请求方式** | `POST` |
| **Content-Type** | `application/json` |
| **鉴权方式** | Header 中携带 `token` |
| **加密方式** | SM4根据配置文件决定是否启用 |
### 测试环境配置
**开发环境地址示例:**
```
http://192.168.16.193:8888/juntech-ysdp/api/traffic/{接口路径}
```
**测试工具推荐:**
- Postman
- Apifox
- cURL
---
## 📡 接口列表
### 1. 获取进出站客流排名 TOP10
#### 接口信息
| 项目 | 内容 |
|-----|------|
| **接口名称** | 获取进出站客流排名TOP10 |
| **接口路径** | `/api/traffic/getInOutStationRank/v1` |
| **请求方式** | `POST` |
| **接口说明** | 查询单线路站点非换乘站的客流排名TOP10按今日客流量降序排列 |
| **适用页面** | Traffic1 组件 |
#### 请求示例
**请求地址:**
```
POST http://192.168.16.193:8888/juntech-ysdp/api/traffic/getInOutStationRank/v1
```
**请求 Headers**
```json
{
"Content-Type": "application/json",
"token": "your-token-here"
}
```
**请求 Body**
```json
{}
```
> 注:该接口无需传参,自动查询当天数据
#### 返回参数
**成功返回示例:**
```json
{
"success": true,
"code": 200,
"msg": "请求成功!",
"data": [
{
"lineId": "03",
"stationId": "0313",
"stationName": "上海火车站",
"total": "8.40",
"compareTotal": "6.20",
"sortNo": null
},
{
"lineId": "07",
"stationId": "0753",
"stationName": "静安寺",
"total": "7.80",
"compareTotal": "6.50",
"sortNo": null
}
]
}
```
**返回字段说明:**
| 字段名 | 类型 | 说明 |
|-------|------|------|
| `success` | Boolean | 请求是否成功 |
| `code` | Integer | HTTP状态码200表示成功 |
| `msg` | String | 返回消息 |
| `data` | Array | 站点排名数据列表 |
| `data[].lineId` | String | 线路编号(单线路,如 "03" |
| `data[].stationId` | String | 站点ID |
| `data[].stationName` | String | 站点名称 |
| `data[].total` | String | 今日客流量(单位:万人次) |
| `data[].compareTotal` | String | 对比日客流量(单位:万人次) |
**业务逻辑说明:**
- 只返回 `lineId` 不含逗号的站点(单线路站点 = 进出站)
- 自动排除指定的不统计站点如0316-0324等
- 统计时段:当日 5:00 - 24:00
- 对比日期:优先读取 `ys_operate_manager` 表的 `compareDate` 字段,否则默认为前一天
---
### 2. 获取换乘站客流排名 TOP10
#### 接口信息
| 项目 | 内容 |
|-----|------|
| **接口名称** | 获取换乘站客流排名TOP10 |
| **接口路径** | `/api/traffic/getTransferStationRank/v1` |
| **请求方式** | `POST` |
| **接口说明** | 查询多线路换乘站的客流排名TOP10按今日客流量降序排列 |
| **适用页面** | Traffic2 组件 |
#### 请求示例
**请求地址:**
```
POST http://192.168.16.193:8888/juntech-ysdp/api/traffic/getTransferStationRank/v1
```
**请求 Headers**
```json
{
"Content-Type": "application/json",
"token": "your-token-here"
}
```
**请求 Body**
```json
{}
```
#### 返回参数
**成功返回示例:**
```json
{
"success": true,
"code": 200,
"msg": "请求成功!",
"data": [
{
"lineId": "01,03,15",
"stationId": "0115",
"stationName": "上海南站",
"total": "15.80",
"compareTotal": "12.30",
"sortNo": null
},
{
"lineId": "01,09,11",
"stationId": "0118",
"stationName": "徐家汇",
"total": "14.20",
"compareTotal": "11.80",
"sortNo": null
}
]
}
```
**返回字段说明:**
| 字段名 | 类型 | 说明 |
|-------|------|------|
| `data[].lineId` | String | 线路编号(多线路,用逗号分隔,如 "01,03,15" |
| 其他字段 | - | 同接口1 |
**业务逻辑说明:**
- 只返回 `lineId` 包含逗号的站点(多线路站点 = 换乘站)
- 其他逻辑同接口1
---
### 3. 清理客运页面接口缓存
#### 接口信息
| 项目 | 内容 |
|-----|------|
| **接口名称** | 清理客运页面接口缓存 |
| **接口路径** | `/api/traffic/cleanCache` |
| **请求方式** | `POST` |
| **接口说明** | 清理所有客运页面相关的 Redis 缓存 |
| **适用场景** | 数据更新后需要立即刷新缓存时使用 |
#### 请求示例
**请求地址:**
```
POST http://192.168.16.193:8888/juntech-ysdp/api/traffic/cleanCache
```
**请求 Headers**
```json
{
"Content-Type": "application/json",
"token": "your-token-here"
}
```
**请求 Body**
```json
{}
```
#### 返回参数
**成功返回示例:**
```json
{
"success": true,
"code": 200,
"msg": "请求成功!",
"data": "缓存清理成功"
}
```
**业务逻辑说明:**
- 清理所有以 `api_traffic_*` 为前缀的 Redis 缓存键
- 包括:进出站排名缓存、换乘站排名缓存等所有客运页面接口的缓存
---
## 🧪 测试指南
### Postman 测试步骤
#### 1. 导入接口
**方式一:手动创建**
1. 打开 Postman新建请求
2. 设置请求方式为 `POST`
3. 输入接口地址,例如:
```
http://192.168.16.193:8888/juntech-ysdp/api/traffic/getInOutStationRank/v1
```
4. 添加 Headers
- Key: `Content-Type`, Value: `application/json`
- Key: `token`, Value: `your-token-value`
5. Body 选择 `raw` + `JSON`,输入 `{}`
6. 点击 `Send` 发送请求
**方式二:导入 cURL 命令**
```bash
curl --location 'http://192.168.16.193:8888/juntech-ysdp/api/traffic/getInOutStationRank/v1' \
--header 'Content-Type: application/json' \
--header 'token: your-token-here' \
--data '{}'
```
#### 2. 检查返回结果
**成功标志:**
- `success` 字段为 `true`
- `code` 字段为 `200`
- `data` 数组包含站点数据最多10条
**失败处理:**
- `code``500`:服务器异常,查看 `error` 字段(开发环境)
- `code``400`:请求参数错误或鉴权失败
#### 3. 缓存测试
**测试缓存是否生效:**
1. 第一次请求观察响应时间例如500ms
2. 第二次请求响应时间应显著降低例如50ms
3. 调用 `cleanCache` 接口清理缓存
4. 再次请求,响应时间恢复到第一次的水平
**禁用缓存测试:**
在请求中添加 Header
```
noCache: true
```
---
## 🔑 数据字典
### 线路编号对照表
| 线路编号 | 线路名称 |
|---------|---------|
| 01 | 1号线 |
| 02 | 2号线 |
| 03 | 3号线 |
| 04 | 4号线 |
| 06 | 6号线 |
| 07 | 7号线 |
| 08 | 8号线 |
| 09 | 9号线 |
| 10 | 10号线 |
| 11 | 11号线 |
| 12 | 12号线 |
| 13 | 13号线 |
| 14 | 14号线 |
| 15 | 15号线 |
| 16 | 16号线 |
| 18 | 18号线 |
| 51 | 浦江线 |
### 缓存键规则
| 缓存键前缀 | 说明 |
|-----------|------|
| `api_traffic_inOutStationRankV1_` | 进出站客流排名缓存 |
| `api_traffic_transferStationRankV1_` | 换乘站客流排名缓存 |
**缓存时效:** 由配置文件 `application.yml` 中的 `api-cache-expire` 参数控制(默认单位:分钟)
---
## 🚨 常见问题
### Q1: 接口返回 `{"success": false, "code": 500}`
**可能原因:**
1. 数据库连接失败
2. `ys_yunying` 表无数据或表结构不匹配
3. SQL 语法错误(检查 MyBatis XML
**排查步骤:**
1. 检查后端日志中的异常堆栈
2. 确认数据库中 `ys_yunying` 表有当天数据
3. 检查 `ys_station` 表是否存在
---
### Q2: 返回数据少于 10 条?
**可能原因:**
1. 当天实际符合条件的站点少于 10 个
2. 进出站/换乘站的分布不均匀
**解决方案:**
- 检查数据库中 `ys_yunying` 表的 `line_id` 字段分布
- 确认是否有足够的单线路/多线路站点数据
---
### Q3: `compareTotal` 字段为空?
**可能原因:**
1. `ys_operate_manager` 表中 `compareDate` 字段未配置
2. 对比日期的数据不存在
**排查步骤:**
1. 查询 `ys_operate_manager` 表,确认 `compareDate` 字段值
2. 检查对比日期在 `ys_yunying` 表中是否有数据
---
## 📝 后续接口规划
### 待开发接口(占位)
#### 4. 获取单站客流详情
**接口路径:** `/api/traffic/getStationDetail/v1`
**接口说明:** 根据线路ID和站点ID查询该站的详细客流数据进出站/换乘站时段分布)
**适用页面:** Traffic4 组件
**状态:** 📋 待开发
---
#### 5. 获取客诉排名统计
**接口路径:** `/api/traffic/getComplaintRank/v1`
**接口说明:** 查询客诉类型排名TOP7 + 年度客诉总数/A类投诉统计
**适用页面:** Traffic5 组件
**状态:** 📋 待开发
---
#### 6. 获取站点活动列表
**接口路径:** `/api/traffic/getStationActivityList/v1`
**接口说明:** 根据线路、站点、月份筛选活动列表(按时间排序)
**适用页面:** Traffic7 组件
**状态:** 📋 待开发
---
#### 7. 获取线路舆情排名
**接口路径:** `/api/traffic/getLinePublicOpinionRank/v1`
**接口说明:** 查询各线路的舆情评论数量排名TOP5
**适用页面:** Traffic8 组件
**状态:** 📋 待开发
---
#### 8. 获取舆情评论列表
**接口路径:** `/api/traffic/getPublicOpinionComments/v1`
**接口说明:** 查询舆情评论列表(支持关键词搜索)
**适用页面:** Traffic8 组件
**状态:** 📋 待开发
---
## 📚 附录
### A. 数据表结构参考
#### ys_yunying客流信息表
| 字段名 | 类型 | 说明 |
|-------|------|------|
| id | VARCHAR | 主键 |
| line_id | VARCHAR | 线路编号(如 "03" |
| station_id | VARCHAR | 站点ID如 "0313" |
| beg_time | DATETIME | 数据开始时间 |
| end_time | DATETIME | 数据结束时间 |
| pull_num | BIGINT | 进站客流数 |
| departure_num | BIGINT | 出站客流数 |
| file_name | VARCHAR | 文件名 |
| del_flag | CHAR | 删除标记0=正常1=删除) |
| create_time | DATETIME | 创建时间 |
| update_time | DATETIME | 更新时间 |
#### ys_station站点信息表
| 字段名 | 类型 | 说明 |
|-------|------|------|
| station_id | VARCHAR | 站点ID |
| name | VARCHAR | 站点名称 |
#### ys_operate_manager运营管理表
| 字段名 | 类型 | 说明 |
|-------|------|------|
| id | VARCHAR | 主键 |
| compare_date | DATETIME | 对比日期配置 |
| del_flag | CHAR | 删除标记 |
---
### B. 更新日志
| 日期 | 版本 | 更新内容 | 作者 |
|-----|------|---------|------|
| 2026-08-26 | v1.0 | 初始版本,完成进出站/换乘站排名接口 | Claude |
---
### C. 联系方式
**后端开发:** [您的团队名称]
**技术支持:** [联系方式]
**文档维护:** 请在新增接口后及时更新本文档
---
**文档结束**