Thursday, March 29, 2012

[PHP] 會員紅利點數有效期限機制

要在目前網站的會員紅利點數系統上,增加點數期限的機制,
參考Happygo的點數期限規則
http://www.gohappy.com.tw/intro/card_intro.jsp
大概是以年份做切割,有效期限為一年,簡單說就是,2000年
期間得到的點數,有效期限就是到2001/12/31,加上兩個月的
展延時間,則2002/2/28就是點數到期日。


以這個規則來説,程式人員只需要在每年的3/1進行一次過期
點數的結算。

資料庫已經有一個資料表專門紀錄每位使用者的每一次的點數
紀錄(不論"扣點"或"加點",類似log紀錄),如下:
id | name | date | point | memo
001 | 小王 | 2000/7/1 | +20 | 入會禮
002 | 老李 | 2000/7/5 | +10 | 生日禮
003 | 小王 | 2000/7/9 | -15 | 購物抵扣
...

假設現在的時間點是【2002/3/1】,要做的結算工作就是,
利用會員清單去跑迴圈,透過點數紀錄資料表,計算每位會員
的相關點數統計,再放到變數中,如下:(為求方便辨識用中文)

$過期點數
代表 2000/12/31 之前,該會員所有"加點"的加總。

$有效點數
代表 2001/1/1 到 2002/2/28 期間,該會員所有"加點"的加總。

$所有扣點
代表 2002/2/28之前,該會員所有"扣點"的加總。


if(($過期點數 + $所有扣點) > = 0) {
//因為剩餘過期點數已經失效了,所以要新增扣點紀錄
//扣點紀錄point的欄位值為【-($過期點數+$所有扣點)】
(INSERT過程省略)
}
else if(($過期點數 + $所有扣點) < 0) {
//因為過期點數已經被用完了,所以沒有任何點數失效
}

No comments:

Post a Comment