root 3 лет назад
Родитель
Сommit
7afd98c51c
2 измененных файлов с 12 добавлено и 6 удалено
  1. 10 5
      common/helpers/bonus/BonusCalc.php
  2. 2 1
      common/helpers/bonus/CalcCache.php

+ 10 - 5
common/helpers/bonus/BonusCalc.php

@@ -1546,10 +1546,14 @@ class BonusCalc extends BaseObject {
                     $bonus = $this->bonusTotalLimit($bonus, $bonusUserId, $bonusUserBaseInfo['REC_NUM'], $bonusUserBaseInfo['ZC_AMOUNT']);
                     if( $bonus <= 0 ) continue;
 
-                    //扣除相应的复消积分和管理费
-                    $deductData = $this->deduct($bonusUserId, $bonus);
-
-                    CalcCache::bonus($bonusUserId, $this->_periodNum, 'BONUS_GX', $bonus, $deductData);
+                    
+                    // //扣除相应的复消积分和管理费
+                    // $deductData = $this->deduct($bonusUserId, $bonus);
+                    // CalcCache::bonus($bonusUserId, $this->_periodNum, 'BONUS_GX', $bonus, $deductData,'',true);
+
+                    // // 20220524 共享奖金,前三期只展示原奖金,最后一期月节点,才展示实发还有复消积分
+                    // 非月节点,共享奖实发覆盖成0. 只有月节点期的时候,才sum一下总共享奖原奖金,再扣管理费和复消积分
+                    CalcCache::bonus($bonusUserId, $this->_periodNum, 'BONUS_GX', $bonus);
                     CalcCache::addHasMonthBonusUsers($bonusUserId, $this->_periodNum);
 
                     //共享奖流水
@@ -2981,7 +2985,8 @@ class BonusCalc extends BaseObject {
      * @return array
      * @throws \yii\db\Exception
      */
-    public function deduct($userId, $bonus) {
+    public function deduct($userId, $bonus, $isGx = false) {
+        // 如果是共享奖金,则只有最后一期,才扣除管理费?其他三期不扣除管理费.
         //判断是否达到了本月扣除复消的上限
         $cacheData = CalcCache::monthLastPeriodReconsumePoints($userId, $this->_periodNum, $this->_calcYearMonth);
         $bonusCache = CalcCache::bonus($userId, $this->_periodNum);

+ 2 - 1
common/helpers/bonus/CalcCache.php

@@ -1417,7 +1417,8 @@ class CalcCache {
      * @param array $deductData
      * @return array|mixed
      */
-    public static function bonus($userId, $periodNum, $bonusType = null, $oriBonus = 0.00, $deductData=[], $fromMeans='') {
+    public static function bonus($userId, $periodNum, $bonusType = null, $oriBonus = 0.00, $deductData=[], $fromMeans='',$isGx=false) {
+        // 如果是共享奖金,则不能往缓存中添加复消积分.共享奖金的复消积分最后再累加上去.
         $cacheKey = self::REDIS_KEY_PREFIX_BONUS . $periodNum;
         $value = [
             'BONUS_BD' => 0,