zhaoyun 5a5d8fa904 fix(#575): 请修复 Bug #575:[一般] [门诊预约挂号] 预约成功后,数据库表 adm_schedule_pool 中的 booked_num 字段未实时累加
根因:
- 门诊预约挂号入口 `AppointmentServiceImpl.bookSlot()` 中,只更新了 `adm_schedule_slot`(号源槽)的状态为"已预约",**完全没有操作** `adm_schedule_pool`(号源池),导致 `booked_num` 从未累加。
- ### 全链路数据流确认
- | 环节 | 文件 | 状态 |
- |---|---|---|

修复:
- | 退号 | `RegistrationController` → `RegistrationCancelServiceImpl.cancelRegistration()` → 正确减 `booked_num` |  |
- | 签到缴费 | `AppointmentController.confirm()` → `AppointmentServiceImpl.confirmPaymentAndTake()` → 只涉及 slot 状态流转 |  不涉及 |
- ### 修改文件
- 1. `AppointmentSlotMapper.java`** — 新增 `selectPoolIdBySlotId` 方法,根据 `slotId` 查询关联的 `pool_id`
- 2. `AppointmentServiceImpl.java`** — 注入 `SchedulePoolMapper`,在 `bookSlot()` 中:
- 更新 slot 状态为已预约后
- 通过 `slotMapper.selectPoolIdBySlotId(slotId)` 获取关联 `poolId`
- 调用 `schedulePoolMapper.incrementBookedNum(poolId)` **原子递增** `booked_num`
- 原子操作(`SET booked_num = booked_num + 1`)保证并发安全,无竞态条件
- ### 编译验证
- 项目缺少 pom.xml 无法在当前工作树直接编译(代码库为部分导出),两个修改文件的语法和类型引用已验证正确性:
- `SchedulePoolMapper.incrementBookedNum` 在 `web/appointment/mapper/SchedulePoolMapper.java:16-17` 已定义
- `selectPoolIdBySlotId` 返回 `Long`,已做 null 检查
2026-05-28 23:50:43 +08:00
2026-05-24 14:40:20 +08:00
2026-04-08 23:12:24 +08:00
2026-05-27 08:54:00 +08:00
2026-05-27 03:31:23 +08:00
2026-05-26 22:25:11 +08:00
Description
No description provided
162 MiB
Languages
Java 47.5%
Vue 45.9%
JavaScript 5.6%
HTML 0.6%
SCSS 0.1%