You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何验证预订时段?实现新增时段与已有预订无重叠校验

预订时段冲突验证方案

现有预订数据

idstart_dateend_date
12022-10-10 11:00:002022-10-10 15:00:00

你的需求是阻止用户添加与已有预订时段重叠的新预订,核心是判断新时段和已有预订是否存在时间交集,以下是具体验证方案:

1. 数据库层面验证(最可靠,规避并发冲突)

直接通过SQL查询判断是否存在冲突记录,假设用户提交的新预订时段为new_start和new_end,执行如下查询:

SELECT COUNT(*) FROM 预订表
WHERE start_date < :new_end 
AND end_date > :new_start;

如果查询结果大于0,说明存在时段重叠,直接返回错误,阻止插入操作。

逻辑说明:只要新时段的结束时间晚于已有预订的开始时间,且新时段的开始时间早于已有预订的结束时间,就代表两个时段存在重叠。

2. 应用层面验证(前置校验,提升用户体验)

在用户提交表单后、调用数据库之前,先做一次前置校验:

  • 先拉取与新预订日期相同的已有记录(缩小查询范围,提升效率)
  • 遍历记录逐一判断时间是否重叠,伪代码示例:
    def has_time_conflict(existing_bookings, new_start, new_end):
        for booking in existing_bookings:
            # 校验时段是否重叠
            if new_start < booking['end_date'] and new_end > booking['start_date']:
                return True
        return False
    
    如果返回True,则提示用户“该时段已被预订,请选择其他时间”,阻止提交。

额外优化建议

  • 前端可提前做简单校验:提前加载当日已预订时段,限制用户选择的时段不能完全落在已有预订范围内,减少无效请求。
  • 数据库可添加触发器或唯一约束,进一步保障并发场景下的数据一致性,避免多用户同时提交同一时段预订的冲突。

内容的提问来源于stack exchange,提问作者stackover flow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 12:40:34