會員等級系統 目標:實行會員等級,會員達成特定條件可升級。以後再實行不同等級有不同權限。等級分為固定等級與動態等級。固定等級為達成後不會下降的,相對動態等級為達成後一定時間內達成不了就會降級 背景:為娛樂城做準備 要求: 1. 會員等級,固定等級,動態等級 1. 會員事件 1. 條件判定 2. 達成條件出口 ex.升級,紅包... 3. 等級名稱對照表? ---固定等級條件--- L0=訪客->永久 L1=註冊會員(綁定任一第三方)->永久 ---動態等級條件--- L2=首儲->永久 L3=有效投注達到n1->30天 L4=有效投注達到n2->30天 L5=有效投注達到n3->30天 …以此類推 1.當有效投注達到下一階段條件時,會員資格會立刻生效 2.當達到下一階段時,會員有效日會重新計算30天,有效投注也會重新計算 3.30天過期時會計算最後有效投注達到之等級 限制:限制條件只能達成一次/可多次達成 架構: 流程 ![](https://i.imgur.com/AXwKNY7.png) ![](https://i.imgur.com/VB0evxs.png) 會員 ``` create_table :user_level do |t| t.datetime :expiration_date t.integer :level t.integer :external_level t.timestamps end ``` 條件DB ``` create_table :user_event_conditions do |t| t.string :name, null: false t.string :event_key, null: false t.text :formula #array t.string :exit_method_name #成功出口 t.string :exit_arguments t.string :non_success_exit_method_name #不成功出口 t.string :non_success_exit_arguments t.boolean :enable_retake, default: false t.timestamps end ``` 會員達成條件log ``` create_table :user_event_logs do |t| t.references :user, null: false t.references :user_event_condition, null: false t.timestamps end ``` 任務進度紀錄 ``` create_table :user_event_progress do |t| t.references :user, null: false t.references :user_event_condition, null: false t.integer :progress t.integer :trager t.datetime :expiration_date t.timestamps end ```