web-dev-qa-db-ja.com

ユーザーのボーナスを計算する

ボーナス計算システムを自分のウェブサイトに実装しようとしています。ユーザーのボーナスを計算する必要があります。

これがどのように機能するかです:

  • User1は2%のボーナスを得ることができます
  • User2は例えば100ポイントを持っています
  • User1のボーナスは、User2ポイント* User1ボーナス%*レベルx%として計算されます。

ボーナスにはさまざまなレベルがあります。

  • レベル1x%ボーナス:User1は、User1の後に登録した3人のユーザーからボーナスのx%の金額を受け取ります。したがって、User1はUser2、User3、およびUser4からボーナスを受け取ります。

  • レベル2y%ボーナス:User1は、User1、User2、User3、およびUser4の後に登録した9人からボーナスのy%の金額を受け取ります。このように:User1は、User5、User6、User7、User8、User9、User10、User11、およびUser12からボーナスを受け取ります。

9つのレベルがあり、上記のように続きます。ユーザーは3倍されるため、User1がボーナスを獲得するユーザーは3、9、27、81などです。

ボーナス計算を実装する方法はありますか?ルールモジュールの使用を考えていましたが、これをどのように処理できるかわかりません。ユーザーが1万人以上の場合、パフォーマンスは低下しますか?

Userpointsモジュールが使用されます。

3
hene

ボーナスをフィールドとして扱い、 計算フィールド を使用して計算を管理します。

計算フィールドは非常に強力なCCKフィールドモジュールであり、コンテンツタイプにカスタムの「計算フィールド」を追加できます。これらの計算フィールドには、PHPコードを介して定義した値が入力されます。他のフィールド、現在のユーザー、データベーステーブルなど、Drupalで使用可能なものなら何でも利用できます。まだパワーがありますか?:))計算されたフィールド値を他のコンテンツフィールドと一緒にデータベースに保存するか、ノードビュー中にその場で「計算」するかを選択することもできます。 (ただし、ビューの使用にはデータベースに保存された値が必要であることに注意してください。)このフィールドは、文字通りCCKフィールドのスイスアーミーナイフです。だからあなたのPHPベースの値を作り始めてください!

ユーザーのプロファイルで、リンクから登録した、または登録時に名前を付けたすべてのユーザーに対して エンティティ参照 を保持します。単純な再帰またはディープスキャンを使用して実際の計算を行うと、そこにいます。

1
Mołot