[讨论] 会过期的点数,获得和使用的记录方式

楼主: 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