5a5d8fa90492701d1a8a7142e918f45258845b44
根因: - 门诊预约挂号入口 `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 检查
Description
No description provided
Languages
Java
47.5%
Vue
45.9%
JavaScript
5.6%
HTML
0.6%
SCSS
0.1%