1

我正在尝试设计一个推荐奖励系统,根据推荐提供的业务量奖励用户推荐他们的同事和朋友。

例如。约翰指的是莎莉。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 年 5 月 28 日,他生成了一张 50 美元的发票。因为第一个奖励应该已经过期,所以只有 40 美元的剩余奖励应该应用到发票上。

虽然我可以生成一个每天手动“过期”旧奖励的脚本,但我似乎记得有人解释了一种聪明的方法来选择和插入借记到现有的奖励 SQL 表中,这样你所要做的就是知道当前日期和旧里程被自动排除,一切平衡。不幸的是,经过相当多的搜索,我找不到。

关于如何构建它以轻松适应奖励的使用并考虑到未使用的奖励在特定时间后到期的任何想法。

编辑:这就是我要找的东西: 处理过期航空公司里程的流程

到目前为止,我是这样定义主要奖励表的:

+------------------+------------------+------+-----+---------+----------------+
| 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,referrer_cust_id 是他们推荐的客户的 ID。

我基本上遵循先前过期航空公司里程链接的指导,该链接表明,当“领取”奖励时,只需总结“未使用”和“未过期”的可用积分。

4

0 回答 0