徽章/成就

b0x*_*0rz 16 c# sql-server

我正在寻找与stackoverflow徽章类似的东西.你也可以把它们等同于游戏中的成就.

但我不确定如何为他们设计数据库/代码/跟踪.

我得到我应该做的徽章,如:

Altruist×1456你在另一个人的问题上手动判给的第一笔赏金

因为它们是一次性事件,但如何处理其他事件,例如:

分析×16389访问常见问题
选民的每个部分×1783投票600个问题和25%或更多的总投票问题直言不讳×188发布10个聊天消息由10个不同用户主演

等等...

如何处理它们,如何跟踪每个进度等等...是否有一个教程或某些东西可以帮助我找出它们的设计模式?

Jam*_*man 17

对于给定的示例,您基本上需要两种机制.

我不知道它是如何在SO上完成的,这只是一个解决方案的建议.

我们先来看看'分析'.当用户访问FAQ中的特定区域时,您将必须通过简单标记进行记录.让我们设想一个DB表,每个FAQ部分都有一个字段和一个用户ID.这开始时为"N"(或0,或者你想要代表你的旗帜).当用户访问该区域时,您调用代码将该字段翻转为"Y".当所有字段均为"Y"时,您可以授予该徽章.

至于"选民"和"直言不讳",你可以通过对现有数据的查询来检索这些信息,假设他们的查询不是太繁琐.您将需要考虑何时运行这些检查.这基本上归结为两种选择.

1)当执行可能获得徽章的行动时(即访问常见问题部分,投票问题,由其他人主演的问题)

2)定期(每小时,每天等)根据当前数据检查所有徽章.

请记住,标记在Stackoverflow中是单向的,因此如果您想要等效,那么您不必考虑逻辑来"取消"徽章.