Просмотр исходного кода

feat: UN-71: 会员-奖金列表调整

kevin 1 год назад
Родитель
Сommit
c4b8a77942
1 измененных файлов с 62 добавлено и 63 удалено
  1. 62 63
      frontendApi/modules/v1/controllers/BonusController.php

+ 62 - 63
frontendApi/modules/v1/controllers/BonusController.php

@@ -25,6 +25,7 @@ use common\models\CalcBonusFL;
 use common\models\Countries;
 use common\models\Currency;
 use common\models\DealType;
+use common\models\DeclarationLevel;
 use common\models\EliteLevel;
 use common\models\FlowBonus;
 use common\models\FlowCF;
@@ -318,12 +319,38 @@ class BonusController extends BaseController {
         //是否近期期数
         $showFlowPeriodNum = Cache::getSystemConfig()['showFlowPeriodNum']['VALUE'];
         $periodArr = Period::getNearlySendPeriodNum($showFlowPeriodNum);
-        if(!in_array($periodNum,$periodArr)) return static::notice(Yii::t('app', 'cannotViewThisPeriod'), 400);
-        //增加明细开关控制(0 只显示总奖金 1 全部显示)
-        $flowBonusSwitch = Cache::getSystemConfig()['flowBonusSwitch']['VALUE'];
-        $data = $this->_periodBonus($periodNum,$flowBonusSwitch);
-        if(!$data) return static::notice(Yii::t('app', 'bonusRecordDoesNotExists'), 400);
-        return static::notice($data);
+        if(!in_array($periodNum,$periodArr)) {
+            return static::notice(Yii::t('app', 'cannotViewThisPeriod'), 400);
+        }
+
+        // 查询奖金
+        $data = User::find()
+            ->from(User::tableName().' AS U')
+            ->join('LEFT JOIN', CalcBonus::tableName() . ' AS B','B.USER_ID = U.ID')
+            ->select('U.ID AS USER_ID, U.USER_NAME, U.LAST_DEC_LV, B.LAST_EMP_LV, B.LAST_ELITE_LV, B.IS_ACTIVE, B.BONUS_E, B.BONUS_PE, B.BONUS_SE, B.BONUS_LB, B.BONUS_ST, B.BONUS_WB, B.BONUS_CAR, B.BONUS_TOTAL, B.BONUS_PB')
+            ->where('USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', [':USER_ID' => \Yii::$app->user->id,' :PERIOD_NUM'=>$periodNum])
+            ->asArray()
+            ->one();
+
+        $result = [
+            ['name' => 'userName', 'value' => $data['USER_NAME']],
+            ['name' => 'period', 'value' => $periodNum],
+            ['name' => 'decLevel', 'value' => Cache::getDecLevelConfig()[($data['LAST_DEC_LV'] ?: DeclarationLevel::getDefaultLevelId())]['LEVEL_NAME']],
+            ['name' => 'empLevel', 'value' => Cache::getEmpLevelConfig()[($data['LAST_EMP_LV'] ?: EmployLevel::getDefaultLevelId())]['LEVEL_NAME']],
+            ['name' => 'eliteLevel', 'value' => Cache::getEliteLevelConfig()[($data['LAST_ELITE_LV'] ?: EliteLevel::getDefaultLevelId())]['LEVEL_NAME']],
+            ['name' => 'isActive', 'value' => $data['IS_ACTIVE'] ?? 0],
+            ['name' => 'eliteBonus', 'value' => Tool::formatPrice($data['BONUS_E'])],
+            ['name' => 'proEliteBonus', 'value' => Tool::formatPrice($data['BONUS_PE'])],
+            ['name' => 'superEliteBonus', 'value' => Tool::formatPrice($data['BONUS_SE'])],
+            ['name' => 'leaderShipBonus', 'value' => Tool::formatPrice($data['BONUS_LB'])],
+            ['name' => 'stockistBonus', 'value' => Tool::formatPrice($data['BONUS_ST'])],
+            ['name' => 'welcomeBonus', 'value' => Tool::formatPrice($data['BONUS_WB'])],
+            ['name' => 'carBonus', 'value' => Tool::formatPrice($data['BONUS_CAR'])],
+            ['name' => 'totalBonus', 'value' => Tool::formatPrice($data['BONUS_TOTAL'])],
+            ['name' => 'userPerformanceBonus', 'value' => Tool::formatPrice($data['BONUS_PB'])],
+        ];
+
+        return static::notice($result);
     }
 
     /**
@@ -333,63 +360,33 @@ class BonusController extends BaseController {
      * @return array
      * @throws \yii\db\Exception
      */
-    private function _periodBonus($periodNum,$detailSwitch=1) {
-        $period = Period::instance();
-        $yearMonth = $period->getYearMonth($periodNum);
-        if(!$calcBonus = CalcBonus::find()->yearMonth($yearMonth)->where('USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM',[':USER_ID'=>\Yii::$app->user->id,':PERIOD_NUM'=>$periodNum])->asArray()->one()){
-            return [
-
-            ];
-        }
-        $sysConfig = Cache::getSystemConfig();
+    private function _periodBonus($periodNum) {
+        $data = User::find()
+            ->from(User::tableName().' AS U')
+            ->join('LEFT JOIN', CalcBonus::tableName() . ' AS B','B.USER_ID = U.ID')
+            ->select('U.ID AS USER_ID, U.USER_NAME, B.LAST_DEC_LV, B.LAST_EMP_LV, B.LAST_ELITE_LV, B.IS_ACTIVE, B.BONUS_E, B.BONUS_PE, B.BONUS_SE, B.BONUS_LB, B.BONUS_ST, B.BONUS_WB, B.BONUS_CAR, B.BONUS_TOTAL, B.BONUS_PB')
+            ->where('USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', [':USER_ID' => \Yii::$app->user->id,' :PERIOD_NUM'=>$periodNum])
+            ->asArray()
+            ->one();
 
-        if($detailSwitch) {
-            $data['USER_NAME'] = ['name' => '编号', 'value' => Info::getUserNameByUserId(\Yii::$app->user->id)];
-            $data['PERIOD_NUM'] = ['name' => '期数', 'value' => $periodNum];
-            $data['LAST_DEC_LV'] = ['name' => '级别', 'value' => Cache::getDecLevelConfig()[$calcBonus['LAST_DEC_LV']]['LEVEL_NAME']];
-            $data['LAST_EMP_LV'] = ['name' => '管理星级', 'value' => Cache::getEmpLevelConfig()[$calcBonus['LAST_EMP_LV']]['LEVEL_NAME']];
-            if ($sysConfig['openTG']['VALUE']) {
-                // 销售奖金 就是 原来的推广奖
-                $data['ORI_BONUS_TG'] = ['name' => '销售奖金', 'value' => Tool::formatPrice($calcBonus['ORI_BONUS_TG'])];
-            }
-            $data['ORI_BONUS_TG_SWITCH'] = intval($sysConfig['openTG']['VALUE']);
+        return [
+            ['name' => 'userName', 'value' => $data['USER_NAME']],
+            ['name' => 'period', 'value' => $periodNum],
+            ['name' => 'decLevel', 'value' => Cache::getDecLevelConfig()[$data['LAST_DEC_LV']]['LEVEL_NAME']],
+            ['name' => 'empLevel', 'value' => Cache::getEmpLevelConfig()[$data['LAST_EMP_LV']]['LEVEL_NAME']],
+            ['name' => 'eliteLevel', 'value' => Cache::getEliteLevelConfig()[($data['LAST_ELITE_LV'] ?: EliteLevel::getDefaultLevelId())]['LEVEL_NAME']],
+            ['name' => 'isActive', 'value' => $data['IS_ACTIVE'] ?? 0],
+            ['name' => 'eliteBonus', 'value' => Tool::formatPrice($data['BONUS_E'])],
+            ['name' => 'proEliteBonus', 'value' => Tool::formatPrice($data['BONUS_PE'])],
+            ['name' => 'superEliteBonus', 'value' => Tool::formatPrice($data['BONUS_SE'])],
+            ['name' => 'leaderShipBonus', 'value' => Tool::formatPrice($data['BONUS_LB'])],
+            ['name' => 'stockistBonus', 'value' => Tool::formatPrice($data['BONUS_ST'])],
+            ['name' => 'welcomeBonus', 'value' => Tool::formatPrice($data['BONUS_WB'])],
+            ['name' => 'carBonus', 'value' => Tool::formatPrice($data['BONUS_CAR'])],
+            ['name' => 'totalBonus', 'value' => Tool::formatPrice($data['BONUS_TOTAL'])],
+            ['name' => 'userPerformanceBonus', 'value' => Tool::formatPrice($data['BONUS_PB'])],
 
-            if ($sysConfig['openQY']['VALUE']) {
-                // 业绩奖金  就是原来的团队奖 并将业绩奖金改成绩效奖金
-                // $data[] = ['name' => '团队奖', 'value' => Tool::formatPrice($calcBonus['ORI_BONUS_QY'])];
-                $data['ORI_BONUS_QY'] = ['name' => '业绩奖金', 'value' => Tool::formatPrice($calcBonus['ORI_BONUS_QY'])];
-            }
-            $data['ORI_BONUS_QY_SWITCH'] = intval($sysConfig['openQY']['VALUE']);
-
-            //服务奖
-            if ($sysConfig['openFW']['VALUE']) {
-                $data['BONUS_BD'] = ['name' => '服务奖金', 'value' => Tool::formatPrice($calcBonus['ORI_BONUS_BD'])];
-            }
-            $data['BONUS_BD_SWITCH'] = intval($sysConfig['openFW']['VALUE']);
-
-            // 管理奖金 就是新的蓝星奖
-            $data['ORI_BONUS_BS'] = ['name' => '管理奖金', 'value' => Tool::formatPrice($calcBonus['ORI_BONUS_BS'])];
-            $data['ORI_BONUS_BS_MNT'] = ['name' => '管理奖金', 'value' => Tool::formatPrice($calcBonus['ORI_BONUS_BS_MNT'])];
-            $data['ORI_BONUS_BS_ABBR'] = ['name' => '绩效奖金', 'value' => Tool::formatPrice($calcBonus['ORI_BONUS_BS_ABBR'])];
-
-            $data['ORI_BONUS_QUARTER'] = ['name' => '季度奖金', 'value' => Tool::formatPrice($calcBonus['ORI_BONUS_QUARTER'] ?? 0.00)];
-            $data['BONUS_TOTAL'] = ['name' => '合计', 'value' => Tool::formatPrice($calcBonus['BONUS_TOTAL'])];
-            $data['BONUS_REAL'] = ['name' => '实发奖金', 'value' => Tool::formatPrice($calcBonus['BONUS_REAL'])];
-            $data['PV_1L'] = ['name' => '一市场新增业绩', 'value' => Tool::formatFrontPerf($calcBonus['PV_1L'])];
-            $data['PV_2L'] = ['name' => '二市场新增业绩', 'value' => Tool::formatFrontPerf($calcBonus['PV_2L'])];
-            $data['SURPLUS_1L'] = ['name' => '一市场结余业绩', 'value' => Tool::formatFrontPerf($calcBonus['SURPLUS_1L'])];
-            $data['SURPLUS_2L'] = ['name' => '二市场结余业绩', 'value' => Tool::formatFrontPerf($calcBonus['SURPLUS_2L'])];
-
-            // 是否活跃
-            $perfPeriod = PerfPeriod::find()->where('USER_ID=:USER_ID AND PERIOD_NUM = :PERIOD_NUM', [':USER_ID' => \Yii::$app->user->id, ':PERIOD_NUM' => $periodNum])->asArray()->one();
-            $data['IS_ACTIVE'] = ['name' => '是否活跃', 'value' => ($perfPeriod['IS_ACTIVE'] ? intval($perfPeriod['IS_ACTIVE']) : 0)];
-            // 管理奖个人小组业绩
-            $calcBonusBS = CalcBonusBSDefault::findOneAsArray('USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', [':USER_ID' => \Yii::$app->user->id, ':PERIOD_NUM' => $periodNum], 'GPV10');
-            $data['DIRECTOR_BONUS_PGS'] = ['name' => '个人小组业绩', 'value' => ($calcBonusBS['GPV10'] ?? 0)];
-        }else{
-            $data[] = ['name' => '总奖金', 'value' => Tool::formatPrice($calcBonus['BONUS_TOTAL'])];
-        }
-        return $data;
+        ];
     }
 
     /**
@@ -426,10 +423,12 @@ class BonusController extends BaseController {
                 ['name' => 'totalBonus', 'value' => Tool::formatPrice($data['BONUS_TOTAL'])],
                 ['name' => 'userPerformanceBonus', 'value' => Tool::formatPrice($data['BONUS_PB'])],
             ];
-
         }
 
-        return static::notice(['tableData' => $result]);
+        // 奖金明细开关控制(0 只显示总奖金 1 全部显示)
+        $flowBonusSwitch = Cache::getSystemConfig()['flowBonusSwitch']['VALUE'] ?? 0;
+
+        return static::notice(['tableData' => $result, 'flowBonusSwitch' => $flowBonusSwitch]);
     }
 
     /**