|
|
@@ -281,10 +281,12 @@ class BonusCalc extends BaseObject {
|
|
|
// 蓝星奖入库,实际上是插入有奖金会员数据缓存中.
|
|
|
// 调用存储过程,计算蓝星管理奖金
|
|
|
$this->calcBsProcedure();
|
|
|
- // 将有蓝星管理奖金的用户加入到有奖金缓存用户中
|
|
|
+ // 将有【蓝星业绩奖金】的用户加入到有奖金缓存用户中
|
|
|
+ $this->calcBonusBsYJ();
|
|
|
+ // 将有【蓝星管理奖金】的用户加入到有奖金缓存用户中
|
|
|
$this->calcBonusBsGL();
|
|
|
$t18temp = microtime(true);
|
|
|
- echo('计算蓝星管理奖'.($this->_sysConfig['openGL']['VALUE']?'完成':'关闭').',耗时:' . round($t18temp - $t18, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL);
|
|
|
+ echo('计算蓝星奖'.($this->_sysConfig['openGL']['VALUE']?'完成':'关闭').',耗时:' . round($t18temp - $t18, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL);
|
|
|
$this->_updatePercent(65);
|
|
|
|
|
|
$this->calcBonusZoneBS($this->_sysConfig['openTravel']);
|
|
|
@@ -1731,7 +1733,7 @@ class BonusCalc extends BaseObject {
|
|
|
}
|
|
|
// 从缓存获取分页有收入的会员信息
|
|
|
$allData = CalcBonusBS::findUseDbCalc()
|
|
|
- ->where('PERIOD_NUM=:PERIOD_NUM', [':PERIOD_NUM' => $this->_periodNum])
|
|
|
+ ->where('PERIOD_NUM=:PERIOD_NUM AND ORI_BONUS_MNT > 0', [':PERIOD_NUM' => $this->_periodNum])
|
|
|
->groupBy('USER_ID')
|
|
|
->offset($offset)
|
|
|
->limit($this->_limit)
|
|
|
@@ -1739,31 +1741,30 @@ class BonusCalc extends BaseObject {
|
|
|
->all();
|
|
|
if ($allData) {
|
|
|
foreach ($allData as $user) {
|
|
|
- // 添加到有奖励信息的数据中
|
|
|
- CalcCache::addHasBonusUsers($user['USER_ID'], $this->_periodNum);
|
|
|
- //CalcCache::addHasMonthBonusUsers($user['USER_ID'], $this->_periodNum);
|
|
|
//扣除相应的复消积分和管理费
|
|
|
- $deductData = $this->deduct($user['USER_ID'], $user['ORI_BONUS']);
|
|
|
- // 把对碰后的奖金存入缓存中
|
|
|
- CalcCache::bonus($user['USER_ID'], $this->_periodNum, 'BONUS_BS', $user['ORI_BONUS'], $deductData);
|
|
|
+ $deductData = $this->deduct($user['USER_ID'], $user['ORI_BONUS_MNT']);
|
|
|
$realBonusBs = $deductData['surplus']; // 扣除管理费和复消积分后的实发蓝星奖金
|
|
|
$manageTax = $deductData['manageTax']; // 管理费
|
|
|
- $point = $deductData['reConsumePoints'];// 复消积分
|
|
|
+ $point = $deductData['reConsumePoints'] + $user['RECONSUME_POINTS'];// 复消积分
|
|
|
|
|
|
- // 蓝星管理奖
|
|
|
- $deductMntData = $this->deduct($user['USER_ID'], $user['ORI_BONUS_MNT']);
|
|
|
- // 蓝星业绩奖
|
|
|
- $deductAbbrData = $this->deduct($user['USER_ID'], $user['ORI_BONUS_ABBR']);
|
|
|
+ // 获取会员的报单级别
|
|
|
+ $userBaseInfo = CalcCache::getUserInfo($user['USER_ID'], $this->_periodNum);
|
|
|
+ $decLevelConfig = $this->_decLevelConfig;
|
|
|
+ $nowDecLevelID = $decLevelConfig[$userBaseInfo['DEC_LV']]['ID'] ?? '';
|
|
|
+ // 管理奖钻卡发放
|
|
|
+ if ($nowDecLevelID == '67ABCE0ECE705575E055736AECE8644D') {
|
|
|
+ // 添加到有奖励信息的数据中
|
|
|
+ CalcCache::addHasBonusUsers($user['USER_ID'], $this->_periodNum);
|
|
|
+ //CalcCache::addHasMonthBonusUsers($user['USER_ID'], $this->_periodNum);
|
|
|
+ // 把对碰后的奖金存入缓存中
|
|
|
+ CalcCache::bonus($user['USER_ID'], $this->_periodNum, 'BONUS_BS_MNT', $user['ORI_BONUS_MNT'], $deductData);
|
|
|
+ }
|
|
|
|
|
|
// 更新蓝星奖金存储过程的实发金额数据
|
|
|
CalcBonusBS::updateAll([
|
|
|
- 'AMOUNT' => $realBonusBs,
|
|
|
- 'MANAGE_TAX' => $manageTax,
|
|
|
'RECONSUME_POINTS' => $point,
|
|
|
- 'AMOUNT_MNT' => $deductMntData['surplus'] ?? 0,
|
|
|
- 'MANAGE_TAX_MNT' => $deductMntData['manageTax'] ?? 0,
|
|
|
- 'AMOUNT_ABBR' => $deductAbbrData['surplus'] ?? 0,
|
|
|
- 'MANAGE_TAX_ABBR' => $deductAbbrData['manageTax'] ?? 0],
|
|
|
+ 'AMOUNT_MNT' => $realBonusBs,
|
|
|
+ 'MANAGE_TAX_MNT' => $manageTax],
|
|
|
'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM',
|
|
|
[':USER_ID' => $user['USER_ID'], ':PERIOD_NUM' => $this->_periodNum]);
|
|
|
}
|
|
|
@@ -1773,6 +1774,61 @@ class BonusCalc extends BaseObject {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 蓝星业绩奖金
|
|
|
+ * @param int $offset
|
|
|
+ * @return bool
|
|
|
+ * @throws \yii\db\Exception
|
|
|
+ */
|
|
|
+ public function calcBonusBsYJ(int $offset = 0) {
|
|
|
+ if( !$this->_isCalcMonth ) {
|
|
|
+ // 不是结算月,则不进行计算
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ // 从缓存获取分页有收入的会员信息
|
|
|
+ $allData = CalcBonusBS::findUseDbCalc()
|
|
|
+ ->where('PERIOD_NUM=:PERIOD_NUM AND ORI_BONUS_ABBR > 0', [':PERIOD_NUM' => $this->_periodNum])
|
|
|
+ ->groupBy('USER_ID')
|
|
|
+ ->offset($offset)
|
|
|
+ ->limit($this->_limit)
|
|
|
+ ->asArray()
|
|
|
+ ->all();
|
|
|
+ if ($allData) {
|
|
|
+ foreach ($allData as $user) {
|
|
|
+ LoggerTool::info(1);
|
|
|
+ //扣除相应的复消积分和管理费
|
|
|
+ $deductData = $this->deduct($user['USER_ID'], $user['ORI_BONUS_ABBR']);
|
|
|
+ $realBonusBs = $deductData['surplus']; // 扣除管理费和复消积分后的实发蓝星奖金
|
|
|
+ $manageTax = $deductData['manageTax']; // 管理费
|
|
|
+ $point = $deductData['reConsumePoints'] + $user['RECONSUME_POINTS'];// 复消积分
|
|
|
+ LoggerTool::info(2);
|
|
|
+ // 获取会员的报单级别
|
|
|
+ $userBaseInfo = CalcCache::getUserInfo($user['USER_ID'], $this->_periodNum);
|
|
|
+ $decLevelConfig = $this->_decLevelConfig;
|
|
|
+ $nowDecLevelID = $decLevelConfig[$userBaseInfo['DEC_LV']]['ID'] ?? '';
|
|
|
+
|
|
|
+ // 业绩奖金卡、钻卡发放
|
|
|
+ if (in_array($nowDecLevelID, ['67ABCCE20A9F5553E055736AECE8644D', '67ABCE0ECE705575E055736AECE8644D'])) {
|
|
|
+ // 添加到有奖励信息的数据中
|
|
|
+ CalcCache::addHasBonusUsers($user['USER_ID'], $this->_periodNum);
|
|
|
+ //CalcCache::addHasMonthBonusUsers($user['USER_ID'], $this->_periodNum);
|
|
|
+ // 把对碰后的奖金存入缓存中
|
|
|
+ CalcCache::bonus($user['USER_ID'], $this->_periodNum, 'BONUS_BS_ABBR', $user['ORI_BONUS_ABBR'], $deductData);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新蓝星业绩奖金存储过程的实发金额数据
|
|
|
+ CalcBonusBS::updateAll(['AMOUNT_ABBR' => $realBonusBs,
|
|
|
+ 'MANAGE_TAX_ABBR' => $manageTax,
|
|
|
+ 'RECONSUME_POINTS' => $point],
|
|
|
+ 'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM',
|
|
|
+ [':USER_ID' => $user['USER_ID'], ':PERIOD_NUM' => $this->_periodNum]);
|
|
|
+ }
|
|
|
+ return $this->calcBonusBsYJ($offset + $this->_limit);
|
|
|
+ }
|
|
|
+ unset($allData);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 报单管理奖
|
|
|
* @param int $offset
|
|
|
@@ -1859,8 +1915,13 @@ class BonusCalc extends BaseObject {
|
|
|
//扣除相应的复消积分和管理费
|
|
|
$deductData = $this->deduct($bonusUserId, $manageBonus);
|
|
|
|
|
|
- CalcCache::bonus($bonusUserId, $this->_periodNum, 'BONUS_GL', $manageBonus, $deductData, CalcCache::FROM_MEANS_BD);
|
|
|
- CalcCache::addHasMonthBonusUsers($bonusUserId, $this->_periodNum);
|
|
|
+ // 钻卡会员奖金记入缓存
|
|
|
+ $decLevelConfig = $this->_decLevelConfig;
|
|
|
+ $nowDecLevelConfig = $decLevelConfig[$userBaseInfo['DEC_LV']];
|
|
|
+ if ($nowDecLevelConfig == '67ABCE0ECE705575E055736AECE8644D') {
|
|
|
+ CalcCache::bonus($bonusUserId, $this->_periodNum, 'BONUS_GL', $manageBonus, $deductData, CalcCache::FROM_MEANS_BD);
|
|
|
+ CalcCache::addHasMonthBonusUsers($bonusUserId, $this->_periodNum);
|
|
|
+ }
|
|
|
|
|
|
//管理奖流水
|
|
|
$insertBonusData[] = [
|