[討論] 會過期的點數,獲得和使用的記錄方式

作者: Kenqr (function(){})()   2023-01-18 17:20:16
使用者可以獲得點數並用來買東西,但是點數有使用期限,
使用點數時會自動優先從最快過期的點數開始使用。
考慮到人為操作時總會有出錯的時候,或者使用者可能會想要取消購買,
所以資料表需要記錄足夠的資訊,讓資料可以進行修改或是刪除。
假設使用者 foo 獲得了 200 點會在 2023-05-01 過期的點數,
以及 300 點會在 2023-07-01 過期的點數。
之後花費 450 點進行購買,會把 5 月過期的 200 點都用掉,
並且把 7 月過期的 300 點用掉 250 點,剩下 50 點。
目前設想的記錄方式如下(時間、備註等欄位省略):
credit
id user balance expire credit_id payment_id
1 foo 200 2023-05-01 null null
2 foo 300 2023-07-01 null null
3 foo -200 null 1 1
4 foo -250 null 2 1
payment
id user credit product_id
1 foo 450 5
不知道這樣的設計是否合理,或者應該要如何修改比較好?
感覺應該是很常見的問題,但就算想 Google 也只會跑出一堆不相關的結果。
作者: kop14922000 (MrDin)   2023-01-18 19:09:00
路過,只是覺得好有親切感,我前年第一份工作的點數系統也是在想怎麼規劃XD
作者: CSBS (地上波)   2023-01-25 23:05:00
購買後點數逾期再取消購買你還不還點數點數這種東西基本要累點兌點還點到期還要逾期扣點這五個型態才會有正確的balance要更多功能性還可能要延遲生效所以不只建立日還要一個生效日預算可能來自不同單位的話還要名目及點數來源的欄位

Links booklink

Contact Us: admin [ a t ] ucptt.com