我一直在想如何在新网站上实现类似SO的徽章功能。存储徽章标准的最佳方式是什么?存储徽章标准的最佳方法是什么?
两个想法:
- 所有代码
- “第二个系统” - 创建一个元架构定义徽章和他们的标准。在数据库中存储一些信息并通过代码查询它来确定徽章及其标准。
有没有更好的方法?
我一直在想如何在新网站上实现类似SO的徽章功能。存储徽章标准的最佳方式是什么?存储徽章标准的最佳方法是什么?
两个想法:
有没有更好的方法?
规则。
您可以在系统中创建事件,并在事件流处理器中使用规则。
具体来说,假设你有一个“制作10个职位”的徽章。您不要针对每个帖子运行“来自帖子where user =:user”的“select count(*)”。相反,您有一条简单的规则,可以监视每个帖子的来历,并“统计它们”,将规则状态存储在用户配置文件中。
这样“制作10个职位”与“制作1,000,000”职位一样便宜。
这也使系统更具可扩展性。
我同意Will的这个观点。
在页面上创建“事件”,以便每次发生事件时,一个用户删除一个帖子,它会查询带有该事件的事件模块,可以说,EVENT_USER_DELETE_POST,然后你可以选择该事件并基于它建立一个查询。然后您可以决定是否颁发徽章。
这将保持两个逻辑分开并保持模块化设计。这种方式应该很容易实现。
唯一的缺点是,如果事件未被“捕获”,那么用户可能已经获得了徽章标准,但尚未获得奖励。但是,这绝不应该发生。我能想到的唯一情况是如果数据库是手动操作的。
如果你走这条路线,注意添加新徽章时需要分析现有用户应该已经获得的情况。 – 2009-02-07 02:08:48