我一直在考虑如何在新网站上实现类似于SO的徽章功能。存储徽章标准的最佳方式是什么?

两个想法:

  • 所有代码
  • “第二系统” - 创建一个元架构来定义徽章及其标准。在数据库中存储一些信息,并让代码查询它以找出徽章及其标准。

还有更好的方法吗?

有帮助吗?

解决方案

规则。

您在系统中创建事件,并在事件流处理器中使用规则。

具体来说,说您有一个徽章“制作了10个帖子”。您不会为每个帖子从user =:用户的帖子中选择“计数(*)”。相反,您有一个简单的规则,该规则可以观看每个帖子,并“计数它们”,将规则状态存储在用户配置文件中。

这样,“制作10个帖子”的帖子就一样便宜。

这也使系统更加可扩展。

其他提示

在这一点上我同意威尔的观点。

在页面上创建“事件”,以便每次事件发生时即。用户删除帖子,它将使用事件查询事件模块,比方说,EVENT_USER_DELETE_POST,然后您可以选择该事件并基于它构建查询。然后您可以决定是否授予徽章。

这将使两个逻辑保持分离并保持模块化设计。这种方式应该很容易实现。

唯一的缺点是,如果事件没有被“捕获”,那么用户很可能已经获得了徽章标准,但尚未获得奖励。然而,这种情况永远不应该发生。我能想到的唯一情况是手动操作数据库。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top