2012-04-05 194 views
16

我期待實現類似的東西,以stackoverflow徽章。你也可以將它們等同於遊戲中的成就。徽章/成就

但我不確定如何設計數據庫/代碼/跟蹤他們

我得到了我應該徽章如做:

邦匯×1456首先賞金您手動授予對另一個人的問題

,因爲他們是一次性事件,而是如何處理其他如:

分析×16389走訪FAQ
選民×1783的投票在600的每一個部分問題和總票數的25%以上都在問題 直言不諱×188聊天發佈10條信息是由10個不同的用戶

等主演...

如何處理,如何保持每個進程的跟蹤等等......是否有教程或可以幫助我找出設計模式的東西?

回答

17

對於給定的例子,基本上有兩種機制,你將需要。

我不知道它是如何完成的,這只是一個解決方案的建議。

我們先來看'分析'。當用戶訪問FAQ中的特定區域時,您將不得不通過簡單的標誌進行錄製。讓我們設想一個數據庫表,每個FAQ部分和一個用戶ID都有一個字段。這開始爲「N」(或0,或者您想表示您的標誌)。當用戶訪問該區域時,您會調用代碼將該字段翻轉爲「Y」。當所有字段都是「Y」時,您可以授予該徽章。對於「選民」和「直言不諱」,您可以通過對現有數據的查詢來檢索這些信息,假設他們的查詢不會太繁瑣。您將需要考慮何時運行這些檢查。這基本上歸結爲兩種選擇。

1)當執行一個動作可能會得到一個徽章頒發(FAQ的瀏覽器訪問部分,表決關於一個問題,問題主演由別人)

2)定期(每小時,每天,等等)根據當前數據對所有徽章進行檢查。

請記住,徽章在Stackoverflow中是單向的,所以如果你想要等價,那麼你不必考慮邏輯來「取消獎勵」徽章。

+0

我想我現在明白了。看起來很簡單:P只是一個問題 - 你說'分析'使用數據庫表,但會有很多這樣的類似徽章,我將如何去爲他們每個人?我應該爲每個徽章使用不同的表格,還是有某種方法將這些統一到一張表格中?否則,我可能會得到很多數據庫表,每個徽章類型一個......但答案是thnx - 這有助於我開始朝正確的方向發展。順便說一下,你的2意味着徽章在獲得成功的時刻不會獲得獎勵,對吧?是的,不會有不獎勵。 – b0x0rz 2012-04-05 12:38:54

+1

你如何實現這個表取決於你。你可以有一個帶有user_id,badge_id,badge_acheivement_id,flag的4列表 - 這可以擴展到多個徽章。而且,這意味着他們在獲得成功的那一刻就不會獲得獎勵。當然是 – 2012-04-05 12:42:04

+0

:)謝謝。我認爲這解決了我所有的問題。我認爲經常進行時間安排檢查有可能縮短「獲得」徽章和顯示徽章之間的時間差距。 – b0x0rz 2012-04-05 12:44:35