# 我的预约(移动端) ## 1. 概述 | 项 | 说明 | | --- | --- | | Base Path | `/app/myAppointment` | | 数据表 | `biz_service_appointment`、`biz_service_appointment_review` | | 用户范围 | `create_by` = 当前登录用户名(与预约提交时一致) | | 鉴权 | 需登录 | **主 Tab → `providerType`** | Tab | `providerType` | | --- | --- | | 兽医 | `1` | | 专家 | `3` | | 诊疗机构 | `2` | **子 Tab → `statusTab`(必传)** | `statusTab` | 含义 | SQL 语义 | | --- | --- | --- | | `all` | 全部 | 不额外过滤 | | `notStarted` | 未开始 | `status in (0,1,5)` | | `pendingReview` | 待评价 | `status=4` 且无评价记录 | | `completed` | 已完成 | `status=4` | | `cancelled` | 已取消 | `status=3` | 状态码:`0` 待确认、`1` 已确认、`2` 已拒绝、`3` 已取消、`4` 已完成、`5` 已预约(机构)。 --- ## 2. 预约列表 `GET /app/myAppointment/list` | 参数 | 必填 | 说明 | | --- | --- | --- | | `providerType` | **是** | `1` 兽医 / `2` 机构 / `3` 专家 | | `statusTab` | **是** | 见上表 | | `pageNum` | 否 | 默认 1 | | `pageSize` | 否 | 默认 10,最大 50 | **`rows[]` 主要字段** | 字段 | 说明 | | --- | --- | | `id` | 预约主键 | | `providerType` / `providerId` | 服务方类型与资源 ID | | `providerName` | 兽医/专家/机构名称 | | `appointDate` | 预约日期 | | `timeStart` / `timeEnd` | 时段 | | `serviceAddress` / `serviceRequirement` | 地址、需求 | | `status` / `statusLabel` | 状态码与文案 | | `rejectReason` | 拒绝理由(已拒绝时) | | `canCancel` | 是否可取消(`status` 为 0/1/5) | | `hasReview` | 是否已评价(专家已完成时) | 排序:`appoint_date` 降序。 --- ## 3. 取消预约 `POST /app/myAppointment/cancel/{id}` - 仅 `status` 为 **0、1、5** 可取消,更新为 **3(已取消)**。 - **已完成(4)** 不可取消。 --- ## 4. 查看评价 `GET /app/myAppointment/{id}/review` - 仅 **专家**(`providerType=3`)且 **已完成**(`status=4`)的预约。 - 返回单条 `BizServiceAppointmentReview`:`reviewerName`、`reviewTime`、`punctualityScore`、`attitudeScore`、`guidanceScore`、`summary`。 --- ## 5. 提交评价 `POST /app/myAppointment/{id}/review` **Body** | 字段 | 必填 | 说明 | | --- | --- | --- | | `punctualityScore` | 是 | 到场准时 1~5 | | `attitudeScore` | 是 | 服务态度 1~5 | | `guidanceScore` | 是 | 指导效果 1~5 | | `summary` | 是 | 综合评价,≤100 字 | **逻辑** - 仅专家、已完成、且尚未评价; - 写入 `biz_service_appointment_review`(到场准时 / 服务态度 / 指导效果星级 + 综合评价); - **不**即时更新 `biz_tech_resource.expert_rating`。 **响应 `data`**:评价记录 `id`。 --- ## 6. 专家评分定时同步(后台) | 项 | 说明 | | --- | --- | | 执行时间 | 每天 **23:00** | | Quartz 目标 | `expertRatingSyncTask.syncExpertRatings` | | 初始化 SQL | `sql/biz_sys_job_expert_rating_sync.sql` | **计算公式**(关联 `biz_service_appointment_review` 与 `biz_service_appointment`,`provider_type=3`): \[ \text{expert\_rating} = \mathrm{round}\left(\frac{\sum \text{到场准时} + \sum \text{服务态度} + \sum \text{指导效果}}{3},\ 1\right) \] 仅更新存在评价记录的专家;无评价时该专家不参与本次同步(保持库中原值,新建专家默认 5.0)。 --- ## 7. 界面参考 `doc/app/我的预约/Snipaste_2026-05-24_14-06-16.jpg` `doc/app/我的预约/Snipaste_2026-05-24_14-07-00.jpg` `doc/app/我的预约/Snipaste_2026-05-24_14-07-21.jpg`