Selaa lähdekoodia

复消积分,调整,每次都扣除,只不过会员端展示的时候,隐藏为0. 复消积分非月节点不发放

root 3 vuotta sitten
vanhempi
commit
2f47a20354
2 muutettua tiedostoa jossa 32 lisäystä ja 25 poistoa
  1. 28 25
      common/helpers/bonus/BonusCalc.php
  2. 4 0
      common/helpers/bonus/CalcCache.php

+ 28 - 25
common/helpers/bonus/BonusCalc.php

@@ -1548,12 +1548,12 @@ class BonusCalc extends BaseObject {
 
                     
                     // //扣除相应的复消积分和管理费
-                    // $deductData = $this->deduct($bonusUserId, $bonus);
-                    // CalcCache::bonus($bonusUserId, $this->_periodNum, 'BONUS_GX', $bonus, $deductData,'',true);
+                    $deductData = $this->deduct($bonusUserId, $bonus);
+                    CalcCache::bonus($bonusUserId, $this->_periodNum, 'BONUS_GX', $bonus, $deductData,'',true);
 
                     // 
                     // 非月节点,共享奖实发覆盖成0. 只有月节点期的时候,才sum一下总共享奖原奖金,再扣管理费和复消积分
-                    CalcCache::bonus($bonusUserId, $this->_periodNum, 'BONUS_GX', $bonus);
+                    //CalcCache::bonus($bonusUserId, $this->_periodNum, 'BONUS_GX', $bonus);
                     CalcCache::addHasMonthBonusUsers($bonusUserId, $this->_periodNum);
 
                     //共享奖流水
@@ -1567,10 +1567,10 @@ class BonusCalc extends BaseObject {
                         'LAST_FROM_DEC_LV' => $userBaseInfo['DEC_LV'],
                         'LAST_FROM_EMP_LV' => $userEmpLevel,
                         'LAST_FROM_STATUS' => $userBaseInfo['STATUS'],
-                        'AMOUNT' => 0, // $deductData['surplus'], // 20220524 共享奖金,前三期只展示原奖金,最后一期月节点,才展示实发还有复消积分
+                        'AMOUNT' => $deductData['surplus'], // 20220524 共享奖金,前三期只展示原奖金,最后一期月节点,才展示实发还有复消积分
                         'ORI_BONUS' => $bonus,
-                        'RECONSUME_POINTS' => 0, // $deductData['reConsumePoints'],// 20220524 共享奖金,前三期只展示原奖金,最后一期月节点,才展示实发还有复消积分
-                        'MANAGE_TAX' => 0, //$deductData['manageTax'], // 20220524 共享奖金,前三期只展示原奖金,最后一期月节点,才展示实发还有复消积分
+                        'RECONSUME_POINTS' => $deductData['reConsumePoints'],// 20220524 共享奖金,前三期只展示原奖金,最后一期月节点,才展示实发还有复消积分
+                        'MANAGE_TAX' => $deductData['manageTax'], // 20220524 共享奖金,前三期只展示原奖金,最后一期月节点,才展示实发还有复消积分
                         'PERIOD_NUM' => $this->_periodNum,
                         'CALC_YEAR' => $this->_calcYear,
                         'CALC_MONTH' => $this->_calcYearMonth,
@@ -3287,7 +3287,7 @@ class BonusCalc extends BaseObject {
                 // $buleStartManageTax = isset($userBS['MANAGE_TAX']) && !empty($userBS['MANAGE_TAX']) ? $userBS['MANAGE_TAX'] : 0; // 管理费
                 // 20220524 共享奖金,前三期只展示原奖金,最后一期月节点,才展示实发还有复消积分.获取总gx原奖金,一起扣除管理费和复消积分
                 $monthSumData = CalcBonus::findUseSlaves()
-                ->select('SUM(ORI_BONUS_GX) AS BONUS_GX_SUM, SUM(BONUS_GL) AS BONUS_GL_SUM')
+                ->select('SUM(BONUS_GX) AS BONUS_GX_SUM, SUM(BONUS_GL) AS BONUS_GL_SUM')
                 ->where('USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH', 
                     [
                         'USER_ID'=>$userId, 
@@ -3296,36 +3296,39 @@ class BonusCalc extends BaseObject {
                 )
                 ->asArray()
                 ->one();
+                // 因为非月节点周期,未发放复消积分.所以,需要结算月满足最低消费的时候,一起发放
+                $gxPointMonth = CalcBonusGX::findUseSlaves()
+                ->select('SUM(RECONSUME_POINTS) AS FLOW_GX_POINT')
+                ->where('USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH AND PERIOD_NUM!=:PERIOD_NUM', 
+                    [
+                        'USER_ID'=>$userId, 
+                        'CALC_MONTH'=>$this->_calcYearMonth,
+                        'PERIOD_NUM' => $this->_periodNum
+                    ]
+                )
+                ->asArray()
+                ->one();
                 $bonusGxSum = $monthSumData['BONUS_GX_SUM'] ?? 0;
                 $bonusGlSum = $monthSumData['BONUS_GL_SUM'] ?? 0;
-                $realBonusGx += $bonusGxSum + $bonus['ORI_BONUS_GX'];
-                if ($realBonusGx > 0) {
-                    $gxDeduct = $this->deduct($userId, $realBonusGx); 
-                    // 月共享奖金实发,月共享奖金复消积分,月共享奖金管理费
-                    $gxRealMonth = $gxDeduct['surplus'];
-                    $gxManageMonth = $gxDeduct['manageTax'];
-                    $gxPointMonth = $gxDeduct['reConsumePoints'];
-                } else {
-                    $gxRealMonth = $gxManageMonth = $gxPointMonth = 0;
-                }
-                // 实发共享奖,还需要再扣除管理费和复消积分
-                $bonus['BONUS_GX'] = $gxRealMonth;
-                $realBonusGx = $gxRealMonth;
-                $bonus['RECONSUME_POINTS'] = $bonus['RECONSUME_POINTS']+$gxPointMonth;
+                $bonusPoint = $gxPointMonth['FLOW_GX_POINT'] ?? 0;
+                $bonus['RECONSUME_POINTS'] = $bonus['RECONSUME_POINTS'] + $bonusPoint;
+                $realBonusGx += $bonusGxSum + $bonus['BONUS_GX'];
                 $realBonusGl += $bonusGlSum + $bonus['BONUS_GL'];
-                $bonus['MANAGE_TAX'] = $bonus['MANAGE_TAX'] + $gxManageMonth;
                 $realBonusBs = $blueStartAmount; // 蓝星奖直接取数据库中算好的值PRODUCT_POINT
-                $bonusReal += $gxRealMonth + $realBonusBs + $realBonusGl;
+                $bonusReal += $realBonusGx + $realBonusBs + $realBonusGl;
                 $exchangePoints = isset($userBS['PRODUCT_POINT']) && !empty($userBS['PRODUCT_POINT']) ? $userBS['PRODUCT_POINT'] : 0; // 兑换积分
                 unset($monthSumData, $bonusGxSum, $bonusGlSum);
             } else {
                 // 蓝星奖原奖金在扣管理费的时候被加入到了BONUS_TOTAL,需要再减去原奖金
                 $oriBonusBs = isset($bonus['ORI_BONUS_BS']) && $bonus['ORI_BONUS_BS'] > 0 ? $bonus['ORI_BONUS_BS'] : 0;
                 $bonus['BONUS_TOTAL'] = $bonus['BONUS_TOTAL'] - $oriBonusBs;
+
+                // 如果未满足,则复消积分,应该不能发放
+                $bonus['RECONSUME_POINTS'] = $bonus['RECONSUME_POINTS']- $bonus['GX_RECONSUME_POINTS'];
             }
         } else {
-            // 非月节点,共享奖实发覆盖成0. 只有月节点期的时候,才sum一下总共享奖原奖金,再扣管理费和复消积分
-            $bonus['BONUS_GX'] = 0;
+            // 非月节点,共享奖金不发放复消积分和奖金
+            $bonus['RECONSUME_POINTS'] = $bonus['RECONSUME_POINTS']- $bonus['GX_RECONSUME_POINTS'];
         }
         // if( $this->_isCalcMonth ) {
         //     // 将查看是否复消300的逻辑,改成月结时判断当前月有一周活跃则本月活跃

+ 4 - 0
common/helpers/bonus/CalcCache.php

@@ -1455,6 +1455,7 @@ class CalcCache {
             'INCOME_TOTAL' => 0,
             'BONUS_TOTAL' => 0,
             'RECONSUME_POINTS' => 0,
+            'GX_RECONSUME_POINTS'=>0, // 共享奖复消积分,非月节点,不能发放,记录每期复消积分数据,发放的时候减去
             'MANAGE_TAX' => 0,
 
             //没有用到的
@@ -1489,6 +1490,9 @@ class CalcCache {
                     $value[$bonusType] += $deductData['surplus'];
                     $value['RECONSUME_POINTS'] += $deductData['reConsumePoints'];
                     $value['MANAGE_TAX'] += $deductData['manageTax'];
+                    if ($isGx === true) {
+                        $value['GX_RECONSUME_POINTS'] = $deductData['reConsumePoints'];
+                    }
                 }else {
                     $value[$bonusType] += $oriBonus;
                 }