我试图设计一个推荐奖励系统,奖励用户根据推荐提供的业务量来推荐他们的同事和朋友。
例如。约翰提到莎莉。 Sally做了100件事,John获得了5%的奖金,以申请他将来使用该服务。
我已经或多或少已经失去了那部分。我所挣扎的是,如果他们在一定时间后没有使用这些奖励而不必每天手动更新数据库,那么如何使这些奖励失效。
让我们说约翰多年来获得了5个奖项:
1) 2013-01-01 $10
2) 2013-05-28 $10
3) 2014-01-03 $10
4) 2014-02-03 $10
5) 2014-05-28 $10
截至目前的2015-05-28,他没有使用过任何奖励。但奖励在1年后到期。在2014-05-28他生成一张50美元的发票。由于第一笔奖励应该已经到期,因此只需将40美元的剩余奖励应用于发票。
虽然我可以生成一个手动“过期”的脚本。每天都有旧的奖励,我似乎记得有人解释了一种聪明的方法来选择并将借记插入到现有的奖励SQL表中,这样你所需要做的就是知道当前日期和旧里程被自动排除,一切都平衡。不幸的是,经过相当多的搜索后我无法找到它。
有关如何构建此功能以便轻松适应奖励的使用并考虑在一定时间后未使用的奖励到期的任何想法。
编辑:这是我要找的东西: Process for handling expiring airline miles
以下是我到目前为止如何定义主要奖励表:
+------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+------------------+------+-----+---------+----------------+
| ref_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| transaction_date | date | NO | | NULL | |
| referrer_cust_id | int(10) unsigned | NO | | NULL | |
| referral_cust_id | int(10) unsigned | YES | | NULL | |
| inv_num | int(10) unsigned | YES | | NULL | |
| pay_id | int(10) unsigned | NO | | NULL | |
| ref_rate | float | NO | | NULL | |
| credit_amt | float | YES | | NULL | |
| used_amt | float | YES | | 0 | |
+------------------+------------------+------+-----+---------+----------------+
referrer_cust_id是获得奖励的客户的ID,referral_cust_id是他们推荐的客户的ID。
我基本上遵循先前到期的航空公司里程链接的指导,该链接表明当要求奖励时,简单地总结可用的点数是'未使用'并且'未到期'。