ソースを参照

feat: NC-53: 店服务奖业绩生成优化.

zhangl 1 年間 前
コミット
82b93840a1
2 ファイル変更36 行追加37 行削除
  1. 16 20
      common/helpers/bonus/BonusCalc.php
  2. 20 17
      common/helpers/bonus/PerfCalc.php

+ 16 - 20
common/helpers/bonus/BonusCalc.php

@@ -853,7 +853,7 @@ class BonusCalc extends BaseObject {
     }
 
     // 紧缩计算店服务奖,不活跃,则给一个活跃的店铺
-    public function calcStoreBonusReduce() {
+    public function calcStoreBonusReduce($offset) {
         if( !$this->_isCalcMonth ) {
             // 不是结算月,则不进行计算
             echo sprintf("时间:[%s]店服务奖金非月节点,不进行计算" . PHP_EOL, date('Y-m-d H:i:s', time()));
@@ -861,25 +861,24 @@ class BonusCalc extends BaseObject {
         }
 
         echo sprintf("时间:[%s]店服务奖金计算--紧缩方式" . PHP_EOL, date('Y-m-d H:i:s', time()));
-//        $allData = CalcCache::getHasPerfUsers($this->_periodNum, $offset, $this->_limit);
-        $condition = 'PERIOD_NUM=:PERIOD_NUM AND CALC_MONTH=:CALC_MONTH AND IS_STUDIO=:IS_STUDIO';
-        $params = [
-            ':PERIOD_NUM' => $this->_periodNum,
-            ':CALC_MONTH' => $this->_calcYearMonth,
-            ':IS_STUDIO'  => 1,
-        ];
-        // 查询店铺
-        $allData = StorePerfLog::find()
-                ->where($condition, $params)
-                ->select('USER_ID, MONTH_PV, GROUP_PV')
-                ->asArray()
-                ->all();
+        $allData = CalcCache::getHasPerfUsers($this->_periodNum, $offset, $this->_limit);
+//        $condition = 'PERIOD_NUM=:PERIOD_NUM AND CALC_MONTH=:CALC_MONTH';
+//        $params = [
+//            ':PERIOD_NUM' => $this->_periodNum,
+//            ':CALC_MONTH' => $this->_calcYearMonth,
+//        ];
+//        // 查询店铺
+//        $allData = StorePerfLog::find()
+//                ->where($condition, $params)
+//                ->select('USER_ID, MONTH_PV, GROUP_PV')
+//                ->asArray()
+//                ->all();
 
         if ($allData) {
             $insertBonusData = [];
-            foreach ($allData as $data) {
-                $userId = $data['USER_ID'];
-                $storeBonus = $this->verifyStorePerfNew($userId, $data['GROUP_PV']);
+            foreach ($allData as $userId) {
+//                $userId = $data['USER_ID'];
+                $storeBonus = $this->verifyStorePerf($userId);
                 if (empty($storeBonus)) continue;
 
                 // 判断此店铺是否是活跃用户,如果不活跃,则往上找一个活跃的店铺获得此奖
@@ -888,7 +887,6 @@ class BonusCalc extends BaseObject {
                 $empLv = EmployLevel::getIdConvertLevelSortCache();
                 // 本期蓝星奖
                 $bonusBs = CalcBonusBS::findUseDbCalc()->where('PERIOD_NUM=:PERIOD_NUM AND USER_ID=:USER_ID', [':PERIOD_NUM' => $this->_periodNum, ':USER_ID' => $userId])->asArray()->one();
-                LoggerTool::debug(['calcStoreBonusReduce-1', $userId, $isActive, $bonusBs]);
                 $bonusUserId = '';
                 // 活跃 + 主任聘级
                 if (!$isActive || !$bonusBs || $empLv[$bonusBs['LEVEL_ID']] < 3) {
@@ -903,7 +901,6 @@ class BonusCalc extends BaseObject {
                                 // 蓝星奖星级>=主任
                                 if ($bonusBs && $empLv[$bonusBs['LEVEL_ID']] >= 3) {
                                     $bonusUserId = $parent['PARENT_UID'];
-                                    LoggerTool::debug(['calcStoreBonusReduce-2', $userId, $bonusUserId, $bonusBs]);
                                     return self::LOOP_FINISH;
                                 }
                             }
@@ -912,7 +909,6 @@ class BonusCalc extends BaseObject {
                     });
                 }
                 if (!$isActive && !$bonusUserId) {
-                    LoggerTool::debug(['calcStoreBonusReduce-3', $isActive, $bonusUserId, '-3']);
                     continue;
                 }
                

+ 20 - 17
common/helpers/bonus/PerfCalc.php

@@ -1288,23 +1288,26 @@ class PerfCalc {
             ->bindValue(':periodNum' , $this->_periodNum )
             ->execute();
 
-//        if ($result) {
-//            $condition = 'PERIOD_NUM=:PERIOD_NUM AND CALC_MONTH=:CALC_MONTH';
-//            $params = [
-//                ':PERIOD_NUM' => $this->_periodNum,
-//                ':CALC_MONTH' => $this->_calcYearMonth,
-//            ];
-//            // 有业绩的会员放入缓存
-//            $records = StorePerfLog::find()
-//                ->where($condition, $params)
-//                ->select('USER_ID, MONTH_PV')
-//                ->asArray()
-//                ->all();
-//            foreach ($records as $record) {
-//                CalcCache::addHasPerfUsers($record['USER_ID'], $this->_periodNum);
-//                CalcCache::nowPeriodPerf($record['USER_ID'], $this->_periodNum, ['STORE_PV_GRAND' => $record['MONTH_PV']]);
-//            }
-//        }
+        if ($result) {
+            $params = [
+                ':PERIOD_NUM' => $this->_periodNum,
+                ':CALC_MONTH' => $this->_calcYearMonth,
+                ':IS_STUDIO'  => 1,
+            ];
+            // 有业绩的会员放入缓存
+            $records = StorePerfLog::find()
+                ->where('PERIOD_NUM=:PERIOD_NUM AND CALC_MONTH=:CALC_MONTH AND IS_STUDIO=:IS_STUDIO', $params)
+                ->select('USER_ID, MONTH_PV, GROUP_PV')
+                ->asArray()
+                ->all();
+
+            LoggerTool::debug(json_encode(['calcStProcedure', count($records)]));
+
+            foreach ($records as $record) {
+                CalcCache::addHasPerfUsers($record['USER_ID'], $this->_periodNum);
+                CalcCache::nowPeriodPerf($record['USER_ID'], $this->_periodNum, ['STORE_PV_GRAND' => $record['GROUP_PV']]);
+            }
+        }
 
         return true;
     }