用户生成/用户特定功能

Posted

技术标签:

【中文标题】用户生成/用户特定功能【英文标题】:user generated / user specific functions 【发布时间】:2010-05-07 16:54:58 【问题描述】:

我正在寻找最优雅、最安​​全的方法来执行以下操作。

我有一个日历和一组用户。

用户可以将事件添加到日历上的特定日期,并指定每个事件持续多长时间。

我收到了一些用户的请求,希望他们能够定义特定长度的事件包括休息、一定时间或要求在事件之间留出特定的时间。

例如,如果活动超过 2 小时,则包括 20 分钟的休息时间。对于每个事件,需要在下一个事件开始前 30 分钟。

要求超过 2 小时的活动包括 20 分钟的休息时间的同一组,也可能要求超过 3 小时的活动包括 30 分钟的休息时间。

最后,用户想要得到的是经过的时间,不包括为他们计算的休息时间。目前我向他们提供了总经过时间,但他们正在寻找运行时间。

但是,每个组的每个请求都不同。其中一组可能希望在 2 小时的活动中休息 30 分钟,而另一组可能只希望在每 3 小时的活动中休息 10 分钟。

我有点想我可以将函数写入每个组的 php 文件中,然后包含该文件并通过 php 进行计算,然后将计算得出的总数返回给用户,但是这并不适合我。

另一种选择是将组函数输出到 javascript,并让它在客户端运行,因为我已经返回了事件的持续时间,但是如果用户是具有不同规则的多个组的一部分,则此看起来它可能会变得相当混乱。

我目前将开始和结束时间存储在数据库中,但没有“持续时间”,我认为我不应该将计算的总数存储在数据库中,因为如果一个小组决定更改他们的计算,我' d 需要在整个数据库中更改它。

有没有更好的方法来做到这一点? 我只是将变量存储在 mysql 中,但我不知道如何对 mysql 说基于这些变量进行计算。

我真的迷路了。有什么建议么?我希望有人做过类似的事情,并且可以提供一些关于最佳方向的见解。

如果有帮助,我的表包含

eventid、用户、组、startDate、startTime、endDate、endTime、类型

我返回给用户的事件的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。

【问题讨论】:

【参考方案1】:

仅存储事件的开始时间和结束时间,以及名为 notes 的 BLOB 字段。

我曾在多个系统上工作过,这些系统都遭受了这些需求的特性蔓延,直到代码和数据建模变成了一个无法维护的异常案例集合。向代码中添加新的排列需要大量工作,而且这些情况通常只使用一次。

如果您需要执行备注字段中描述的规则和条件,聘请活动协调员实际上比尝试在软件中自动化所有内容更具成本效益。一个注重细节的人适应异常情况的速度比你适应代码来处理它们的速度要快得多。

【讨论】:

谢谢比尔,这是我最初的过程,但用户坚持计算出的时间反映了他们制定的规则。我想如果他们知道一个 2 小时的活动包括 20 分钟的休息时间,那就足够了,但是因为他们得到了一天中安排的总小时数,他们需要知道有多少休息时间.我完全同意你的看法,并且正在努力让它尽可能简单,但这总是让人头疼,需要一个解决方案。 给他们估计您在软件中实现这个系统所需的时间和工资,并向他们展示用户界面的样机。我敢打赌他们会改变主意的。

以上是关于用户生成/用户特定功能的主要内容,如果未能解决你的问题,请参考以下文章

当用户放大地图上的某个区域时,显示来自不同功能的特定数据

如何使用 UIButton 停止特定功能?

如果使用 Node.js 在 Socket.io 中的应用程序中登录功能,则为特定用户发出事件

php+jQuery+Mysql找回密码----ThinkPHP

操作系统-用户进程

如何触发 Firebase 云功能以添加用户、生成密码并使用该密码发送邮件