---
# System prepended metadata

title: Untitled

---

會員等級系統

目標：實行會員等級，會員達成特定條件可升級。以後再實行不同等級有不同權限。等級分為固定等級與動態等級。固定等級為達成後不會下降的,相對動態等級為達成後一定時間內達成不了就會降級

背景：為娛樂城做準備

要求：
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
```

