我想尝试在我正在建设的新网站上设计一个奖励系统。例如(仅用于说明目的):
堆栈溢出的medals system是另一个例子。
我的问题是,您可以轻松地将每个徽章的描述和名称存储在数据库表中。
**tbl_Badges**
ID | Badge Name | canHaveMultiple | hasProgress | progressScale
----------------------------------------------------------------------------
1 Copy Editor Yes No null
2 The Mob Yes No null
3 Jquery No Yes 100
然后将用户与这些徽章关联起来:
**tbl_UsersBadges**
ID | Badge ID | User ID
---------------------------
1 1 5
2 1 5
3 2 5
4 2 12
(也许还有另一个通过比例徽章等来存储用户进度)
但困难在于编制奖励这些徽章的触发器。
这样的系统是否在网站上使用硬编码触发器构建?由于这些徽章的广泛性和灵活性,这是我能想到的唯一方法。但是,如果将触发器硬编码为徽章ID,则在更改任何内容时必须非常小心。
这样的系统是如何工作的呢?这违背了我所学到的。或者我是否错误地解决了这个问题?
答案 0 :(得分:3)
首先,您需要确保清楚地列出“奖励”用户操作。然后,您必须创建一些代码,这些代码将在其中一个操作发生时触发。有多种方法可以查看解决方案:
答案 1 :(得分:1)
我只是从软件中抛出事件,甚至异步地从后端帮助程序中捕获它们,后端帮助程序将添加徽章,计划通知等。您可以使用消息传递系统(AMQP或类似的)来处理来自后端帮助程序的这些事件。