|
|
@@ -131,22 +131,18 @@ class CalcServeBonusCalc extends BaseObject {
|
|
|
echo('初始化、清空缓存及相关数据表完成,耗时:' . round($t4 - $t1, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL);
|
|
|
$this->_updatePercent(10);
|
|
|
// 蓝星奖放到最前面 奖金计算开始
|
|
|
- if($this->_sysConfig['openGL']['VALUE']) {
|
|
|
+ if($this->_sysConfig['openBS']['VALUE']) {
|
|
|
echo('计算蓝星奖开始,' . date('Y-m-d H:i:s', $t4) . PHP_EOL);
|
|
|
// 调用存储过程,计算蓝星管理奖金
|
|
|
$this->calcBsProcedure();
|
|
|
// 将有蓝星管理奖金的用户加入到有奖金缓存用户中
|
|
|
$this->calcBonusBsGL();
|
|
|
- // 将有【蓝星业绩奖金】的用户加入到有奖金缓存用户中
|
|
|
- // $this->calcBonusBsYJ();
|
|
|
- // // 将有【蓝星管理奖金】的用户加入到有奖金缓存用户中
|
|
|
- // $this->calcBonusBsGL();
|
|
|
if ($this->_isCalcMonth) {
|
|
|
ServeProcess::recordProcess($t4, time(), $this->_periodNum, '计算蓝星奖', 'bonus');
|
|
|
}
|
|
|
}
|
|
|
$t5 = microtime(true);
|
|
|
- echo('计算蓝星奖'.($this->_sysConfig['openGL']['VALUE']?'完成':'关闭').',耗时:' . round($t5 - $t4, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL);
|
|
|
+ echo('计算蓝星奖'.($this->_sysConfig['openBS']['VALUE']?'完成':'关闭').',耗时:' . round($t5 - $t4, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL);
|
|
|
|
|
|
if($this->_sysConfig['openFW']['VALUE']) {
|
|
|
$this->calcBonusBDStepOne();
|
|
|
@@ -235,18 +231,15 @@ class CalcServeBonusCalc extends BaseObject {
|
|
|
* 结算完成
|
|
|
*/
|
|
|
public function endCalcTask() {
|
|
|
- // 更新结算状态
|
|
|
- $this->setCalcStatus('end');
|
|
|
+ $this->setCalcStatus('end');// 更新结算状态
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 结算错误
|
|
|
*/
|
|
|
public function errorCalcTask() {
|
|
|
- // 清空所有本期结算用到的缓存
|
|
|
- CalcCache::clearCalcBonusCache($this->_periodNum);
|
|
|
- // 更新结算状态
|
|
|
- $this->setCalcStatus('fail');
|
|
|
+ CalcCache::clearCalcBonusCache($this->_periodNum); // 清空所有本期结算用到的缓存
|
|
|
+ $this->setCalcStatus('fail'); // 更新结算状态
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -333,12 +326,7 @@ class CalcServeBonusCalc extends BaseObject {
|
|
|
|
|
|
// 获取会员的报单级别
|
|
|
$userBaseInfo = CalcCache::getUserInfo($bonusUserId, $this->_periodNum);
|
|
|
-
|
|
|
- // 最后统一扣除管理费和复消积分
|
|
|
CalcCache::bonus($bonusUserId, $this->_periodNum, 'BONUS_TG', $recBonus);
|
|
|
- // 扣除相应的复消积分和管理费
|
|
|
- // $deductData = $this->deduct($bonusUserId, $recBonus);
|
|
|
- // CalcCache::bonus($bonusUserId, $periodNum, 'BONUS_TG', $recBonus, $deductData);
|
|
|
|
|
|
//来源会员信息
|
|
|
$fromUserInfo = CalcCache::getUserInfo($userId, $this->_periodNum);
|
|
|
@@ -375,7 +363,6 @@ class CalcServeBonusCalc extends BaseObject {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 服务奖第一步
|
|
|
* @param int $offset
|
|
|
@@ -565,10 +552,6 @@ class CalcServeBonusCalc extends BaseObject {
|
|
|
CalcCache::bonus($userId, $periodNum, 'CAPPED_BONUS_QY', $capBonusQy);
|
|
|
|
|
|
CalcCache::bonus($userId, $periodNum, 'BONUS_QY', $teamBonus);
|
|
|
- // //扣除相应的复消积分和管理费 --- 最后统一扣除管理费和复消积分
|
|
|
- // $deductData = $this->deduct($userId, $teamBonus);
|
|
|
- // CalcCache::bonus($userId, $periodNum, 'BONUS_QY', $teamBonus, $deductData);
|
|
|
-
|
|
|
// TODO:取小腿值
|
|
|
$payLeg = min([$perfArr['SURPLUS_1L'], $perfArr['SURPLUS_2L']]);
|
|
|
// 计算荣衔星级
|
|
|
@@ -611,7 +594,6 @@ class CalcServeBonusCalc extends BaseObject {
|
|
|
|
|
|
/**
|
|
|
* 季度奖计算
|
|
|
- *
|
|
|
*/
|
|
|
public function calcQuarter() {
|
|
|
if( !$this->_isCalcMonth || !in_array($this->_calcMonth, [3,6,9,12])) {
|
|
|
@@ -733,10 +715,7 @@ class CalcServeBonusCalc extends BaseObject {
|
|
|
if ($bonusData['LAST_DEC_LV'] == $minDecLevel) {
|
|
|
// 放入缓存
|
|
|
CalcCache::tourismBonus($bonusData['USER_ID'], $this->_periodNum, $amount);
|
|
|
- // 加入月奖的会员
|
|
|
- CalcCache::addHasMonthBonusUsers($bonusData['USER_ID'], $this->_periodNum);
|
|
|
}
|
|
|
-
|
|
|
$bonusData['AMOUNT'] = $amount;
|
|
|
$bonusData['POINT_COMPLEX'] = $bonusPointComplex;
|
|
|
}
|
|
|
@@ -749,7 +728,6 @@ class CalcServeBonusCalc extends BaseObject {
|
|
|
|
|
|
// 执行房奖的计算
|
|
|
public function calcBonusVilla() {
|
|
|
- // 月结,如果不是月结点,则直接退出
|
|
|
if (!$this->_isCalcMonth) {
|
|
|
return true;
|
|
|
}
|
|
|
@@ -842,8 +820,6 @@ class CalcServeBonusCalc extends BaseObject {
|
|
|
|
|
|
// 放入缓存
|
|
|
CalcCache::villaBonus($bonusData['USER_ID'], $this->_periodNum, $amount);
|
|
|
- // 加入月奖的会员
|
|
|
- CalcCache::addHasMonthBonusUsers($bonusData['USER_ID'], $this->_periodNum);
|
|
|
}
|
|
|
|
|
|
CalcBonusVilla::batchInsert($insertBonusData);
|
|
|
@@ -964,8 +940,6 @@ class CalcServeBonusCalc extends BaseObject {
|
|
|
|
|
|
// 放入缓存
|
|
|
CalcCache::garageBonus($bonusData['USER_ID'], $this->_periodNum, $amount);
|
|
|
- // 加入月奖的会员
|
|
|
- CalcCache::addHasMonthBonusUsers($bonusData['USER_ID'], $this->_periodNum);
|
|
|
}
|
|
|
|
|
|
CalcBonusGarage::batchInsert($insertBonusData);
|
|
|
@@ -976,7 +950,6 @@ class CalcServeBonusCalc extends BaseObject {
|
|
|
|
|
|
/**
|
|
|
* 季度奖写用户缓存
|
|
|
- *
|
|
|
*/
|
|
|
public function calcQuarterUser(int $offset = 0) {
|
|
|
if( !$this->_isCalcMonth || !in_array($this->_calcMonth, [3,6,9,12])) {
|
|
|
@@ -994,28 +967,11 @@ class CalcServeBonusCalc extends BaseObject {
|
|
|
// 达标条件:会员级别:钻卡
|
|
|
$config = json_decode($this->_sysConfig['openQuarter']['OPTIONS'], true);
|
|
|
$minDecLevel = $config['declarationLevel'] ?? [];
|
|
|
-
|
|
|
foreach ($allData as $user) {
|
|
|
- // 扣除相应的复消积分和管理费
|
|
|
- $deductData = $this->deduct($user['USER_ID'], $user['ORI_BONUS']);
|
|
|
- $realBonusBs = $deductData['surplus']; // 扣除管理费和复消积分后的实发蓝星奖金
|
|
|
- $manageTax = $deductData['manageTax']; // 管理费
|
|
|
- $point = $deductData['reConsumePoints'] + $user['RECONSUME_POINTS'];// 复消积分
|
|
|
// 管理奖钻卡发放
|
|
|
if ($user['LAST_DEC_LV'] == $minDecLevel) {
|
|
|
- // 把对碰后的奖金存入缓存中
|
|
|
- CalcCache::bonus($user['USER_ID'], $this->_periodNum, 'BONUS_QUARTER', $user['ORI_BONUS'], $deductData);
|
|
|
- // 加入月奖的会员
|
|
|
- CalcCache::addHasMonthBonusUsers($user['USER_ID'], $this->_periodNum);
|
|
|
+ CalcCache::bonus($user['USER_ID'], $this->_periodNum, 'BONUS_QUARTER', $user['ORI_BONUS']);
|
|
|
}
|
|
|
-
|
|
|
- // 更新奖金存储过程的实发金额数据
|
|
|
- CalcBonusQuarter::updateAll([
|
|
|
- 'RECONSUME_POINTS' => $point,
|
|
|
- 'AMOUNT' => $realBonusBs,
|
|
|
- 'MANAGE_TAX' => $manageTax],
|
|
|
- 'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM',
|
|
|
- [':USER_ID' => $user['USER_ID'], ':PERIOD_NUM' => $this->_periodNum]);
|
|
|
}
|
|
|
return $this->calcQuarterUser($offset + $this->_limit);
|
|
|
}
|
|
|
@@ -1025,9 +981,6 @@ class CalcServeBonusCalc extends BaseObject {
|
|
|
|
|
|
/**
|
|
|
* 蓝星管理奖金未拆分
|
|
|
- * @param int $offset
|
|
|
- * @return bool
|
|
|
- * @throws \yii\db\Exception
|
|
|
*/
|
|
|
public function calcBonusBsGL(int $offset = 0) {
|
|
|
if( !$this->_isCalcMonth ) {
|
|
|
@@ -1055,119 +1008,8 @@ class CalcServeBonusCalc extends BaseObject {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-// /**
|
|
|
-// * 蓝星管理奖金
|
|
|
-// * @param int $offset
|
|
|
-// * @return bool
|
|
|
-// * @throws \yii\db\Exception
|
|
|
-// */
|
|
|
-// public function calcBonusBsGL(int $offset = 0) {
|
|
|
-// if( !$this->_isCalcMonth ) {
|
|
|
-// // 不是结算月,则不进行计算
|
|
|
-// return false;
|
|
|
-// }
|
|
|
-// // 从缓存获取分页有收入的会员信息
|
|
|
-// $allData = CalcBonusBS::findUseDbCalc()
|
|
|
-// ->where('PERIOD_NUM=:PERIOD_NUM', [':PERIOD_NUM' => $this->_periodNum])
|
|
|
-// ->groupBy('USER_ID')
|
|
|
-// ->offset($offset)
|
|
|
-// ->limit($this->_limit)
|
|
|
-// ->asArray()
|
|
|
-// ->all();
|
|
|
-// if ($allData) {
|
|
|
-// // 达标条件:会员级别:钻卡
|
|
|
-// $config = json_decode($this->_sysConfig['openGL']['OPTIONS'], true);
|
|
|
-// $minDecLevel = $config['mntDec'] ?? [];
|
|
|
-
|
|
|
-// foreach ($allData as $user) {
|
|
|
-// //扣除相应的复消积分和管理费
|
|
|
-// $deductData = $this->deduct($user['USER_ID'], $user['ORI_BONUS_MNT']);
|
|
|
-// $realBonusBs = $deductData['surplus']; // 扣除管理费和复消积分后的实发蓝星奖金
|
|
|
-// $manageTax = $deductData['manageTax']; // 管理费
|
|
|
-// $point = $deductData['reConsumePoints'] + $user['RECONSUME_POINTS'];// 复消积分
|
|
|
-
|
|
|
-// // 管理奖钻卡发放
|
|
|
-// // if (in_array($user['LAST_DEC_LV'], $minDecLevel)) {
|
|
|
-// // 把对碰后的奖金存入缓存中
|
|
|
-// CalcCache::bonus($user['USER_ID'], $this->_periodNum, 'BONUS_BS_MNT', $user['ORI_BONUS_MNT'], $deductData);
|
|
|
-// // 加入月奖的会员
|
|
|
-// CalcCache::addHasMonthBonusUsers($user['USER_ID'], $this->_periodNum);
|
|
|
-// // }
|
|
|
-
|
|
|
-// // 更新蓝星奖金存储过程的实发金额数据
|
|
|
-// CalcBonusBS::updateAll([
|
|
|
-// 'RECONSUME_POINTS' => $point,
|
|
|
-// '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]);
|
|
|
-// }
|
|
|
-// return $this->calcBonusBsGL($offset + $this->_limit);
|
|
|
-// }
|
|
|
-// unset($allData);
|
|
|
-// 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', [':PERIOD_NUM' => $this->_periodNum])
|
|
|
-// ->groupBy('USER_ID')
|
|
|
-// ->offset($offset)
|
|
|
-// ->limit($this->_limit)
|
|
|
-// ->asArray()
|
|
|
-// ->all();
|
|
|
-// if ($allData) {
|
|
|
-// // 达标条件:会员级别:金卡、钻卡
|
|
|
-// $config = json_decode($this->_sysConfig['openGL']['OPTIONS'], true);
|
|
|
-// $minDecLevel = $config['abbrDec'] ?? [];
|
|
|
-
|
|
|
-// foreach ($allData as $user) {
|
|
|
-// //扣除相应的复消积分和管理费
|
|
|
-// $deductData = $this->deduct($user['USER_ID'], $user['ORI_BONUS_ABBR']);
|
|
|
-// $realBonusBs = $deductData['surplus']; // 扣除管理费和复消积分后的实发蓝星奖金
|
|
|
-// $manageTax = $deductData['manageTax']; // 管理费
|
|
|
-// $point = $deductData['reConsumePoints'] + $user['RECONSUME_POINTS'];// 复消积分
|
|
|
-
|
|
|
-// // 业绩奖金卡、钻卡发放
|
|
|
-// // 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);
|
|
|
-// // }
|
|
|
-
|
|
|
-// // 更新蓝星业绩奖金存储过程的实发金额数据
|
|
|
-// 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 array $oriPerfArr
|
|
|
- * @param array $perfArr
|
|
|
- * @param $percent
|
|
|
- * @param $loopTimes
|
|
|
- * @return array
|
|
|
*/
|
|
|
public function touchPerf(array $oriPerfArr, array $perfArr, $percent, $loopTimes=1) {
|
|
|
$resultArr = $oriPerfArr;
|
|
|
@@ -1297,10 +1139,6 @@ class CalcServeBonusCalc extends BaseObject {
|
|
|
|
|
|
/**
|
|
|
* 扣除复消积分和管理费
|
|
|
- * @param $userId
|
|
|
- * @param $bonus
|
|
|
- * @return array
|
|
|
- * @throws \yii\db\Exception
|
|
|
*/
|
|
|
public function deduct($userId, $bonus) {
|
|
|
//判断是否达到了本月扣除复消的上限
|
|
|
@@ -1340,9 +1178,6 @@ class CalcServeBonusCalc extends BaseObject {
|
|
|
|
|
|
/**
|
|
|
* 循环奖服务奖金会员,并入库
|
|
|
- * @param int $offset
|
|
|
- * @return bool
|
|
|
- * @throws \yii\db\Exception
|
|
|
*/
|
|
|
public function loopBonusUsers($offset = 0) {
|
|
|
echo sprintf("时间:[%s]缓存奖金数据入库,当前offset为:【%s】" . PHP_EOL, date('Y-m-d H:i:s', time()) , $offset);
|
|
|
@@ -1367,13 +1202,10 @@ class CalcServeBonusCalc extends BaseObject {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 奖金
|
|
|
- * @param $userId
|
|
|
- * @return array
|
|
|
- * @throws \yii\db\Exception
|
|
|
+ * 奖金入库
|
|
|
*/
|
|
|
public function bonusData($userId) {
|
|
|
- // 从缓存中获取用户的奖金
|
|
|
+ // 车奖和房奖是积分,不参加到奖金累计中.季度奖季度发放,无最低消费限制
|
|
|
$bonus = CalcCache::bonus($userId, $this->_periodNum);
|
|
|
$baseInfo = CalcCache::getUserInfo($userId, $this->_periodNum);
|
|
|
$perfData = CalcCache::nowPeriodPerf($userId, $this->_periodNum);
|
|
|
@@ -1381,70 +1213,30 @@ class CalcServeBonusCalc extends BaseObject {
|
|
|
$garageBonus = CalcCache::garageBonus($userId, $this->_periodNum);
|
|
|
$villaBonus = CalcCache::villaBonus($userId, $this->_periodNum);
|
|
|
$pervSurplusPerf = CalcCache::surplusPerf($userId, $this->_periodNum);
|
|
|
- // 星级
|
|
|
- $starCrownLv = CalcCache::getUserStarCrown($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'] +
|
|
|
- $bonus['BONUS_BS_MNT'] + $bonus['BONUS_BS_ABBR'] + $bonus['BONUS_QUARTER'];
|
|
|
- $realBonusGx = 0;
|
|
|
- $realBonusGl = 0;
|
|
|
- $realBonusBs = 0; // 蓝星管理奖. BlueStar
|
|
|
- $blueStartOriBonus = 0;
|
|
|
- $blueStartManageTax = 0;
|
|
|
- $exchangePoints = 0; // 蓝星奖管理奖. 产生的兑换积分
|
|
|
-
|
|
|
- $realBonusBsMnt = 0; // 蓝星管理奖——实发奖金
|
|
|
- $blueStartOriBonusMnt = 0; // 蓝星管理奖——原奖金
|
|
|
- $blueStartManageTaxMnt = 0; // 蓝星管理奖——管理费
|
|
|
-
|
|
|
- $realBonusBsAbbr = 0; // 蓝星业绩奖——实发奖金
|
|
|
- $blueStartOriBonusAbbr = 0; // 蓝星业绩奖——原奖金
|
|
|
- $blueStartManageTaxAbbr = 0; // 蓝星业绩奖——管理费
|
|
|
- if( $this->_isCalcMonth ) {
|
|
|
- // 个人月消费PV大于配置值,才会计算发放蓝星奖
|
|
|
- $fxPvStatus = $this->_isMonthPerfLimit($userId);
|
|
|
- // BONUS_REAL 字段是发到用户的真实奖金
|
|
|
- if ( $fxPvStatus ) {
|
|
|
- $userBS = CalcBonusBS::find()
|
|
|
- ->where(
|
|
|
- 'PERIOD_NUM=:PERIOD_NUM AND USER_ID=:USER_ID',
|
|
|
- [
|
|
|
- ':PERIOD_NUM' => $this->_periodNum,
|
|
|
- ':USER_ID' => $userId
|
|
|
- ]
|
|
|
- )
|
|
|
- ->select('AMOUNT,ORI_BONUS,MANAGE_TAX,LEVEL_ID,PRODUCT_POINT,AMOUNT_MNT,ORI_BONUS_MNT,MANAGE_TAX_MNT,AMOUNT_ABBR,ORI_BONUS_ABBR,MANAGE_TAX_ABBR')
|
|
|
- ->limit(1)
|
|
|
- ->orderBy('CREATED_AT DESC')
|
|
|
- ->asArray()
|
|
|
- ->all();
|
|
|
-
|
|
|
- $userBS = is_array($userBS) ? reset($userBS) : [];
|
|
|
- $blueStartAmount = isset($userBS['AMOUNT']) && !empty($userBS['AMOUNT']) ? $userBS['AMOUNT'] : 0; // 奖金
|
|
|
- $blueStartOriBonus = isset($userBS['ORI_BONUS']) && !empty($userBS['ORI_BONUS']) ? $userBS['ORI_BONUS'] : 0; // 原奖金
|
|
|
- $blueStartManageTax = isset($userBS['MANAGE_TAX']) && !empty($userBS['MANAGE_TAX']) ? $userBS['MANAGE_TAX'] : 0; // 管理费
|
|
|
-
|
|
|
- $realBonusBsMnt = $userBS['AMOUNT_MNT'] ?? 0; // 蓝星管理奖. 实发奖金
|
|
|
- $blueStartOriBonusMnt = $userBS['ORI_BONUS_MNT'] ?? 0; // 蓝星管理奖. 原奖金
|
|
|
- $blueStartManageTaxMnt = $userBS['MANAGE_TAX_MNT'] ?? 0; // 蓝星管理奖. 管理费
|
|
|
-
|
|
|
- $realBonusBsAbbr = $userBS['AMOUNT_ABBR'] ?? 0; // 蓝星业绩奖. 奖金
|
|
|
- $blueStartOriBonusAbbr = $userBS['ORI_BONUS_ABBR'] ?? 0; // 蓝星业绩奖. 原奖金
|
|
|
- $blueStartManageTaxAbbr = $userBS['MANAGE_TAX_ABBR'] ?? 0; // 蓝星业绩奖. 管理费
|
|
|
-
|
|
|
- $blueStartManageTax += $blueStartManageTaxMnt + $blueStartManageTaxAbbr; // 管理费
|
|
|
-
|
|
|
- $realBonusBs = $blueStartAmount; // 蓝星奖直接取数据库中算好的值PRODUCT_POINT
|
|
|
- $exchangePoints = isset($userBS['PRODUCT_POINT']) && !empty($userBS['PRODUCT_POINT']) ? $userBS['PRODUCT_POINT'] : 0; // 兑换积分
|
|
|
- }
|
|
|
+ $starCrownLv = CalcCache::getUserStarCrown($userId, $this->_periodNum);// 星级
|
|
|
+
|
|
|
+ $bonusReal = '0.000'; // 总实发
|
|
|
+ $deductConfig = Cache::getSystemConfig()['deductBonusItem']['OPTIONS'];
|
|
|
+ $deductConfig = json_decode($deductConfig, true); // {"deduct":["BONUS_BS","BONUS_QY","BONUS_QUARTER"],"noDeduct":["BONUS_BD","BONUS_TG"]}
|
|
|
+ $noDeduct = $deductConfig['noDeduct']; // 不需要扣除的奖金项
|
|
|
+ $deduct = $deductConfig['deduct']; // 需要扣除的奖金项
|
|
|
+ $totalDeductSum = '0.000'; // 需要扣除的奖金项,扣除完之后的实发金额
|
|
|
+ $deductManageTax = '0.000'; // 扣除的管理费
|
|
|
+ $deductReconsumePoints = '0.000'; // 扣除的复消积分
|
|
|
+ foreach($noDeduct as $v) {
|
|
|
+ $bonusReal+= $bonus[$v]; // 累加不需要扣除奖的项
|
|
|
}
|
|
|
-
|
|
|
- if( $this->_isCalcMonth ) { //季度奖
|
|
|
- if(in_array($this->_calcMonth, [3,6,9,12])){ // 季度奖
|
|
|
- }
|
|
|
+ foreach($deduct as $v) {
|
|
|
+ $totalDeductSum+= $bonus[$v]; // 需要扣除的累计之和
|
|
|
}
|
|
|
+ if ($totalDeductSum > 0) {
|
|
|
+ // 进行扣除管理费和复消积分
|
|
|
+ $tempDeduct = $this->deduct($userId, $totalDeductSum);
|
|
|
+ $totalDeductSum = $tempDeduct['surplus'];
|
|
|
+ $deductManageTax = $tempDeduct['manageTax'];
|
|
|
+ $deductReconsumePoints = $tempDeduct['reConsumePoints'];
|
|
|
+ }
|
|
|
+ $bonusReal += $totalDeductSum;
|
|
|
|
|
|
$result = [
|
|
|
'USER_ID' => $userId,
|
|
|
@@ -1458,34 +1250,20 @@ class CalcServeBonusCalc extends BaseObject {
|
|
|
'LAST_REC_REAL_NAME' => $baseInfo['REC_REAL_NAME'],
|
|
|
'LAST_CON_USER_NAME' => $baseInfo['CON_USER_NAME'],
|
|
|
'LAST_CON_REAL_NAME' => $baseInfo['CON_REAL_NAME'],
|
|
|
- 'EXCHANGE_POINTS' => $exchangePoints, // 兑换积分
|
|
|
// 'LAST_LOCATION' => $baseInfo['LOCATION'] ? $baseInfo['LOCATION'] : 1,
|
|
|
//@todo
|
|
|
'LAST_LOCATION' => 1,
|
|
|
'BONUS_BD' => $bonus['BONUS_BD'],
|
|
|
'BONUS_TG' => $bonus['BONUS_TG'],
|
|
|
'BONUS_QY' => $bonus['BONUS_QY'],
|
|
|
- 'RECONSUME_POINTS' => $bonus['RECONSUME_POINTS'],
|
|
|
- 'MANAGE_TAX' => $blueStartManageTax, // 管理费
|
|
|
+ 'RECONSUME_POINTS' => $deductReconsumePoints,
|
|
|
+ 'MANAGE_TAX' => $deductManageTax, // 管理费
|
|
|
'BONUS_INCOME'=>$bonus['INCOME_TOTAL'],
|
|
|
'BONUS_REAL'=> $bonusReal,
|
|
|
'BONUS_TOTAL'=>$bonus['BONUS_TOTAL'],
|
|
|
'ORI_BONUS_BD' => $bonus['ORI_BONUS_BD'],
|
|
|
'ORI_BONUS_TG' => $bonus['ORI_BONUS_TG'],
|
|
|
-
|
|
|
- 'BONUS_BS' => $realBonusBs, // 新的管理奖金,即蓝星管理奖
|
|
|
- 'ORI_BONUS_BS' => $blueStartOriBonus, // 蓝星管理奖金原奖金,即包含管理费
|
|
|
- 'REAL_BONUS_BS' => $realBonusBs, // 实发蓝星管理奖金
|
|
|
-
|
|
|
- 'BONUS_BS_MNT' => $realBonusBsMnt, // 蓝星管理奖
|
|
|
- 'ORI_BONUS_BS_MNT' => $blueStartOriBonusMnt, // 蓝星管理奖金原奖金,即包含管理费
|
|
|
- 'REAL_BONUS_BS_MNT' => $realBonusBsMnt, // 实发蓝星管理奖金
|
|
|
- 'MANAGE_TAX_MNT' => $blueStartManageTaxMnt, // 实发蓝星管理——管理费
|
|
|
-
|
|
|
- 'BONUS_BS_ABBR' => $realBonusBsAbbr, // 蓝星业绩奖
|
|
|
- 'ORI_BONUS_BS_ABBR' => $blueStartOriBonusAbbr, // 蓝星业绩奖金原奖金,即包含管理费
|
|
|
- 'REAL_BONUS_BS_ABBR' => $realBonusBsAbbr, // 实发蓝星业绩奖金
|
|
|
- 'MANAGE_TAX_ABBR' => $blueStartManageTaxAbbr, // 实发蓝星业绩奖——管理费
|
|
|
+ 'ORI_BONUS_BS' => $bonus['ORI_BONUS_BS'], // 蓝星管理奖金原奖金
|
|
|
|
|
|
'ORI_BONUS_QY' => $bonus['ORI_BONUS_QY'],
|
|
|
'ORI_CAPPED_BONUS_QY' => $bonus['ORI_CAPPED_BONUS_QY'], // 团队奖封顶前的奖金
|
|
|
@@ -1521,7 +1299,7 @@ class CalcServeBonusCalc extends BaseObject {
|
|
|
];
|
|
|
$resend = [];
|
|
|
|
|
|
- unset($bonus, $realBonusGx, $realBonusGl, $bonusReal);
|
|
|
+ unset($bonus, $realBonusGl, $bonusReal);
|
|
|
return ['result'=>$result,'resend'=>$resend];
|
|
|
}
|
|
|
|