Sfoglia il codice sorgente

Merge branch 'bugfix/dd-deduct-no300' into feture/dd-1467-fxdel

root 3 anni fa
parent
commit
bc5b88515d
1 ha cambiato i file con 33 aggiunte e 19 eliminazioni
  1. 33 19
      common/helpers/bonus/BonusCalc.php

+ 33 - 19
common/helpers/bonus/BonusCalc.php

@@ -1635,13 +1635,23 @@ class BonusCalc extends BaseObject {
                 // 添加到有奖励信息的数据中
                 CalcCache::addHasBonusUsers($user['USER_ID'], $this->_periodNum);
                 //CalcCache::addHasMonthBonusUsers($user['USER_ID'], $this->_periodNum);
-                //扣除相应的复消积分和管理费
-                $deductData = $this->deduct($user['USER_ID'], $user['ORI_BONUS']);
-                // 把对碰后的奖金存入缓存中
-                CalcCache::bonus($user['USER_ID'], $this->_periodNum, 'BONUS_BS', $user['ORI_BONUS'], $deductData);
-                $realBonusBs = $deductData['surplus']; // 扣除管理费和复消积分后的实发蓝星奖金
-                $manageTax = $deductData['manageTax']; // 管理费
-                $point = $deductData['reConsumePoints'];// 复消积分
+                $fxStatus = $this->_isMonthPerfLimit($user['USER_ID']);
+                if ($fxStatus) {
+                    //扣除相应的复消积分和管理费
+                    $deductData = $this->deduct($user['USER_ID'], $user['ORI_BONUS']);
+                    // 把对碰后的奖金存入缓存中
+                    CalcCache::bonus($user['USER_ID'], $this->_periodNum, 'BONUS_BS', $user['ORI_BONUS'], $deductData);
+                    $realBonusBs = $deductData['surplus']; // 扣除管理费和复消积分后的实发蓝星奖金
+                    $manageTax = $deductData['manageTax']; // 管理费
+                    $point = $deductData['reConsumePoints'];// 复消积分
+                } else {
+                    // 如果未满足月消费,则不扣除管理费和复消积分了
+                    CalcCache::bonus($user['USER_ID'], $this->_periodNum, 'BONUS_BS', $user['ORI_BONUS']);
+                    $realBonusBs = $user['ORI_BONUS'];
+                    $manageTax = 0; // 管理费
+                    $point = 0;// 复消积分
+                }
+                
                 // 更新蓝星奖金存储过程的实发金额数据
                 CalcBonusBS::updateAll(['AMOUNT' => $realBonusBs, 'MANAGE_TAX' => $manageTax, 'RECONSUME_POINTS' => $point], 
                 'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', 
@@ -3246,17 +3256,7 @@ class BonusCalc extends BaseObject {
             // $totalCheckPv = $monthPerf + $decPv;
             // $fxPvStatus = $totalCheckPv >= $this->_sysConfig['monthPcsPvFxCondition']['VALUE'];
             // 逻辑改成,用户此月累计消费总额大于等于配置,取消订单类型的配置
-            $userMonthTotal = PerfMonth::find()
-            ->where(
-                'USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH', 
-                ['USER_ID'=>$userId, 'CALC_MONTH'=>$this->_calcYearMonth]
-            )
-            ->asArray()
-            ->one();
-            $fxPvStatus = false;
-            if (isset($userMonthTotal['PV_PCS']) && $userMonthTotal['PV_PCS'] >= $this->_sysConfig['monthPcsPvFxCondition']['VALUE']) {
-                $fxPvStatus = true;
-            }
+            $fxPvStatus = $this->_isMonthPerfLimit($userId);
             // BONUS_REAL 字段是发到用户的真实奖金
             if ( $fxPvStatus ) {
                 // 管理奖改成了蓝星奖,但是对于用户来说依旧叫管理奖.字段改成bs.
@@ -3569,5 +3569,19 @@ class BonusCalc extends BaseObject {
         return $baseScore;
     }
 
-
+    // 判断是否满足月最低消费
+    public function _isMonthPerfLimit($userId) {
+        $userMonthTotal = PerfMonth::find()->where(
+            'USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH', 
+            ['USER_ID'=>$userId, 'CALC_MONTH'=>$this->_calcYearMonth]
+        )
+        ->asArray()
+        ->one();
+        $fxPvStatus = false;
+        if (isset($userMonthTotal['PV_PCS']) && $userMonthTotal['PV_PCS'] >= $this->_sysConfig['monthPcsPvFxCondition']['VALUE']) {
+            $fxPvStatus = true;
+        }
+        
+        return $fxPvStatus;
+    }
 }