|
|
@@ -307,12 +307,12 @@ class BonusCalc extends BaseObject {
|
|
|
|
|
|
$this->calcBonusVilla();
|
|
|
$t22 = microtime(true);
|
|
|
- echo('计算房奖' . ($this->_sysConfig['openVilla']['VALUE'] ? '完成' : '关闭').',耗时:' . round($t22 - $t21, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL . PHP_EOL);
|
|
|
+ echo('计算房奖' . ($this->_sysConfig['openVilla']['VALUE'] ? '完成' : '关闭').',耗时:' . round($t22 - $t21, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL);
|
|
|
$this->_updatePercent(69);
|
|
|
|
|
|
$this->calcBonusGarage();
|
|
|
$t23 = microtime(true);
|
|
|
- echo('计算车奖' . ($this->_sysConfig['openGarage']['VALUE'] ? '完成' : '关闭').',耗时:' . round($t23 - $t22, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL . PHP_EOL);
|
|
|
+ echo('计算车奖' . ($this->_sysConfig['openGarage']['VALUE'] ? '完成' : '关闭').',耗时:' . round($t23 - $t22, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL);
|
|
|
$this->_updatePercent(69);
|
|
|
|
|
|
// 计算季度奖
|
|
|
@@ -1258,15 +1258,15 @@ class BonusCalc extends BaseObject {
|
|
|
//扣除相应的复消积分和管理费
|
|
|
$deductData = $this->deduct($userId, $teamBonus);
|
|
|
|
|
|
- // 把对碰后的奖金存入缓存中
|
|
|
- CalcCache::bonus($userId, $periodNum, 'BONUS_QY', $teamBonus, $deductData);
|
|
|
-
|
|
|
- // TODO:取小腿值
|
|
|
+ // 取小腿值
|
|
|
$payLeg = min([$perfArr['SURPLUS_1L'], $perfArr['SURPLUS_2L']]);
|
|
|
// 计算荣衔星级
|
|
|
$starCrown = StarCrownLevel::getStarCrown($payLeg);
|
|
|
- // 星级放入缓存
|
|
|
- CalcCache::addUserStarCrown($userId, $periodNum, $starCrown['ID']);
|
|
|
+
|
|
|
+ // 是否活跃
|
|
|
+ $isActive = $this->_isPerfActive($userId);
|
|
|
+ $oriBonus = $isActive ? $teamBonus : 0;
|
|
|
+ $lastCrownLv = $isActive ? $starCrown['ID'] : StarCrownLevel::getDefaultLevelId();
|
|
|
|
|
|
//团队奖流水
|
|
|
$insertBonusData[] = [
|
|
|
@@ -1275,10 +1275,10 @@ class BonusCalc extends BaseObject {
|
|
|
'ORI_CAPPED_BONUS_QY' => $capBonusQy,
|
|
|
'LAST_DEC_LV' => $userBaseInfo['DEC_LV'],
|
|
|
'LAST_EMP_LV' => $userBaseInfo['EMP_LV'],
|
|
|
- 'LAST_CROWN_LV' => $starCrown['ID'],
|
|
|
+ 'LAST_CROWN_LV' => $lastCrownLv,
|
|
|
'LAST_STATUS' => $userBaseInfo['STATUS'],
|
|
|
'AMOUNT' => $deductData['surplus'],
|
|
|
- 'ORI_BONUS' => $teamBonus,
|
|
|
+ 'ORI_BONUS' => $oriBonus,
|
|
|
'RECONSUME_POINTS' => $deductData['reConsumePoints'],
|
|
|
'MANAGE_TAX' => $deductData['manageTax'],
|
|
|
'PERIOD_NUM' => $this->_periodNum,
|
|
|
@@ -1293,8 +1293,18 @@ class BonusCalc extends BaseObject {
|
|
|
'nowDecLevelConfig' => $nowDecLevelConfig,
|
|
|
'decLevel' => $userBaseInfo['DEC_LV'],
|
|
|
]),
|
|
|
+ 'IS_ACTIVE' => (int)$isActive,
|
|
|
+ 'HOPE_CROWN_LV' => $starCrown['ID'],
|
|
|
+ 'HOPE_BONUS' => $teamBonus,
|
|
|
];
|
|
|
|
|
|
+ // 星级放入缓存
|
|
|
+ CalcCache::addUserStarCrown($userId, $periodNum, $lastCrownLv);
|
|
|
+ if ($oriBonus > 0) {
|
|
|
+ // 把对碰后的奖金存入缓存中
|
|
|
+ CalcCache::bonus($userId, $periodNum, 'BONUS_QY', $oriBonus, $deductData);
|
|
|
+ }
|
|
|
+
|
|
|
unset($perfData, $pervSurplusPerf, $perfArr, $oriPerfArr, $touchPerfArr, $userBaseInfo, $decLevelConfig, $touchBonusArr, $userId, $nowDecLevelConfig, $teamBonus, $deductData);
|
|
|
}
|
|
|
CalcBonusQY::batchInsert($insertBonusData);
|
|
|
@@ -2097,19 +2107,35 @@ class BonusCalc extends BaseObject {
|
|
|
$manageTax = $deductData['manageTax']; // 管理费
|
|
|
$point = $deductData['reConsumePoints'] + $user['RECONSUME_POINTS'];// 复消积分
|
|
|
|
|
|
+ // 是否活跃会员
|
|
|
+ $isActive = $this->_isPerfActive($user['USER_ID']);
|
|
|
+ $oriBonus = $isActive ? $user['ORI_BONUS_MNT'] : 0;
|
|
|
+ $lastEmpLv = $isActive ? $user['LEVEL_ID'] : EmployLevel::getDefaultLevelId();
|
|
|
+
|
|
|
// 管理奖钻卡发放
|
|
|
// if (in_array($user['LAST_DEC_LV'], $minDecLevel)) {
|
|
|
+ if ($oriBonus > 0) {
|
|
|
// 把对碰后的奖金存入缓存中
|
|
|
- CalcCache::bonus($user['USER_ID'], $this->_periodNum, 'BONUS_BS_MNT', $user['ORI_BONUS_MNT'], $deductData);
|
|
|
+ CalcCache::bonus($user['USER_ID'], $this->_periodNum, 'BONUS_BS_MNT', $oriBonus, $deductData);
|
|
|
// 加入月奖的会员
|
|
|
CalcCache::addHasMonthBonusUsers($user['USER_ID'], $this->_periodNum);
|
|
|
+ }
|
|
|
// }
|
|
|
|
|
|
// 更新蓝星奖金存储过程的实发金额数据
|
|
|
- CalcBonusBS::updateAll([
|
|
|
- 'RECONSUME_POINTS' => $point,
|
|
|
- 'AMOUNT_MNT' => $realBonusBs,
|
|
|
- 'MANAGE_TAX_MNT' => $manageTax],
|
|
|
+ CalcBonusBS::updateAll(
|
|
|
+ [
|
|
|
+ 'ORI_BONUS' => $user['ORI_BONUS'] + $oriBonus,
|
|
|
+ 'RECONSUME_POINTS' => $point,
|
|
|
+ 'AMOUNT_MNT' => $realBonusBs,
|
|
|
+ 'MANAGE_TAX_MNT' => $manageTax,
|
|
|
+ 'IS_ACTIVE' => (int)$isActive,
|
|
|
+ 'HOPE_BONUS' => $user['ORI_BONUS_MNT'] + $user['HOPE_BONUS_ABBR'],
|
|
|
+ 'HOPE_EMP_LV' => $user['LEVEL_ID'],
|
|
|
+ 'HOPE_BONUS_MNT' => $user['ORI_BONUS_MNT'],
|
|
|
+ 'ORI_BONUS_MNT' => $oriBonus,
|
|
|
+ 'LEVEL_ID' => $lastEmpLv,
|
|
|
+ ],
|
|
|
'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM',
|
|
|
[':USER_ID' => $user['USER_ID'], ':PERIOD_NUM' => $this->_periodNum]);
|
|
|
}
|
|
|
@@ -2150,20 +2176,36 @@ class BonusCalc extends BaseObject {
|
|
|
$manageTax = $deductData['manageTax']; // 管理费
|
|
|
$point = $deductData['reConsumePoints'] + $user['RECONSUME_POINTS'];// 复消积分
|
|
|
|
|
|
+ // 是否活跃会员
|
|
|
+ $isActive = $this->_isPerfActive($user['USER_ID']);
|
|
|
+ $oriBonus = $isActive ? $user['ORI_BONUS_ABBR'] : 0;
|
|
|
+ $lastEmpLv = $isActive ? $user['LEVEL_ID'] : EmployLevel::getDefaultLevelId();
|
|
|
+
|
|
|
// 业绩奖金卡、钻卡发放
|
|
|
// if (in_array($user['LAST_DEC_LV'], $minDecLevel)) {
|
|
|
// 把对碰后的奖金存入缓存中
|
|
|
- CalcCache::bonus($user['USER_ID'], $this->_periodNum, 'BONUS_BS_ABBR', $user['ORI_BONUS_ABBR'], $deductData);
|
|
|
- // 加入月奖的会员
|
|
|
- CalcCache::addHasMonthBonusUsers($user['USER_ID'], $this->_periodNum);
|
|
|
+ CalcCache::bonus($user['USER_ID'], $this->_periodNum, 'BONUS_BS_ABBR', $oriBonus, $deductData);
|
|
|
+ if ($oriBonus > 0) {
|
|
|
+ // 加入月奖的会员
|
|
|
+ CalcCache::addHasMonthBonusUsers($user['USER_ID'], $this->_periodNum);
|
|
|
+ }
|
|
|
// }
|
|
|
|
|
|
// 更新蓝星业绩奖金存储过程的实发金额数据
|
|
|
- CalcBonusBS::updateAll([
|
|
|
- 'AMOUNT_ABBR' => $realBonusBs,
|
|
|
- 'MANAGE_TAX_ABBR' => $manageTax,
|
|
|
- 'RECONSUME_POINTS' => $point],
|
|
|
- 'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM',
|
|
|
+ CalcBonusBS::updateAll(
|
|
|
+ [
|
|
|
+ 'ORI_BONUS' => $oriBonus,
|
|
|
+ 'AMOUNT_ABBR' => $realBonusBs,
|
|
|
+ 'MANAGE_TAX_ABBR' => $manageTax,
|
|
|
+ 'RECONSUME_POINTS' => $point,
|
|
|
+ 'IS_ACTIVE' => (int)$isActive,
|
|
|
+ 'HOPE_BONUS' => $user['ORI_BONUS_ABBR'],
|
|
|
+ 'HOPE_EMP_LV' => $user['LEVEL_ID'],
|
|
|
+ 'HOPE_BONUS_ABBR' => $user['ORI_BONUS_ABBR'],
|
|
|
+ 'ORI_BONUS_ABBR' => $oriBonus,
|
|
|
+ 'LEVEL_ID' => $lastEmpLv,
|
|
|
+ ],
|
|
|
+ 'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM',
|
|
|
[':USER_ID' => $user['USER_ID'], ':PERIOD_NUM' => $this->_periodNum]);
|
|
|
}
|
|
|
return $this->calcBonusBsYJ($offset + $this->_limit);
|
|
|
@@ -4079,16 +4121,26 @@ class BonusCalc extends BaseObject {
|
|
|
// 判断是否满足月最低消费
|
|
|
public function _isMonthPerfLimit($userId) {
|
|
|
$userMonthTotal = PerfMonth::find()->where(
|
|
|
- 'USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH',
|
|
|
+ 'USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH',
|
|
|
['USER_ID'=>$userId, 'CALC_MONTH'=>$this->_calcYearMonth]
|
|
|
)
|
|
|
- ->asArray()
|
|
|
- ->one();
|
|
|
+ ->asArray()
|
|
|
+ ->one();
|
|
|
$fxPvStatus = false;
|
|
|
if (isset($userMonthTotal['PV_PCS']) && $userMonthTotal['PV_PCS'] >= $this->_sysConfig['monthPcsPvFxCondition']['VALUE']) {
|
|
|
$fxPvStatus = true;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return $fxPvStatus;
|
|
|
}
|
|
|
+
|
|
|
+ // 判断会员是否活跃
|
|
|
+ public function _isPerfActive($userId): bool
|
|
|
+ {
|
|
|
+ $pv = PerfPeriod::find()->where('USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH AND PERIOD_NUM<=:PERIOD_NUM',
|
|
|
+ ['USER_ID'=>$userId, 'CALC_MONTH'=>$this->_calcYearMonth, 'PERIOD_NUM'=>$this->_periodNum])
|
|
|
+ ->SUM('PV_PCS');
|
|
|
+
|
|
|
+ return $pv >= $this->_sysConfig['monthPcsPvFxCondition']['VALUE'];
|
|
|
+ }
|
|
|
}
|