Переглянути джерело

修改奖金流水记录聘级,当结算的时候入库流水表

zxiansheng 3 роки тому
батько
коміт
f7edc1e1f4
2 змінених файлів з 92 додано та 99 видалено
  1. 91 0
      common/helpers/bonus/BonusCalc.php
  2. 1 99
      common/helpers/bonus/BonusSend.php

+ 91 - 0
common/helpers/bonus/BonusCalc.php

@@ -43,6 +43,7 @@ use common\models\ResendQY;
 use common\models\DeclarationLevel;
 use common\models\DecOrder;
 use common\models\EmployLevel;
+use common\models\FlowBonus;
 use common\models\PerfActiveUser;
 use common\models\ScoreMonth;
 use common\models\User;
@@ -293,6 +294,8 @@ class BonusCalc extends BaseObject {
             //奖金写库
             // 这里增加新的奖金入库操作.
             $this->loopBonusUsers();
+            // 入库完成,将各个奖金计算流水会员聘级,更新成蓝星奖当时计算的聘级
+            $this->loopCalcBlueEmpLv();
             $this->_updatePercent(75);
             unset($calcWrite);
             $t20 = microtime(true);
@@ -1624,6 +1627,7 @@ class BonusCalc extends BaseObject {
                 // 添加到有奖励信息的数据中
                 CalcCache::addHasBonusUsers($user['USER_ID'], $this->_periodNum);
                 //CalcCache::addHasMonthBonusUsers($user['USER_ID'], $this->_periodNum);
+                // 增加逻辑,修改此时各个奖金计算时奖金流水中的会员聘级
 
             }
             return $this->calcBonusBsGL($offset + $this->_limit);
@@ -3043,6 +3047,93 @@ class BonusCalc extends BaseObject {
         return true;
     }
 
+    // 奖金入库完成,将各个奖金计算流水会员聘级,更新成蓝星奖当时计算的聘级
+    public function loopCalcBlueEmpLv($offset = 0) {
+        if( !$this->_isCalcMonth ) {
+            // 不是结算月,则不需要进行聘级调整
+            return false;
+        }
+        // 从缓存获取分页有收入的会员信息
+        $allData = CalcBonusBS::findUseDbCalc()
+            ->where('PERIOD_NUM=:PERIOD_NUM', [':PERIOD_NUM' => $this->_periodNum])
+            ->groupBy('USER_ID')
+            ->offset($offset)
+            ->limit($this->_limit)
+            ->asArray()
+            ->all();
+        if ($allData) {
+            foreach ($allData as $data) {
+                $nowBsEmpLv = $data['LEVEL_ID']; // 当前蓝星奖计算(即管理奖) 的等级
+                // 修改AR_CALC_BONUS的LAST_EMP_LV聘级,修改奖金流水的聘级AR_FLOW_BONUS表的LAST_EMP_LV
+                // 期结算结果
+                CalcBonus::updateAll(['LAST_EMP_LV' => $nowBsEmpLv], 'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', 
+                    [
+                        ':USER_ID' => $data['USER_ID'],
+                        ':PERIOD_NUM' => $this->_periodNum
+                    ]
+                );
+                // 奖金流水
+                FlowBonus::updateAll(['LAST_EMP_LV' => $nowBsEmpLv], 'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', 
+                    [
+                        ':USER_ID' => $data['USER_ID'],
+                        ':PERIOD_NUM' => $this->_periodNum
+                    ]
+                );
+                // 共享奖流水
+                CalcBonusGX::updateAll(['LAST_EMP_LV' => $nowBsEmpLv], 'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', 
+                    [
+                        ':USER_ID' => $data['USER_ID'],
+                        ':PERIOD_NUM' => $this->_periodNum
+                    ]
+                );
+                // 推广奖流水
+                CalcBonusTG::updateAll(['LAST_EMP_LV' => $nowBsEmpLv], 'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', 
+                    [
+                        ':USER_ID' => $data['USER_ID'],
+                        ':PERIOD_NUM' => $this->_periodNum
+                    ]
+                );
+                // 团队奖流水
+                CalcBonusQY::updateAll(['LAST_EMP_LV' => $nowBsEmpLv], 'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', 
+                    [
+                        ':USER_ID' => $data['USER_ID'],
+                        ':PERIOD_NUM' => $this->_periodNum
+                    ]
+                );
+                // 服务奖流水
+                CalcBonusBD::updateAll(['LAST_EMP_LV' => $nowBsEmpLv], 'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', 
+                    [
+                        ':USER_ID' => $data['USER_ID'],
+                        ':PERIOD_NUM' => $this->_periodNum
+                    ]
+                );
+                // 更新form的聘级
+                CalcBonusGX::updateAll(['LAST_FROM_EMP_LV' => $nowBsEmpLv], 'FROM_USER_ID=:FROM_USER_ID AND PERIOD_NUM=:PERIOD_NUM', 
+                    [
+                        ':FROM_USER_ID' => $data['USER_ID'],
+                        ':PERIOD_NUM' => $this->_periodNum
+                    ]
+                );
+                CalcBonusTG::updateAll(['LAST_FROM_EMP_LV' => $nowBsEmpLv], 'FROM_USER_ID=:FROM_USER_ID AND PERIOD_NUM=:PERIOD_NUM', 
+                    [
+                        ':FROM_USER_ID' => $data['USER_ID'],
+                        ':PERIOD_NUM' => $this->_periodNum
+                    ]
+                );
+                CalcBonusBD::updateAll(['LAST_FROM_EMP_LV' => $nowBsEmpLv], 'FROM_USER_ID=:FROM_USER_ID AND PERIOD_NUM=:PERIOD_NUM', 
+                    [
+                        ':FROM_USER_ID' => $data['USER_ID'],
+                        ':PERIOD_NUM' => $this->_periodNum
+                    ]
+                );
+            }
+            unset($allData);
+            return $this->loopCalcBlueEmpLv($offset + $this->_limit);
+        }
+        unset($allData);
+        return true;
+    }
+
     /**
      * 奖金
      * @param $userId

+ 1 - 99
common/helpers/bonus/BonusSend.php

@@ -413,107 +413,9 @@ class BonusSend extends BaseObject {
                 $transaction = Yii::$app->db->beginTransaction();
                 try {
                     foreach ($allData as $data) {
-                        $nowBsEmpLv = $data['LEVEL_ID']; // 当前蓝星奖计算(即管理奖) 的等级
-                        // 修改AR_CALC_BONUS的LAST_EMP_LV聘级,修改奖金流水的聘级AR_FLOW_BONUS表的LAST_EMP_LV
-                        // 期结算结果
-                        CalcBonus::updateAll(
-                            [
-                                'LAST_EMP_LV' => $nowBsEmpLv
-                            ], 
-                            'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', 
-                            [
-                                ':USER_ID' => $data['USER_ID'],
-                                ':PERIOD_NUM' => $this->_periodNum
-                            ]
-                        );
-                        // 奖金流水
-                        FlowBonus::updateAll(
-                            [
-                                'LAST_EMP_LV' => $nowBsEmpLv
-                            ], 
-                            'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', 
-                            [
-                                ':USER_ID' => $data['USER_ID'],
-                                ':PERIOD_NUM' => $this->_periodNum
-                            ]
-                        );
-                        // 共享奖流水
-                        CalcBonusGX::updateAll(
-                            [
-                                'LAST_EMP_LV' => $nowBsEmpLv
-                            ], 
-                            'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', 
-                            [
-                                ':USER_ID' => $data['USER_ID'],
-                                ':PERIOD_NUM' => $this->_periodNum
-                            ]
-                        );
-                        // 推广奖流水
-                        CalcBonusTG::updateAll(
-                            [
-                                'LAST_EMP_LV' => $nowBsEmpLv
-                            ], 
-                            'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', 
-                            [
-                                ':USER_ID' => $data['USER_ID'],
-                                ':PERIOD_NUM' => $this->_periodNum
-                            ]
-                        );
-                        // 团队奖流水
-                        CalcBonusQY::updateAll(
-                            [
-                                'LAST_EMP_LV' => $nowBsEmpLv
-                            ], 
-                            'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', 
-                            [
-                                ':USER_ID' => $data['USER_ID'],
-                                ':PERIOD_NUM' => $this->_periodNum
-                            ]
-                        );
-                        // 服务奖流水
-                        CalcBonusBD::updateAll(
-                            [
-                                'LAST_EMP_LV' => $nowBsEmpLv
-                            ], 
-                            'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', 
-                            [
-                                ':USER_ID' => $data['USER_ID'],
-                                ':PERIOD_NUM' => $this->_periodNum
-                            ]
-                        );
-                        // 更新form的聘级
-                        CalcBonusGX::updateAll(
-                            [
-                                'LAST_FROM_EMP_LV' => $nowBsEmpLv
-                            ], 
-                            'FROM_USER_ID=:FROM_USER_ID AND PERIOD_NUM=:PERIOD_NUM', 
-                            [
-                                ':FROM_USER_ID' => $data['USER_ID'],
-                                ':PERIOD_NUM' => $this->_periodNum
-                            ]
-                        );
-                        CalcBonusTG::updateAll(
-                            [
-                                'LAST_FROM_EMP_LV' => $nowBsEmpLv
-                            ], 
-                            'FROM_USER_ID=:FROM_USER_ID AND PERIOD_NUM=:PERIOD_NUM', 
-                            [
-                                ':FROM_USER_ID' => $data['USER_ID'],
-                                ':PERIOD_NUM' => $this->_periodNum
-                            ]
-                        );
-                        CalcBonusBD::updateAll(
-                            [
-                                'LAST_FROM_EMP_LV' => $nowBsEmpLv
-                            ], 
-                            'FROM_USER_ID=:FROM_USER_ID AND PERIOD_NUM=:PERIOD_NUM', 
-                            [
-                                ':FROM_USER_ID' => $data['USER_ID'],
-                                ':PERIOD_NUM' => $this->_periodNum
-                            ]
-                        );
                         //@todo 用户级别不变则不更新
                         if( $data['LEVEL_ID'] === $defaultEmpLv ) continue;
+                        $nowBsEmpLv = $data['LEVEL_ID']; // 当前蓝星奖计算(即管理奖) 的等级
                         $user = CalcCache::getUserInfo($data['USER_ID'], $this->_periodNum);
                         $userEmpLv = $user['EMP_LV']; // 用户的历史最高聘级
                         $userEmpLvSort = $empLv[$userEmpLv]; // 历史最高聘级的 级别值