|
|
@@ -579,28 +579,31 @@ class BonusSend extends BaseObject {
|
|
|
->offset($offset)
|
|
|
->limit($this->_limit)
|
|
|
->all();
|
|
|
+ LoggerTool::info($allData);
|
|
|
//@todo 用户级别不变则不更新
|
|
|
$defaultEmpLv = EmployLevel::getDefaultLevelId();
|
|
|
if ($allData) {
|
|
|
$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]; // 当前蓝星计算的聘级 级别值
|
|
|
+ if ($defaultEmpLv == $latestEmpLv) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 用户存储的最高聘级
|
|
|
$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']]);
|