我正在寻找最优雅,最安全的方法来执行以下操作。
我有一个日历和一组用户。
用户可以在日历上的特定日期添加活动,并指定每个活动持续的时间。
我收到了一些用户的请求,要求他们添加能力,让他们定义特定长度的事件包括中断,一定时间,或者要求在事件之间留出特定的时间。
例如,如果事件大于2小时,则包含20分钟的休息时间。对于每个活动,需要在下一个活动开始前30分钟。
同一小组要求参加> 2小时的活动以包括20分钟的休息时间,也可能要求> 3小时的活动包括30分钟休息。
最后,用户试图得到的是经过的时间,不包括为他们计算的休息时间。目前我向他们提供了总耗时,但他们正在寻找一段运行时间。
但是,每个组的每个请求都不同。其中一组可能希望在2小时的比赛中休息30分钟,另一组可能只需要每3小时一次的10分钟。
我有点想我可以将这些函数写入每个组的php文件中,然后包含该文件并通过php进行计算,然后将计算出的总数返回给用户,但是有些内容并不适合我
另一种选择是将组函数输出到javascript,并让它在客户端运行,因为我已经返回了事件的持续时间,但是如果用户是多个具有不同规则的组的一部分,好像它可能变得相当混乱。
我目前将开始和结束时间存储在数据库中,但没有'持续时间',我认为我不应该将计算的总数存储在数据库中,因为如果一个组决定改变他们的计算,我' d需要在整个数据库中进行更改。
有更好的方法吗? 我只是将变量存储在mysql中,但我不知道如何根据这些变量对mysql进行计算。
我真的迷失在这里。有什么建议?我希望有人做过类似的事情,并能提供一些最佳方向的见解。
如果有帮助,我的表格包含
eventid, user, group, startDate, startTime, endDate, endTime, type
我返回给用户的事件的json是
{"eventid":"'.$eventId.'", "user":"'.$userId.'","group":"'.$groupId.'","type":"'.$type.'","startDate":".$startDate.'","startTime":"'.$startTime.'","endDate":"'.$endDate.'","endTime":"'.$endTime.'","durationLength":"'.$duration.'", "durationHrs":"'.$durationHrs.'"}
例如,持续时间长度为2.5,持续时间为2:30。
答案 0 :(得分:1)
仅存储事件的开始时间和结束时间,以及名为notes
的BLOB字段。
我已经研究过几个系统,这些系统遇到了这些需求的特征蠕变,直到代码和数据建模成为一个不可维护的异常情况集合。为代码添加新的排列是很多工作,通常这些情况只使用一次。
如果您需要执行注释字段中描述的规则和条件,那么聘请事件协调员而不是尝试自动化软件中的所有内容实际上更具成本效益。面向细节的人可以比调整代码来处理它们更快地适应异常情况。