Frage

Ich habe darüber nachgedacht, wie die Badge -Funktion ähnlich wie auf einer neuen Website implementiert werden kann. Was ist der beste Weg, um Kriterien für Abzeichen zu speichern?

Zwei Ideen:

  • All Code
  • 'Second System' - Erstellen Sie eine Meta -Architektur für die Definition von Abzeichen und deren Kriterien. Speichern Sie einige Informationen in der Datenbank und lassen Sie sie Code abfragen, um die Abzeichen und deren Kriterien herauszufinden.

Gibt es bessere Wege?

War es hilfreich?

Lösung

Regeln.

Sie erstellen Ereignisse im System und verwenden Regeln innerhalb eines Ereignisstromprozessors.

Sagen Sie insbesondere, Sie haben ein Abzeichen "MADEL 10 Beiträge". Sie führen nicht aus "Wählen Sie zählen (*) aus Posts aus, in denen Benutzer =: Benutzer" für jeden Beitrag. Sie haben vielmehr eine einfache Regel, in der jeder Beitrag vorbeikommt und sie "zählen", wodurch der Regeln Status im Benutzerprofil speichert.

Auf diese Weise ist "10 Beiträge" so billig wie "1.000.000" Beiträge.

Dies macht das System auch viel erweiterbarer.

Andere Tipps

Ich stimme Will in diesem zu.

Erstellen Sie "Ereignisse" über die Seiten, sodass jedes Mal, wenn ein Ereignis stattfindet, dh. Ein Benutzer löscht einen Beitrag, erfragt das Ereignismodul mit dem Ereignis, sagen wir, Event_User_Delete_Post und dann können Sie dieses Ereignis auswählen und basierend darauf eine Abfrage erstellen. Sie können dann entscheiden, ob ein Abzeichen vergeben wird oder nicht.

Dadurch wird die beiden Logik getrennt und ein modulares Design beibehalten. Es sollte sehr einfach auf diese Weise implementiert werden.

Der einzige Nachteil ist, dass ein Benutzer, wenn das Ereignis nicht "erfasst" wurde, ein Badge -Kriterium verdient hat, es aber noch nicht belohnt wurde. Dies sollte jedoch niemals auftreten. Die einzige Situation, an die ich denken kann, ist, ob die Datenbank manuell manipuliert wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top