1

我尝试为 iPhone 创建一个应用程序,您可以在其中设置约会。一切都保存到 MySQL 数据库中,我目前通过 JSON 将数据获取到我的应用程序中。这是一个工作流程

  1. User1 定义他工作的时间。例如上午 8 点至下午 4 点。
  2. 用户 2 想与用户 1 约会,例如上午 8 点到上午 9 点。

当当前没有约会时,可以保存。如果已经有一个,例如 8.15am - 8.45am,则会显示错误。

你能给我一个提示吗?我正在考虑一个带有 NSDate“startDate”和“endDate”的类,但我不确定如何检测这些约会冲突。

非常感谢,每一个提示都表示赞赏。

4

1 回答 1

0

符合以下条件的任命有效:

  • 约会在用户的工作时间内;和

  • 它不会与现有任命发生冲突,这可能以三种可能的方式发生:

    • 冲突预约在新预约期间开始;和/或

    • 冲突预约在新预约期间结束;或者

    • 冲突约会在新约会之前开始,在新约会之后结束。

您可以使用以下行在纯 SQL 中查询此内容:

SELECT EXISTS (
  SELECT *
  FROM   appointments a JOIN workhours h USING (user_id)
  WHERE  user_id = 1
     AND h.start <= '08:00:00' AND h.end >= '09:00:00'
     AND (
               a.start BETWEEN '08:00:00'  AND  '09:00:00'
           OR  a.end   BETWEEN '08:00:00'  AND  '09:00:00'
           OR (a.start < '08:00:00' AND a.end > '09:00:00')
         )
  LIMIT  1
)

请注意在事务中使用锁定读取来执行此SELECT操作,以防止并发问题。

于 2012-12-24T10:09:50.277 回答