4

構築中の新しいウェブサイトで報酬システムを試して設計したいと考えています。例 (説明目的のみ):

ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

スタック オーバーフローのメダル システムは別の例です。

私の質問は、各バッジの説明と名前をデータベース テーブルに簡単に保存できるということです。

**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

(そしておそらく、スケールバッジなどを通じてユーザーの進行状況を保存するための別のものなど)

しかし、これらのバッジを授与するトリガーをプログラミングするのは困難です。

このようなシステムは、Web サイトにハードコードされたトリガーで構築されていますか? これらのバッジの広さと柔軟性のために、これは私が考えることができる唯一の方法です. ただし、トリガーがバッジ ID にハードコードされている場合は、何かを変更するときに細心の注意を払う必要があります。

では、これがそのようなシステムの仕組みですか?それは私が学んだことに反する。それとも、私は問題に間違ってアプローチしていますか?

4

2 に答える 2

4

最初に、「リワード」ユーザー アクションの明確なリストがあることを確認する必要があります。次に、これらのアクションのいずれかが発生したときにトリガーされるコードを作成する必要があります。ソリューションを確認する方法は複数あります。

  1. 報酬につながる可能性のある各アクションをデータベースに保存します。次に、データベース内の実際のトリガーがこれらのアクション プロパティに基づいてバッジを付与するか、crontab ジョブが作業を行う可能性があります。利点は、報酬システムの計算を変更すると、ユーザー アクションをリプレイして新しい報酬を取り戻すことができることです。
  2. 他のメソッドを呼び出す前に自動的に呼び出されるハブ メソッドをコーディングします。アクションに基づいて、報酬を付与し、後で実際のメソッドにリダイレクトできます。
  3. あなたが言及したようにハードコードされたアクションを使用しますが、これは面倒でエラーが発生しやすいです。
于 2011-02-22T11:48:48.173 に答える
1

ソフトウェアからイベントをスローし、バッジを追加したり、通知をスケジュールしたりするバックエンド ヘルパーから、たとえ非同期であってもそれらをキャッチします。メッセージング システム (AMQP または類似) を使用して、バックエンド ヘルパーからのこれらのイベントを処理できます。

于 2011-02-22T11:51:16.540 に答える