6.3 KiB
6.3 KiB
菜品识别管理系统第三方接口文档
版本:v1.0
更新时间:2026-09-16
1. 接口地址
生产环境基础地址:
https://cpsb.ruimeida.cc/
所有接口均使用 GET 请求,不需要请求体。
2. 接口认证
接口使用独立的 API Key 认证,不使用后台用户登录账号密码。
每次请求都必须携带请求头:
X-API-Key: dish_a4f7a1287198179fdc6a6571aa14064c2afc6338c6730e2b668ac5be15bdf769
请向系统管理员获取正式 API Key,不要将 API Key 写入前端页面、公开代码仓库或日志中。
3. 获取全部基地信息
请求
GET /api/public/bases
完整地址:
https://cpsb.ruimeida.cc/api/public/bases
cURL 示例
curl -X GET "https://cpsb.ruimeida.cc/api/public/bases" \
-H "X-API-Key: <THIRD_PARTY_API_KEY>"
返回示例
{
"items": [
{
"id": 1364,
"branchName": "安仁街分部",
"name": "上海路基地",
"code": "上海路基地-1788059884828-e55vu",
"province": "",
"city": "",
"district": "",
"address": "",
"contact": "",
"phone": "",
"longitude": null,
"latitude": null,
"description": "",
"status": 1,
"sortOrder": 0
}
]
}
字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
id |
number | 基地 ID,可用于排餐查询的 baseId 参数 |
branchName |
string | 分部名称 |
name |
string | 基地名称,可用于排餐查询的 baseName 参数 |
code |
string | 基地编码,可用于排餐查询的 baseCode 参数 |
province / city / district |
string | 所属地区 |
address |
string | 详细地址 |
contact |
string | 联系人 |
phone |
string | 联系电话 |
longitude / latitude |
number | null | 经纬度 |
description |
string | 基地备注 |
status |
number | 1 启用,0 禁用 |
sortOrder |
number | 排序值 |
4. 获取当天排餐信息
请求
GET /api/public/meal-schedules/today
兼容地址:
GET /api/meal-schedules/today
接口默认返回中国时区(Asia/Shanghai)当天的数据,并包含所有基地、早餐、中餐和晚餐。
查询参数
所有查询参数均为可选:
| 参数 | 类型 | 说明 |
|---|---|---|
date |
string | 指定日期,格式为 YYYY-MM-DD;不传时使用中国时区当天日期 |
baseName |
string | 按基地名称精确查询,推荐使用;中文需要进行 URL 编码 |
baseId |
number | 按基地 ID 查询 |
baseCode |
string | 按基地编码精确查询 |
基地筛选参数只需要传一个。如果同时传多个参数,优先级为:baseId > baseCode > baseName。
调用示例
查询当天所有基地:
curl -X GET "https://cpsb.ruimeida.cc/api/public/meal-schedules/today" \
-H "X-API-Key: <THIRD_PARTY_API_KEY>"
按基地名称查询:
curl -G "https://cpsb.ruimeida.cc/api/public/meal-schedules/today" \
-H "X-API-Key: <THIRD_PARTY_API_KEY>" \
--data-urlencode "baseName=上海路基地"
查询指定日期和基地:
curl -G "https://cpsb.ruimeida.cc/api/public/meal-schedules/today" \
-H "X-API-Key: <THIRD_PARTY_API_KEY>" \
--data-urlencode "date=2026-09-16" \
--data-urlencode "baseName=上海路基地"
返回示例
{
"date": "2026-09-16",
"timezone": "Asia/Shanghai",
"mealPeriods": [
{
"id": 1,
"name": "早餐",
"startTime": "07:00",
"endTime": "09:00"
},
{
"id": 2,
"name": "中餐",
"startTime": "11:30",
"endTime": "13:30"
},
{
"id": 3,
"name": "晚餐",
"startTime": "17:30",
"endTime": "19:00"
}
],
"bases": [
{
"id": 1364,
"code": "上海路基地-1788059884828-e55vu",
"name": "上海路基地",
"branchName": "安仁街分部",
"status": 1,
"meals": [
{
"mealPeriodId": 1,
"mealPeriodName": "早餐",
"startTime": "07:00",
"endTime": "09:00",
"dishes": []
},
{
"mealPeriodId": 2,
"mealPeriodName": "中餐",
"startTime": "11:30",
"endTime": "13:30",
"dishes": [
{
"name": "米粉蒸肉",
"price": 4,
"learningStatus": "未学习",
"sortOrder": 0
}
]
},
{
"mealPeriodId": 3,
"mealPeriodName": "晚餐",
"startTime": "17:30",
"endTime": "19:00",
"dishes": []
}
]
}
]
}
排餐字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
date |
string | 查询日期 |
timezone |
string | 日期使用的时区 |
mealPeriods |
array | 当天配置的餐段列表 |
bases |
array | 基地列表 |
bases[].meals |
array | 当前基地的各餐段;没有菜品时仍返回该餐段 |
meals[].mealPeriodId |
number | 餐段 ID |
meals[].mealPeriodName |
string | 餐段名称 |
meals[].startTime / endTime |
string | 餐段开始、结束时间,格式为 HH:mm |
meals[].dishes |
array | 当前基地当前餐段的菜品 |
dishes[].name |
string | 菜品名称 |
dishes[].price |
number | 菜品价格 |
dishes[].learningStatus |
string | 已学习 或 未学习 |
dishes[].sortOrder |
number | 菜品在餐段中的顺序 |
5. HTTP 状态码
| 状态码 | 说明 |
|---|---|
200 |
请求成功 |
400 |
请求参数格式错误,例如日期或 baseId 格式错误 |
401 |
API Key 缺失或错误 |
503 |
服务端尚未配置第三方 API Key |
500 |
服务端内部错误 |
错误返回格式:
{
"message": "第三方接口认证失败"
}
6. 对接建议
- 第三方系统应将 API Key 保存在服务端配置中,不要放在浏览器前端代码中。
- 建议每次调用排餐接口时传入
baseName或baseId,减少返回数据量。 - 排餐接口会返回没有菜品的餐段,第三方系统应将
dishes: []识别为当天该基地该餐段暂无排餐。 - 日期不传时按
Asia/Shanghai计算,不要使用第三方服务器的本地时区替代接口返回的date。