|
|
@@ -947,19 +947,8 @@ class BonusCalc extends BaseObject {
|
|
|
if ($allData) {
|
|
|
$insertBonusData = [];
|
|
|
foreach ($allData as $userId) {
|
|
|
- // 从缓存中获取会员的业绩信息
|
|
|
- $perfData = CalcCache::nowPeriodPerf($userId, $this->_periodNum);
|
|
|
- if( !$perfData ) continue;
|
|
|
- // 获取小组+自己的业绩
|
|
|
- $perfPv = $perfData['STORE_PV_GRAND'] ?? 0;
|
|
|
- if( $perfPv <= 0 ) continue;
|
|
|
- // 业绩乘以比例为奖金
|
|
|
- $storeBonus = Tool::formatPrice($perfPv * $this->_sysConfig['storePercent']['VALUE'] / 100);
|
|
|
- if ($storeBonus <= 0) continue;
|
|
|
- // 获取会员的报单级别
|
|
|
- $userBaseInfo = CalcCache::getUserInfo($userId, $this->_periodNum);
|
|
|
- $storeBonus = $this->bonusTotalLimit($storeBonus, $userId, $userBaseInfo['REC_NUM'], $userBaseInfo['ZC_AMOUNT']);
|
|
|
- if( $storeBonus <= 0 ) continue;
|
|
|
+ $storeBonus = $this->verifyStorePerf($userId);
|
|
|
+ if (empty($storeBonus)) continue;
|
|
|
// 判断此店铺是否是活跃用户,如果不活跃,则往上找一个活跃的店铺获得此奖
|
|
|
$isActive = $this->_isMonthPerfLimit($userId);
|
|
|
$bonusUserId = '';
|
|
|
@@ -1012,7 +1001,7 @@ class BonusCalc extends BaseObject {
|
|
|
'CREATED_AT' => Date::nowTime()
|
|
|
];
|
|
|
|
|
|
- unset($perfData, $perfPv, $perfUserInfo, $recBonus, $bonusUserId, $userBaseInfo, $userId, $deductData, $fromUserInfo);
|
|
|
+ unset($bonusUserId, $userId, $deductData);
|
|
|
}
|
|
|
CalcBonusST::batchInsert($insertBonusData);
|
|
|
unset($allData, $insertBonusData);
|
|
|
@@ -1024,7 +1013,7 @@ class BonusCalc extends BaseObject {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- // 未开启紧缩方式计算店补奖,不活跃即不给奖金
|
|
|
+ // 未开启紧缩方式计算店补奖,不活跃即不给奖金
|
|
|
public function calcStoreBonus(int $offset = 0) {
|
|
|
if( !$this->_isCalcMonth ) {
|
|
|
// 不是结算月,则不进行计算
|
|
|
@@ -1036,21 +1025,11 @@ class BonusCalc extends BaseObject {
|
|
|
if ($allData) {
|
|
|
$insertBonusData = [];
|
|
|
foreach ($allData as $userId) {
|
|
|
- // 从缓存中获取会员的业绩信息
|
|
|
- $perfData = CalcCache::nowPeriodPerf($userId, $this->_periodNum);
|
|
|
- if( !$perfData ) continue;
|
|
|
- // 获取小组+自己的业绩
|
|
|
- $perfPv = $perfData['STORE_PV_GRAND'] ?? 0;
|
|
|
- if( $perfPv <= 0 ) continue;
|
|
|
- // 业绩乘以比例为奖金
|
|
|
- $storeBonus = Tool::formatPrice($perfPv * $this->_sysConfig['storePercent']['VALUE'] / 100);
|
|
|
- if ($storeBonus <= 0) continue;
|
|
|
- // 获取会员的报单级别
|
|
|
- $userBaseInfo = CalcCache::getUserInfo($userId, $this->_periodNum);
|
|
|
- $storeBonus = $this->bonusTotalLimit($storeBonus, $userId, $userBaseInfo['REC_NUM'], $userBaseInfo['ZC_AMOUNT']);
|
|
|
- if( $storeBonus <= 0 ) continue;
|
|
|
+ $storeBonus = $this->verifyStorePerf($userId);
|
|
|
+ if (empty($storeBonus)) continue;
|
|
|
$surplus = $storeBonus;
|
|
|
$manageTax = $reConsumePoints = '0.000';
|
|
|
+ $deductData = [];
|
|
|
if ($this->_sysConfig['openStoreDeduct']['VALUE']) {
|
|
|
//扣除相应的复消积分和管理费
|
|
|
$deductData = $this->deduct($userId, $storeBonus);
|
|
|
@@ -1078,7 +1057,7 @@ class BonusCalc extends BaseObject {
|
|
|
'CREATED_AT' => Date::nowTime()
|
|
|
];
|
|
|
|
|
|
- unset($perfData, $perfPv, $perfUserInfo, $recBonus, $bonusUserId, $userBaseInfo, $userId, $deductData, $fromUserInfo);
|
|
|
+ unset($userId, $deductData);
|
|
|
}
|
|
|
CalcBonusST::batchInsert($insertBonusData);
|
|
|
unset($allData, $insertBonusData);
|
|
|
@@ -1090,6 +1069,37 @@ class BonusCalc extends BaseObject {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 通过用户id,校验店补奖,此用户是否有原奖金
|
|
|
+ */
|
|
|
+ public function verifyStorePerf($userId) {
|
|
|
+ // 从缓存中获取会员的业绩信息
|
|
|
+ $perfData = CalcCache::nowPeriodPerf($userId, $this->_periodNum);
|
|
|
+ if( !$perfData ) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ // 获取小组+自己的业绩
|
|
|
+ $perfPv = $perfData['STORE_PV_GRAND'] ?? 0;
|
|
|
+ if( $perfPv <= 0 ) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ // 业绩乘以比例为奖金
|
|
|
+ $storeBonus = Tool::formatPrice($perfPv * $this->_sysConfig['storePercent']['VALUE'] / 100);
|
|
|
+ if ($storeBonus <= 0) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ // 获取会员的报单级别
|
|
|
+ $userBaseInfo = CalcCache::getUserInfo($userId, $this->_periodNum);
|
|
|
+ $storeBonus = $this->bonusTotalLimit($storeBonus, $userId, $userBaseInfo['REC_NUM'], $userBaseInfo['ZC_AMOUNT']);
|
|
|
+ if( $storeBonus <= 0 ) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ unset($perfData, $perfPv, $userBaseInfo, $userId);
|
|
|
+
|
|
|
+ return $storeBonus;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 报单业绩奖
|
|
|
* @param int $offset
|