9

在我的应用程序中,我有一个提供者,它有一个时间表和从时间表中预约的客户。我需要以下功能。

提供者: - 能够指定重复出现的可用性。例如周一 9-5、周二 10-3 等 - 能够涂黑数据。例如 - 在这个星期一不可用。- 能够添加单一的、不重复的日期/时间段。例如 - 这个星期六 9-5。

客户: - 能够预订单次约会。- 能够预订重复的约会。(每个星期一 9-4)。

到目前为止,我提出了 3 个选项:

  1. 将时间表划分为 30 分钟间隔,并为每个间隔/提供者对创建一个数据库条目。每个间隔可以是免费的,也可以是预订的。当客户预订约会时,我们将间隔标记为已预订。这种方法的问题是它浪费了很多空间,而且我不确定搜索性能对于重复预订会有多好。
  2. 将每个可用时间段保存为“事件”。如果它再次发生,请复制该事件。在搜索免费时段时,请搜索预订表以确保没有重叠预订。在这种情况下,搜索重复出现的插槽似乎有点尴尬。要查找明年周一 9-5 可用的所有提供者,我们将必须搜索所有匹配的“事件”并找到具有 52 个匹配事件的所有提供者。
  3. 将每个可用时间段保存为“事件”。如果再次出现,请添加一个标志。搜索空闲时段时,请搜索预订表以确保没有重叠预订。它使搜索重复约会变得更加容易。对于假设会再次发生的“停电”时段,我们可以插入一个假预订。
4

1 回答 1

7

1.创建事件表:

a) 使用基本列 eventdate、starttime、endtime 以及事件的其他详细信息 - 这些是繁忙时间,您在日历上屏蔽的时间也是如此

b) 重复事件 - 添加列: - isrecurring - 默认为 0 - 重复类型(每天、每周、每月) - recurvery(重复发生的时间) - 周一、周二、周三、周四、周五、周六、周日 -每周重复的星期几 - 月和月日 - 每月重复

2.在日历上创建重复事件时会遇到挑战: - 如果您一次创建所有事件(比如接下来的 6 个月),则无论何时编辑一个都必须更新其他事件 - 如果您只在以下时间创建一个事件前一个已经过去,那么您需要复杂的逻辑来显示未来日期的日历

3.您还需要规则来处理是否允许事件相互重叠,要使用什么资源,事件可以提前多长时间安排

于 2012-03-01T18:24:17.510 回答