ホームページ >バックエンド開発 >PHPチュートリアル >有効期限付きポイント制度の設計

有効期限付きポイント制度の設計

WBOY
WBOYオリジナル
2016-06-23 14:19:363898ブラウズ

たとえば、いくつかのテーブルがあります。
user:uid username....
スコア (ポイントテーブル): 値 (ポイント)、Expiry (有効期間)...
order (注文テーブル):
Goods (製品テーブル) )
住所 (配送先住所テーブル)
...

現在の需要は、中国招商銀行のクレジット カード ポイント システムのようなものです。他のテーブルが必要な場合は、自分で追加できます。
ポイントが使えます。消費の際は有効期限が近いポイントから順に消費され、獲得ポイントや消費ポイントなどが確認できます。 10 2013-08-15 05:11:13 2 7 20 2013-08-15 05:11:14 3 5 20 2013-08-15 05:11:15
4 7 10 2013-08-15 05: 11:16

メッセージ (id=7) を削除したい場合は、テーブルに移動してメッセージを取得します。
1 つのメッセージに対して 20 が差し引かれると、その順序になります。 extime に基づいています。まず、id=1 のものを差し引きます (差し引くだけでは十分ではないので、そのまま削除します)。差し引く必要があるものは 10 個あり、次に id= のものを差し引きます。 2 (超過しているため、お金の値を更新する必要があります。)

id userid(use ?id)money(?points) extime(?period??)

1 7 10 2013-08-15 05:11: 13
2 7 20 2013-08-15 05:11:14
3 5 10 2013-08-15 05:11:15
4 7 10 2013-0 8-15 05:11:16

If ??( id=7) ステータスをキャンセルしたいのですが、?? を取得します。もちろん、1 つのトランザクションに対して 20 が差し引かれます。最初に id=1 のものを差し引きます (差し引くには不十分なので、直接削除してください)。差し引くと、10 になります。差し引きたい場合は、id=2 で 1 を差し引きます (超過したため、金額値)

「超過したので金額値を更新する必要があります。」

この値を更新すると、ユーザーが以前に取得したポイントレコードを取得できなくなります。


#1をベースに別のフィールド「usedmoney」(使用ポイント)を追加します
更新は「money」ではなく「usedmoney」で実行されます

このデザインには何か問題があるような気がしますが、それは少し減点するのは面倒です
他に何かアドバイスがあれば教えてください。 ? ?ありがとうございます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。