فهرست منبع

会员奖金30BV限制

kevin_zhangl 3 سال پیش
والد
کامیت
ae158a8d69
4فایلهای تغییر یافته به همراه80 افزوده شده و 23 حذف شده
  1. 65 23
      common/helpers/bonus/BonusCalc.php
  2. 3 0
      common/models/CalcBonusBS.php
  3. 3 0
      common/models/CalcBonusQY.php
  4. 9 0
      sql/upgrade/2022_09_05_1969.sql

+ 65 - 23
common/helpers/bonus/BonusCalc.php

@@ -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->_isMonthPerfLimit($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->_isMonthPerfLimit($user['USER_ID']);
+                $oriBonus = $isActive ? $user['ORI_BONUS_MNT'] : 0;
+                $empLv = $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' => $empLv,
+                    ],
                 '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->_isMonthPerfLimit($user['USER_ID']);
+                $oriBonus = $isActive ? $user['ORI_BONUS_ABBR'] : 0;
+                $empLv = $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' => $empLv,
+                    ],
+        'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM',
                     [':USER_ID' => $user['USER_ID'], ':PERIOD_NUM' => $this->_periodNum]);
             }
             return $this->calcBonusBsYJ($offset + $this->_limit);

+ 3 - 0
common/models/CalcBonusBS.php

@@ -24,6 +24,9 @@ use Yii;
  * @property string $LOGS 日志
  * @property $ORI_BONUS 原奖金
  * @property $MANAGE_TAX 管理费
+ * @property int $IS_ACTIVE 是否活跃
+ * @property string $HOPE_CROWN_LV 应有starCrown级别
+ * @property string $HOPE_BONUS 应得奖金
  */
 class CalcBonusBS extends \common\components\ActiveRecord
 {

+ 3 - 0
common/models/CalcBonusQY.php

@@ -21,6 +21,9 @@ use Yii;
  * @property $ORI_BONUS 原奖金
  * @property $RECONSUME_POINTS 重复消费积分
  * @property $MANAGE_TAX 管理费
+ * @property int $IS_ACTIVE 是否活跃
+ * @property string $HOPE_CROWN_LV 应有starCrown级别
+ * @property string $HOPE_BONUS 应得奖金
  */
 class CalcBonusQY extends \common\components\ActiveRecord
 {

+ 9 - 0
sql/upgrade/2022_09_05_1969.sql

@@ -0,0 +1,9 @@
+ALTER TABLE `AR_CALC_BONUS_QY` ADD COLUMN `IS_ACTIVE` TINYINT NOT NULL DEFAULT '0' COMMENT '是否活跃: 0否 1是';
+ALTER TABLE `AR_CALC_BONUS_QY` ADD COLUMN `HOPE_CROWN_LV` varchar(32) COLLATE utf8mb4_bin DEFAULT '' COMMENT '应有starCrown级别';
+ALTER TABLE `AR_CALC_BONUS_QY` ADD COLUMN `HOPE_BONUS` decimal(16,3) NOT NULL DEFAULT 0.000 COMMENT '应得奖金';
+
+ALTER TABLE `AR_CALC_BONUS_BS` ADD COLUMN `IS_ACTIVE` TINYINT NOT NULL DEFAULT '0' COMMENT '是否活跃: 0否 1是';
+ALTER TABLE `AR_CALC_BONUS_BS` ADD COLUMN `HOPE_EMP_LV` varchar(32) COLLATE utf8mb4_bin DEFAULT '' COMMENT '应有starDir级别';
+ALTER TABLE `AR_CALC_BONUS_BS` ADD COLUMN `HOPE_BONUS` decimal(16,3) NOT NULL DEFAULT 0.000 COMMENT '应得奖金';
+ALTER TABLE `AR_CALC_BONUS_BS` ADD COLUMN `HOPE_BONUS_MNT` decimal(16,3) NOT NULL DEFAULT 0.000 COMMENT '应得管理奖金';
+ALTER TABLE `AR_CALC_BONUS_BS` ADD COLUMN `HOPE_BONUS_ABBR` decimal(16,3) NOT NULL DEFAULT 0.000 COMMENT '应得绩效奖金';