我希望实现一个类似于stackoverflow徽章的东西。你也可以将它们等同于游戏中的成就。
但是我不确定如何为他们设计的数据库/代码/跟踪。
我知道我应该对徽章做什么,比如:
利他主义者×1456年您手动为另一个人的问题授予的第一笔奖金
因为它们是一次性事件,但如何处理其他事件,例如:
分析×16389访问了常见问题解答的每个部分
选民×1783人对600个问题进行了投票,25%或更多的投票是针对直言不讳的问题×188人在聊天中发布了10条消息,这些消息由10个不同的用户主演
等等。
如何处理这些问题,如何跟踪每个问题的进展,等等。有没有什么教程可以帮我找出适合他们的设计模式?
发布于 2012-04-05 20:30:23
对于给定的示例,基本上有两种机制是您需要的。
我不知道它是如何做到的,这只是一个解决方案的建议。
让我们先来看看“分析”。当用户访问FAQ中的特定区域时,您必须通过一个简单的标志来记录。让我们设想一个DB表,每个FAQ部分都有一个字段和一个用户ID,它从"N“(或0,或者您想要表示您的标志的任何方式)开始。当用户访问该区域时,您可以调用代码将该字段翻转为"Y“。当所有字段都为"Y“时,您可以授予该徽章。
至于“选民”和“直言不讳”,你可以通过对现有数据的查询来检索这些信息,前提是查询本身不是太繁琐。您需要考虑何时运行这些检查。这基本上可以归结为两种选择。
1)当执行了可能会获得徽章的操作时(例如,访问FAQ部分,对问题进行投票,由其他人主演的问题)
2)定期(每小时、每天等)根据当前数据检查您的所有徽章。
请记住,徽章在Stackoverflow中是单向的,所以如果您想要等效,那么您不必考虑“取消授予”徽章的逻辑。
https://stackoverflow.com/questions/10028348
复制相似问题