Как разработать систему вознаграждений на моем сайте - PullRequest
3 голосов
/ 22 февраля 2011

Я хочу попробовать создать систему вознаграждений на новом веб-сайте, который я создаю. Например (только для иллюстративных целей):

enter image description here enter image description here enter image description here

Система медалей переполнения стека - еще один пример.

У меня вопрос, вы можете легко хранить описание и имя каждого значка в таблице базы данных.

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

(И, возможно, еще один, чтобы сохранить прогресс пользователя с помощью значков масштаба и т. Д.)

Но трудности заключаются в программировании триггеров, присуждающих эти значки.

Созданы ли подобные системы с жестко запрограммированными триггерами на веб-сайте? Это единственный способ, которым я могу придумать, из-за широты и гибкости этих значков. Однако, если триггеры жестко запрограммированы на идентификационный номер значка, вам нужно быть предельно осторожным при изменении чего-либо.

Так это как работает такая система? Это противоречит тому, что я узнал. Или я неправильно подхожу к проблеме?

Ответы [ 2 ]

3 голосов
/ 22 февраля 2011

Сначала вам нужно убедиться, что у вас есть четкий список "вознагражденных" действий пользователя. Затем вы должны создать некоторый код, который будет срабатывать, когда произойдет одно из этих действий. Существует несколько способов взглянуть на решение:

  1. Сохраните каждое действие, которое может привести к вознаграждению в базе данных. Затем либо фактические триггеры в базе данных будут предоставлять значки на основе этих свойств действия, либо задание crontab может выполнить эту работу. Преимущества состоят в том, что если вы измените свои расчеты системы вознаграждений, вы можете повторить действия пользователя, чтобы получить новое вознаграждение;
  2. Код некоторого метода-концентратора, который автоматически вызывается перед вызовом любых других методов. Основываясь на действии, вы можете присуждать награды и затем перенаправлять на реальный метод;
  3. Используйте жестко закодированные действия, как вы упомянули, но это утомительно и подвержено ошибкам;
1 голос
/ 22 февраля 2011

Я бы просто выбрасывал события из программного обеспечения и ловил их, даже асинхронно, от помощников бэкэнда, которые добавляли значки, уведомления по расписанию и так далее.Вы можете использовать систему обмена сообщениями (AMQP или аналог) для обработки этих событий от вспомогательных помощников.

...