紹介が提供するビジネスの量に基づいて、同僚や友人を紹介したユーザーに報酬を与える紹介賞システムを設計しようとしています。
例えば。ジョンはサリーを指します。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、referral_cust_id は紹介した顧客の ID です。
私は基本的に、報酬が「請求」されたときに、「未使用」と「未期限」の両方の利用可能なポイントを合計することを示唆する、以前の期限切れの航空会社のマイル リンクのガイダンスに従っています。