首页 > 解决方案 > 打开时启用倒计时的测验

问题描述

如何实现向选定用户发送电子邮件的在线应用程序。该电子邮件包含一个链接,该链接在电子邮件发送后 3 天内可用。如果用户在链接过期之前单击该链接,那么他们将打开一个新的浏览器窗口/选项卡,其中包含用户特定的问题和一个在窗口加载时开始的倒数计时器。从那一刻开始,不允许停顿,他们有整整​​ 1 小时的时间来回答问题。

测验将由用户提交或在计时器达到 60 分钟后自动提交所有答案。
用户可以看到剩余时间(在 UI 中的某处实时更新)。如果可能的话,我想以一种方式实现它,如果用户不小心关闭了选项卡,他可以在保存所有答案的情况下再次打开它。

我们目前正在使用 Java/Spring Boot(REST API - 后端)、ReactJS(前端)+ MySQL 数据库。

我们不知道应该如何搜索电子邮件链接到期逻辑所需的关键字。登录方法、测验的创建以及将测验连同数据库结构一起发送给用户对我们来说很清楚。我们感谢任何帮助或实施想法(甚至技术)

标签: mysqlangularreactjstypescriptspring-boot

解决方案


想法是使用特定的随机令牌生成每个测验,如下所示:

04e69b43-f6e2-4a6b-835b-dd58c95e41810

然后,将电子邮件发送给特定的人myapp.com/quizz?token=token。后端的 CRON 作业会检查测验的创建日期,并检查是否已经过了 3 天而没有第一次评估,如果是,则将测验标记为过期(当然,当链接将被评估并且测验过期时,将显示一条错误消息)。

如果测验未过期且用户点击,则自动开始测验并保存在数据库中 firstClickTime 和 expirationTime = firstClick + 1h。前端将每分钟发送一个 JSON,其中包含他迄今为止编写的所有内容,以防止在他关闭时丢失任何答案选项卡。

当然还有一些其他的小细节,但这是整个想法。


推荐阅读