This commit is contained in:
Your Name
2026-03-11 14:33:49 +08:00
parent 38ad60f4bb
commit 08dd9cd307
57 changed files with 9547 additions and 379 deletions
+230
View File
@@ -0,0 +1,230 @@
# 医生API接口文档
## 概述
本文档描述了医生相关的API接口,用于小程序首页展示医生列表和医生详情。
## 后端实现
### 1. 医生逻辑层 (DoctorLogic)
**文件位置**: `server/app/api/logic/DoctorLogic.php`
主要方法:
- `getDoctorList($params)` - 获取医生列表
- `getDoctorDetail($doctorId)` - 获取医生详情
- `getDoctorRoster($doctorId, $date)` - 获取医生排班
### 2. 医生控制器 (DoctorController)
**文件位置**: `server/app/api/controller/DoctorController.php`
提供以下API端点:
- `GET /api/doctor/lists` - 获取医生列表
- `GET /api/doctor/detail` - 获取医生详情
- `GET /api/doctor/roster` - 获取医生排班
### 3. 数据来源
医生数据来自 `zyt_admin` 表,筛选条件:
- `role_id = 1`(医生角色)
- `disable = 0`(未禁用)
## API 接口详情
### 1. 获取医生列表
**请求**:
```
GET /api/doctor/lists
```
**参数**:
| 参数 | 类型 | 必需 | 说明 |
|------|------|------|------|
| page_no | int | 否 | 页码,默认1 |
| page_size | int | 否 | 每页数量,默认10 |
| keyword | string | 否 | 搜索关键词(医生名字或账号) |
**响应示例**:
```json
{
"code": 1,
"msg": "success",
"data": {
"lists": [
{
"id": 1,
"name": "张医生",
"account": "doctor1",
"avatar": "http://example.com/avatar.jpg",
"mobile": "13800138000",
"email": "doctor@example.com",
"specialty": "医生",
"title": "医生",
"rating": "4.8"
}
],
"count": 10,
"page_no": 1,
"page_size": 10
}
}
```
### 2. 获取医生详情
**请求**:
```
GET /api/doctor/detail
```
**参数**:
| 参数 | 类型 | 必需 | 说明 |
|------|------|------|------|
| id | int | 是 | 医生ID |
**响应示例**:
```json
{
"code": 1,
"msg": "success",
"data": {
"id": 1,
"name": "张医生",
"account": "doctor1",
"avatar": "http://example.com/avatar.jpg",
"mobile": "13800138000",
"email": "doctor@example.com",
"specialty": "医生",
"title": "医生",
"rating": "4.8"
}
}
```
### 3. 获取医生排班
**请求**:
```
GET /api/doctor/roster
```
**参数**:
| 参数 | 类型 | 必需 | 说明 |
|------|------|------|------|
| doctor_id | int | 是 | 医生ID |
| date | string | 是 | 日期(YYYY-MM-DD格式) |
**响应示例**:
```json
{
"code": 1,
"msg": "success",
"data": [
{
"id": 1,
"doctor_id": 1,
"date": "2024-03-11",
"period": "morning",
"status": 1,
"quota": 20,
"max_patients": 30,
"remark": ""
}
]
}
```
## 前端实现
### 1. API 服务文件
**文件位置**: `TUICallKit-Vue3/utils/api.js`
提供了便捷的API调用方法:
```javascript
import { doctorApi } from '@/utils/api'
// 获取医生列表
const response = await doctorApi.getDoctorList({
page_no: 1,
page_size: 10
})
// 获取医生详情
const doctor = await doctorApi.getDoctorDetail(1)
// 获取医生排班
const roster = await doctorApi.getDoctorRoster(1, '2024-03-11')
```
### 2. 小程序首页
**文件位置**: `TUICallKit-Vue3/pages/index/index.vue`
首页会自动加载医生列表并展示:
- 古典卷轴风格幻灯片
- 医生团队卡片(从后端动态加载)
- 点击医生卡片可跳转到挂号页面
## 使用流程
### 后端配置
1. 确保 `zyt_admin` 表中有 `role_id = 1` 的医生记录
2. 医生的 `disable` 字段应为 0(未禁用)
3. 医生的 `avatar` 字段应包含头像URL
### 前端配置
1.`TUICallKit-Vue3/.env` 中配置API基础URL
```
VUE_APP_API_URL=http://your-api-domain/api
```
2. 首页会自动调用 `doctorApi.getDoctorList()` 获取医生列表
## 扩展功能
### 1. 添加医生专科和职位
修改 `DoctorLogic.php` 中的 `getDoctorList()` 方法,从其他表获取医生的专科和职位信息:
```php
// 可以添加关联查询
$doctor['specialty'] = '内科'; // 从科室表获取
$doctor['title'] = '主任医师'; // 从职位表获取
```
### 2. 添加医生评分
可以从预约或评价表中计算医生的平均评分:
```php
$doctor['rating'] = DoctorRating::where('doctor_id', $doctor['id'])->avg('rating');
```
### 3. 添加医生搜索功能
前端可以调用 `getDoctorList()` 时传入 `keyword` 参数进行搜索。
## 常见问题
### Q: 医生列表为空?
A: 检查 `zyt_admin` 表中是否有 `role_id = 1``disable = 0` 的记录。
### Q: 头像无法显示?
A: 确保 `avatar` 字段包含完整的URL,或者在 `FileService::getFileUrl()` 中正确处理相对路径。
### Q: 如何添加医生的其他信息?
A: 修改 `DoctorLogic.php` 中的数据处理逻辑,从其他表关联查询所需信息。
## 相关文件
- 后端逻辑: `server/app/api/logic/DoctorLogic.php`
- 后端控制器: `server/app/api/controller/DoctorController.php`
- 前端API服务: `TUICallKit-Vue3/utils/api.js`
- 前端首页: `TUICallKit-Vue3/pages/index/index.vue`
- 医生模型: `server/app/common/model/auth/Admin.php`
- 医生排班模型: `server/app/common/model/doctor/Roster.php`