新增功能

This commit is contained in:
Your Name
2026-03-04 15:32:30 +08:00
parent a07e844c47
commit ab77f5488d
2266 changed files with 177942 additions and 3444 deletions
+229
View File
@@ -0,0 +1,229 @@
# 音视频通话功能使用说明
## 功能概述
基于腾讯云 TRTC(实时音视频)和 TUICallKit 组件实现的医患音视频通话功能。
## 前端实现
### 1. 安装依赖
```bash
cd admin
npm install @tencentcloud/call-uikit-vue
```
### 2. 组件说明
- **位置**: `admin/src/components/video-call/index.vue`
- **功能**:
- 初始化 TUICallKit
- 发起视频/语音通话
- 监听通话状态
- 记录通话时长
### 3. API 接口
- **位置**: `admin/src/api/tcm.ts`
- **接口列表**:
- `getCallSignature`: 获取通话签名
- `startCall`: 发起通话
- `endCall`: 结束通话
- `getCallRecords`: 获取通话记录
### 4. 使用方式
在诊断列表页面点击"视频通话"按钮即可发起通话。
## 后端实现
### 1. 控制器
- **位置**: `server/app/adminapi/controller/tcm/DiagnosisController.php`
- **方法**:
- `getCallSignature()`: 生成腾讯云 UserSig
- `startCall()`: 创建通话记录
- `endCall()`: 更新通话记录
- `getCallRecords()`: 查询通话记录
### 2. 逻辑层
- **位置**: `server/app/adminapi/logic/tcm/DiagnosisLogic.php`
- **核心方法**:
- `generateUserSig()`: 生成 UserSig 签名
- `getTrtcConfig()`: 获取 TRTC 配置
### 3. 数据模型
- **位置**: `server/app/common/model/tcm/CallRecord.php`
- **表名**: `la_tcm_call_record`
- **字段**:
- `diagnosis_id`: 诊单ID
- `caller_id`: 呼叫方ID
- `callee_id`: 被叫方ID
- `call_type`: 通话类型(1-语音 2-视频)
- `status`: 状态(1-进行中 2-已结束 3-未接听 4-已取消)
- `start_time`: 开始时间
- `end_time`: 结束时间
- `duration`: 通话时长
### 4. 数据库迁移
```bash
# 执行 SQL 文件创建通话记录表
mysql -u root -p database_name < server/sql/tcm_call_record.sql
```
## 配置说明
### 1. 腾讯云 TRTC 配置
在腾讯云控制台获取配置信息:https://console.cloud.tencent.com/trtc
### 2. 后端配置
编辑 `server/.env` 文件,添加以下配置:
```env
# 腾讯云实时音视频(TRTC)配置
TRTC_SDK_APP_ID=你的SDKAppID
TRTC_SECRET_KEY=你的密钥
TRTC_ENABLE=true
```
或者直接修改 `server/config/project.php`:
```php
'trtc' => [
'sdkAppId' => 1400000000, // 你的 SDKAppID
'secretKey' => 'your_secret_key', // 你的密钥
'expireTime' => 86400, // UserSig 过期时间(秒)
'enable' => true,
]
```
### 3. 权限配置
确保管理员拥有 `tcm.diagnosis/video-call` 权限。
## API 接口文档
### 1. 获取通话签名
**接口**: `POST /adminapi/tcm.diagnosis/getCallSignature`
**请求参数**:
```json
{
"diagnosis_id": 1,
"patient_id": 10001
}
```
**返回数据**:
```json
{
"code": 1,
"msg": "success",
"data": {
"sdkAppId": 1400000000,
"userId": "doctor_1",
"userSig": "eJw1jk...",
"expireTime": 86400
}
}
```
### 2. 发起通话
**接口**: `POST /adminapi/tcm.diagnosis/startCall`
**请求参数**:
```json
{
"diagnosis_id": 1,
"patient_id": 10001,
"call_type": 2
}
```
### 3. 结束通话
**接口**: `POST /adminapi/tcm.diagnosis/endCall`
**请求参数**:
```json
{
"diagnosis_id": 1
}
```
### 4. 获取通话记录
**接口**: `GET /adminapi/tcm.diagnosis/getCallRecords`
**请求参数**:
```
?diagnosis_id=1
```
**返回数据**:
```json
{
"code": 1,
"msg": "success",
"data": [
{
"id": 1,
"diagnosis_id": 1,
"caller_id": 1,
"caller_type": "doctor",
"callee_id": 10001,
"callee_type": "patient",
"call_type": 2,
"status": 2,
"start_time": 1709222400,
"end_time": 1709222700,
"duration": 300,
"start_time_text": "2024-03-01 10:00:00",
"end_time_text": "2024-03-01 10:05:00",
"duration_text": "5分0秒"
}
]
}
```
## 注意事项
1. **安全性**: UserSig 包含敏感信息,不要在前端硬编码
2. **过期时间**: UserSig 默认24小时过期,需要定期刷新
3. **网络要求**: 音视频通话需要良好的网络环境
4. **浏览器兼容**: 建议使用 Chrome、Edge、Safari 等现代浏览器
5. **权限申请**: 需要用户授权摄像头和麦克风权限
6. **费用**: 腾讯云 TRTC 按使用量计费,请注意成本控制
## 测试流程
1. 配置腾讯云 TRTC 参数
2. 执行数据库迁移
3. 安装前端依赖
4. 在诊断列表页面点击"视频通话"
5. 授权摄像头和麦克风
6. 等待患者接听(需要患者端也集成 TUICallKit
## 扩展功能
可以基于此功能扩展:
- 通话录制
- 通话质量监控
- 通话记录回放
- 多人会议
- 屏幕共享
- 实时字幕
## 技术支持
- 腾讯云 TRTC 文档: https://cloud.tencent.com/document/product/647
- TUICallKit 文档: https://cloud.tencent.com/document/product/647/78742
- 问题反馈: 提交 Issue 到项目仓库