|
|
@@ -10,6 +10,7 @@ namespace common\helpers\bonus;
|
|
|
|
|
|
use common\helpers\Cache;
|
|
|
use common\helpers\Date;
|
|
|
+use common\helpers\LoggerTool;
|
|
|
use common\helpers\snowflake\SnowFake;
|
|
|
use common\helpers\Tool;
|
|
|
use common\models\CalcBonus;
|
|
|
@@ -48,6 +49,7 @@ use common\models\EmployLevel;
|
|
|
use common\models\FlowBonus;
|
|
|
use common\models\PerfActiveUser;
|
|
|
use common\models\ScoreMonth;
|
|
|
+use common\models\StarCrownLevel;
|
|
|
use common\models\User;
|
|
|
use common\models\UserInfo;
|
|
|
use common\models\UserPerf;
|
|
|
@@ -69,6 +71,7 @@ class BonusCalc extends BaseObject {
|
|
|
private $_sysConfig = [];
|
|
|
private $_decLevelConfig = [];
|
|
|
private $_empLevelConfig = [];
|
|
|
+ private $_starCrownLevelConfig = [];
|
|
|
private $_decRoleConfig = [];
|
|
|
private $_errors = [];
|
|
|
private $_periodNum = 0;
|
|
|
@@ -301,11 +304,10 @@ class BonusCalc extends BaseObject {
|
|
|
|
|
|
$this->calcBonusGarage($this->_sysConfig['openGarage']);
|
|
|
$t22 = microtime(true);
|
|
|
- echo('计算车房奖' . ($this->_sysConfig['openGarage']['VALUE'] ? '完成' : '关闭').',耗时:' . round($t22 - $t21, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL);
|
|
|
+ echo('计算车房奖' . ($this->_sysConfig['openGarage']['VALUE'] ? '完成' : '关闭').',耗时:' . round($t22 - $t21, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL . PHP_EOL);
|
|
|
$this->_updatePercent(69);
|
|
|
|
|
|
|
|
|
-
|
|
|
//把奖金会员写入缓存
|
|
|
$this->loopMonthBonusUserFromDbToCache();
|
|
|
$t30 = microtime(true);
|
|
|
@@ -341,7 +343,7 @@ class BonusCalc extends BaseObject {
|
|
|
echo('积分写库操作完成,耗时:' . round($t34 - $t33, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL);
|
|
|
|
|
|
$t35 = microtime(true);
|
|
|
- echo('结算全部完成,共耗时:' . round($t35 - $t34, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL);
|
|
|
+ echo('结算全部完成,共耗时:' . round($t35 - $t34, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL . PHP_EOL);
|
|
|
} catch (\Exception $e) {
|
|
|
$this->errorCalcTask();
|
|
|
$this->addError('calc', $e->getMessage());
|
|
|
@@ -376,6 +378,7 @@ class BonusCalc extends BaseObject {
|
|
|
$this->_sysConfig = Cache::getSystemConfig();
|
|
|
$this->_decLevelConfig = Cache::getDecLevelConfig();
|
|
|
$this->_empLevelConfig = Cache::getEmpLevelConfig();
|
|
|
+ $this->_starCrownLevelConfig = Cache::getStarCrownLevelConfig();
|
|
|
$this->_decRoleConfig = CalcCache::getDecRoleConfig($this->_periodNum);
|
|
|
$periodNum = $this->_periodNum;
|
|
|
// 获取本年月和上年月
|
|
|
@@ -1206,6 +1209,7 @@ class BonusCalc extends BaseObject {
|
|
|
'perfArr' => $perfArr,
|
|
|
'touchBonus' => 0,
|
|
|
];
|
|
|
+
|
|
|
// 获取会员的报单级别
|
|
|
$userBaseInfo = CalcCache::getUserInfo($userId, $this->_periodNum);
|
|
|
$decLevelConfig = $this->_decLevelConfig;
|
|
|
@@ -1226,7 +1230,7 @@ class BonusCalc extends BaseObject {
|
|
|
if ($touchBonusArr['touchBonus'] <= 0) continue;
|
|
|
|
|
|
$teamBonus = $touchBonusArr['touchBonus'];
|
|
|
- //判断级别上限
|
|
|
+ //判断级别上限,个人奖金封顶限制
|
|
|
$teamBonus = $this->declarationLevelCap($teamBonus, $userId, $userBaseInfo['DEC_LV']);
|
|
|
if( $teamBonus <= 0 ) continue;
|
|
|
|
|
|
@@ -1239,12 +1243,20 @@ class BonusCalc extends BaseObject {
|
|
|
// 把对碰后的奖金存入缓存中
|
|
|
CalcCache::bonus($userId, $periodNum, 'BONUS_QY', $teamBonus, $deductData);
|
|
|
|
|
|
+ // TODO:取小腿值
|
|
|
+ $payLeg = max([$perfArr['SURPLUS_1L'], $perfArr['SURPLUS_2L']]);
|
|
|
+ // 计算荣衔星级
|
|
|
+ $starCrown = StarCrownLevel::getStarCrown($payLeg);
|
|
|
+ // 星级放入缓存
|
|
|
+ CalcCache::addUserStartCrown($userId, $periodNum, $starCrown['ID']);
|
|
|
+
|
|
|
//团队奖流水
|
|
|
$insertBonusData[] = [
|
|
|
'ID' => SnowFake::instance()->generateId(),
|
|
|
'USER_ID' => $userId,
|
|
|
'LAST_DEC_LV' => $userBaseInfo['DEC_LV'],
|
|
|
'LAST_EMP_LV' => $userBaseInfo['EMP_LV'],
|
|
|
+ 'LAST_STAR_LV' => $starCrown['ID'],
|
|
|
'LAST_STATUS' => $userBaseInfo['STATUS'],
|
|
|
'AMOUNT' => $deductData['surplus'],
|
|
|
'ORI_BONUS' => $teamBonus,
|
|
|
@@ -1261,7 +1273,6 @@ class BonusCalc extends BaseObject {
|
|
|
'touchPerfArr' => $touchPerfArr,
|
|
|
'nowDecLevelConfig' => $nowDecLevelConfig,
|
|
|
'decLevel' => $userBaseInfo['DEC_LV'],
|
|
|
-
|
|
|
]),
|
|
|
];
|
|
|
|
|
|
@@ -3377,15 +3388,15 @@ class BonusCalc extends BaseObject {
|
|
|
':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
|
|
|
- ]
|
|
|
- );
|
|
|
+// // 共享奖流水
|
|
|
+// 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',
|
|
|
+ CalcBonusTG::updateAll(['LAST_EMP_LV' => $nowBsEmpLv], 'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM',
|
|
|
[
|
|
|
':USER_ID' => $data['USER_ID'],
|
|
|
':PERIOD_NUM' => $this->_periodNum
|
|
|
@@ -3398,32 +3409,32 @@ class BonusCalc extends BaseObject {
|
|
|
':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',
|
|
|
+// // 服务奖流水
|
|
|
+// 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);
|
|
|
@@ -3451,6 +3462,8 @@ class BonusCalc extends BaseObject {
|
|
|
// $empLv = $this->nowMonthPerfData($userId)['LAST_EMP_LV'];
|
|
|
// }
|
|
|
$pervSurplusPerf = CalcCache::surplusPerf($userId, $this->_periodNum);
|
|
|
+ // 星级
|
|
|
+ $starCrownLv = CalcCache::getUserStartCrown($userId, $this->_periodNum);
|
|
|
|
|
|
// //没有共享和管理奖 以前的管理奖和共享奖逻辑
|
|
|
// $bonusReal = $bonus['BONUS_BD'] + $bonus['BONUS_TG'] + $bonus['BONUS_XF'] + $bonus['BONUS_YJ'] + $bonus['BONUS_QY'] + $bonus['BONUS_YC'] + $bonus['BONUS_YC_EXTRA'] + $bonus['BONUS_VIP'] + $standardBonus;
|
|
|
@@ -3560,6 +3573,7 @@ class BonusCalc extends BaseObject {
|
|
|
'LAST_REAL_NAME' => $baseInfo['REAL_NAME'],
|
|
|
'LAST_DEC_LV' => $baseInfo['DEC_LV'],
|
|
|
'LAST_EMP_LV' => $empLv,
|
|
|
+ 'LAST_STAR_LV' => $starCrownLv ?? StarCrownLevel::getDefaultLevelId(),
|
|
|
'LAST_STATUS' => $baseInfo['STATUS'],
|
|
|
'LAST_MOBILE' => $baseInfo['MOBILE'],
|
|
|
'LAST_PERIOD_AT' => $baseInfo['PERIOD_NUM'],
|