fix(#575): 预约成功后 booked_num 未实时累加
根因:booked_num 只在签到时累加,预约成功后没有更新。 业务上预约成功就占了号源,booked_num 应立即反映。 修复: - TicketServiceImpl: 预约成功后 booked_num +1(与 locked_num 同步) - SchedulePoolMapper: 签到时不再改 booked_num(预约时已加) - SchedulePoolMapper: refreshPoolStats 统计 booked_num 包含 LOCKED+BOOKED+CHECKED_IN - SlotStatus: 更新状态流转注释
This commit is contained in:
@@ -8,10 +8,10 @@ import lombok.Getter;
|
|||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
* 状态流转:
|
* 状态流转:
|
||||||
* 预约 → 0→2 (锁定), locked_num+1
|
* 预约 → 0→2 (锁定), locked_num+1, booked_num+1
|
||||||
* 取消预约 → 2→0 (释放), locked_num-1
|
* 取消预约 → 2→0 (释放), refreshPoolStats 重算
|
||||||
* 签到 → 2→1 (已约), locked_num-1, booked_num+1
|
* 签到 → 2→3 (已签到), locked_num-1
|
||||||
* 退号 → 1→0 (释放), booked_num-1
|
* 退号 → →0 (释放), refreshPoolStats 重算
|
||||||
* 停诊 → 任意→4 (已取消)
|
* 停诊 → 任意→4 (已取消)
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ public interface SchedulePoolMapper extends BaseMapper<SchedulePool> {
|
|||||||
FROM adm_schedule_slot s
|
FROM adm_schedule_slot s
|
||||||
WHERE s.pool_id = p.id
|
WHERE s.pool_id = p.id
|
||||||
AND s.delete_flag = '0'
|
AND s.delete_flag = '0'
|
||||||
AND (s.status = #{bookedStatus} OR s.status = 3)
|
AND s.status IN (#{bookedStatus}, #{lockedStatus}, 3)
|
||||||
), 0),
|
), 0),
|
||||||
locked_num = COALESCE((
|
locked_num = COALESCE((
|
||||||
SELECT COUNT(1)
|
SELECT COUNT(1)
|
||||||
@@ -42,7 +42,7 @@ public interface SchedulePoolMapper extends BaseMapper<SchedulePool> {
|
|||||||
@Param("lockedStatus") Integer lockedStatus);
|
@Param("lockedStatus") Integer lockedStatus);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 签到时更新号源池统计:锁定数-1,已约数+1
|
* 签到时更新号源池统计:锁定数-1(booked_num 在预约时已累加)
|
||||||
*
|
*
|
||||||
* @param poolId 号源池ID
|
* @param poolId 号源池ID
|
||||||
* @return 结果
|
* @return 结果
|
||||||
@@ -50,7 +50,6 @@ public interface SchedulePoolMapper extends BaseMapper<SchedulePool> {
|
|||||||
@Update("""
|
@Update("""
|
||||||
UPDATE adm_schedule_pool
|
UPDATE adm_schedule_pool
|
||||||
SET locked_num = locked_num - 1,
|
SET locked_num = locked_num - 1,
|
||||||
booked_num = booked_num + 1,
|
|
||||||
update_time = NOW()
|
update_time = NOW()
|
||||||
WHERE id = #{poolId}
|
WHERE id = #{poolId}
|
||||||
AND locked_num > 0
|
AND locked_num > 0
|
||||||
|
|||||||
@@ -267,7 +267,7 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
|
|||||||
if (poolId != null) {
|
if (poolId != null) {
|
||||||
schedulePoolMapper.update(null,
|
schedulePoolMapper.update(null,
|
||||||
new LambdaUpdateWrapper<SchedulePool>()
|
new LambdaUpdateWrapper<SchedulePool>()
|
||||||
.setSql("locked_num = locked_num + 1, version = version + 1")
|
.setSql("locked_num = locked_num + 1, booked_num = booked_num + 1, version = version + 1")
|
||||||
.set(SchedulePool::getUpdateTime, new Date())
|
.set(SchedulePool::getUpdateTime, new Date())
|
||||||
.eq(SchedulePool::getId, poolId));
|
.eq(SchedulePool::getId, poolId));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user