# 在线问诊（移动端）

## 1. 概述

| 项 | 说明 |
| --- | --- |
| Base Path | `/app/onlineConsult` |
| 数据表 | `biz_medical_resource`、`biz_consult_session`、`biz_consult_message` |
| 鉴权 | 需登录 |

**兽医列表范围**：`resource_type=004001`（兽医人员）、`publish_status=1`（已发布）、`consult_modes` 含在线接诊（`3`）、已分配平台账号且 `sys_user_id` 非空（可实际收发消息）。

**查看资料**：列表项已返回资料页全部字段，**无单独详情接口**。

## 2. 可问诊兽医列表

`GET /app/onlineConsult/vet/list`

| 参数 | 必填 | 说明 |
| --- | --- | --- |
| `pageNum` | 否 | 页码，默认 1 |
| `pageSize` | 否 | 每页条数，默认 20 |
| `resourceName` | 否 | 兽医姓名（`resource_name`）模糊匹配 |

**响应**：`TableDataInfo`，`rows` 元素字段：

| 字段 | 说明 |
| --- | --- |
| `id` | 兽医资源主键 |
| `resourceName` | 兽医姓名 |
| `introduction` | 介绍 |
| `contactPhone` | 联系电话 |
| `affiliatedUnit` | 隶属单位 |
| `detailAddress` | 详细地址 |
| `serviceStartTime` | 服务开始 `HH:mm` |
| `serviceEndTime` | 服务结束 `HH:mm` |
| `photoFileUrl` | 照片 URL（列表头像，非需求必填但便于展示） |

## 3. 我的问诊会话列表

`GET /app/onlineConsult/session/list`

| 参数 | 必填 | 说明 |
| --- | --- | --- |
| `pageNum` | 否 | 页码，默认 1 |
| `pageSize` | 否 | 每页条数，默认 10 |

**响应**：`TableDataInfo`，`rows` 为 `BizConsultSession`（`consult_type=1`，按 `asker_user_id=当前用户` 筛选）。

## 4. 打开 / 复用问诊会话

`POST /app/onlineConsult/session/open`

**Body**

| 字段 | 必填 | 说明 |
| --- | --- | --- |
| `vetResourceId` | 是 | 兽医资源 `id` |

**逻辑**：同一登录用户与同一兽医若已有 `consult_type=1` 的会话，则**返回原会话**；否则创建新会话。

**响应 `data`**：`BizConsultSession`（含 `id`、`receiverName`、`lastMessagePreview` 等），前端凭 `id` 进入问诊对话框。

**失败示例**：兽医未发布、未开通在线接诊、未分配账号 →「该兽医暂不支持在线问诊」。

## 5. 问诊消息

### 5.1 历史消息

`GET /app/onlineConsult/session/{sessionId}/messages`

| 参数 | 必填 | 说明 |
| --- | --- | --- |
| `beforeId` | 否 | 向上翻页：取小于该 id 的更早消息 |
| `pageSize` | 否 | 条数，默认 50 |

**响应 `data`**：`BizConsultMessage[]`，按发送时间**升序**。

### 5.2 发送消息

`POST /app/onlineConsult/session/{sessionId}/message`

**Body**：`msgType`（1 文本 / 2 图片 / 3 视频 / 4 语音）、`content`、`mediaDuration`（音视频可选）。

### 5.3 隐藏会话（问诊人侧删除列表项）

`POST /app/onlineConsult/session/{sessionId}/hide`

## 6. 界面参考

`doc/app/在线问诊/Snipaste_2026-05-24_09-37-49.jpg`

> 原移动端路径 `/app/consult/vet` 已废弃，会话相关能力均收敛至 **`/app/onlineConsult`**。
