kevin_zhangl 3 лет назад
Родитель
Сommit
9b685d82af
1 измененных файлов с 11 добавлено и 12 удалено
  1. 11 12
      common/helpers/bonus/BonusSend.php

+ 11 - 12
common/helpers/bonus/BonusSend.php

@@ -585,22 +585,21 @@ class BonusSend extends BaseObject {
                 $transaction = Yii::$app->db->beginTransaction();
                 try {
                     foreach ($allData as $data) {
-                        //@todo 用户级别不变则不更新
-                        if( $data['LAST_EMP_LV'] === $defaultEmpLv ) continue;
-                        $nowBsEmpLv = $data['LAST_EMP_LV']; // 当前蓝星奖计算(即管理奖) 的等级
+                        // 蓝星奖计算的最新聘级
+                        $latestEmpLv = $data['LEVEL_ID'];    // 本期计算最新管理级别
+                        $latestEmpLvSort = $empLv[$latestEmpLv]; // 当前蓝星计算的聘级 级别值
+                        // 用户存储的最高聘级
                         $user = CalcCache::getUserInfo($data['USER_ID'], $this->_periodNum);
-                        $userEmpLv = $user['EMP_LV']; // 用户的历史最高聘级
-                        $userEmpLvSort = $empLv[$userEmpLv]; // 历史最高聘级的 级别值
-                        $nowBsEmpLvSort = $empLv[$nowBsEmpLv]; // 当前蓝星计算的聘级 级别值
-                        if ($nowBsEmpLvSort > $userEmpLvSort) {
-                            // 如果当前期的级别值大于历史最高级别,则更新用户表里的最高聘级
-                            User::updateAll(['EMP_LV' => $nowBsEmpLv], 'ID=:USER_ID', [':USER_ID' => $data['USER_ID']]);
+                        $highestEmpLv = $user['EMP_LV']; // 用户的历史最高聘级
+                        $highestEmpLvSort = $empLv[$highestEmpLv]; // 历史最高聘级的 级别值
+                        // 如果当前期的聘级高于用户表的最高聘级,则进行更新
+                        if ($latestEmpLvSort > $highestEmpLvSort) {
+                            User::updateAll(['EMP_LV' => $latestEmpLv], 'ID=:USER_ID', [':USER_ID' => $data['USER_ID']]);
                             User::deleteBaseInfoFromRedis($data['USER_ID']);
                         }
-
-                        // 更新最新级别
+                        // 更新最新用户表级别
                         User::updateAll([
-                            'LAST_EMP_LV' => $nowBsEmpLv,
+                            'LAST_EMP_LV' => $latestEmpLv,
                             'LAST_EMP_LV_UPDATED_AT' => time(),
                             'LAST_EMP_LV_UPDATED_PERIOD' => $this->_periodNum
                         ], 'ID=:USER_ID', [':USER_ID' => $data['USER_ID']]);