Kaynağa Gözat

更新用户级别bugfix

kevin_zhangl 3 yıl önce
ebeveyn
işleme
f24ed25aa3
1 değiştirilmiş dosya ile 9 ekleme ve 9 silme
  1. 9 9
      common/helpers/bonus/BonusSend.php

+ 9 - 9
common/helpers/bonus/BonusSend.php

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