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

Merge remote-tracking branch 'origin/feature/1969-member30BVRule' into feature/1988-blueStarBonusRecruitChange

kevin_zhangl 3 лет назад
Родитель
Сommit
28f7502b5d

+ 3 - 3
backendApi/config/menu.php

@@ -52,9 +52,9 @@ return [
             ['name'=>'订单发货', 'class'=>'', 'icon'=>'', 'controller'=>'shop', 'action'=>'order-delivery', 'routePath'=>'shop/order-delivery', 'show'=>0,],
             ['name'=>'Remain BV', 'class'=>'', 'icon'=>'', 'controller'=>'shop', 'action'=>'remain-pv', 'routePath'=>'shop/remain-pv', 'show'=>1,], // 剩余BV
             ['name'=>'Remain BV Flow', 'class'=>'', 'icon'=>'', 'controller'=>'shop', 'action'=>'flow-remain-pv', 'routePath'=>'shop/flow-remain-pv', 'show'=>1,], // 剩余BV流水
-//            ['name'=>'External mall order list', 'class'=>'', 'icon'=>'', 'controller'=>'shop', 'action'=>'order-shop-list', 'routePath'=>'shop/order-shop-list', 'show'=>1,],//外部商城订单列表
-            // ['name'=>'External mall entry list', 'class'=>'', 'icon'=>'', 'controller'=>'shop', 'action'=>'order-dec-list', 'routePath'=>'shop/order-dec-list', 'show'=>1,],//外部商城报单列表
-            // ['name'=>'List of qualified orders of external mall', 'class'=>'', 'icon'=>'', 'controller'=>'shop', 'action'=>'order-standard-list', 'routePath'=>'shop/order-standard-list', 'show'=>1,],//外部商城达标订单列表
+            ['name'=>'External mall order list', 'class'=>'', 'icon'=>'', 'controller'=>'shop', 'action'=>'order-shop-list', 'routePath'=>'shop/order-shop-list', 'show'=>1,], // 外部商城订单列表
+            ['name'=>'External mall entry list', 'class'=>'', 'icon'=>'', 'controller'=>'shop', 'action'=>'order-dec-list', 'routePath'=>'shop/order-dec-list', 'show'=>1,], // 外部商城报单列表
+            // ['name'=>'List of qualified orders of external mall', 'class'=>'', 'icon'=>'', 'controller'=>'shop', 'action'=>'order-standard-list', 'routePath'=>'shop/order-standard-list', 'show'=>1,], // 外部商城达标订单列表
 
         ]
     ],

+ 3 - 3
backendApi/modules/v1/controllers/ShopController.php

@@ -459,7 +459,7 @@ class ShopController extends BaseController {
         ]);
         $condition = $filter['condition'];
         $params = $filter['params'];
-        $condition .= ' 1=1 AND O.IS_DELETE=0';
+        $condition .= ' AND O.IS_DELETE=0';
         $listObj = new OrderDecList();
         $data = $listObj->getList(['condition'=>$condition, 'params'=>$params]);
         return static::notice($data);
@@ -498,7 +498,7 @@ class ShopController extends BaseController {
             } elseif ($result === 0) {
                 return static::notice(['finish' => true]);
             } else {
-                return static::notice('发生错误:' . $errorMsg, 400);
+                return static::notice('Error:' . $errorMsg, 400);
             }
         }
     }
@@ -554,7 +554,7 @@ class ShopController extends BaseController {
             } elseif ($result === 0) {
                 return static::notice(['finish' => true]);
             } else {
-                return static::notice('发生错误:' . $errorMsg, 400);
+                return static::notice('Error:' . $errorMsg, 400);
             }
         }
     }

+ 2 - 1
common/helpers/Excel.php

@@ -806,7 +806,8 @@ class Excel extends BaseObject {
             $limit = $limit - 1;
         }
         $fileNameArray = ExcelImport::find()->select('U.FILE_NAME')->from(ExcelImport::tableName() . ' AS ET')->join('LEFT JOIN', Uploads::tableName() . ' AS U', 'ET.UPLOAD_ID=U.ID')->where('ET.ID=:ID', [':ID' => $excelImportId])->asArray()->one();
-        $filePath = \Yii::getAlias('@common/runtime/uploads/' . $fileNameArray['FILE_NAME']);
+//        $filePath = \Yii::getAlias('@common/runtime/uploads/' . $fileNameArray['FILE_NAME']);
+        $filePath = '/ng/Volumes/HDD/workshop/old/ar.upload.ming/files/' . $fileNameArray['FILE_NAME'];
         if ($startRow > $rowCount) {
             return 0;
         }

+ 79 - 27
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->_isPerfActive($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->_isPerfActive($user['USER_ID']);
+                $oriBonus = $isActive ? $user['ORI_BONUS_MNT'] : 0;
+                $lastEmpLv = $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' => $lastEmpLv,
+                    ],
                 '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->_isPerfActive($user['USER_ID']);
+                $oriBonus = $isActive ? $user['ORI_BONUS_ABBR'] : 0;
+                $lastEmpLv = $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' => $lastEmpLv,
+                    ],
+        'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM',
                     [':USER_ID' => $user['USER_ID'], ':PERIOD_NUM' => $this->_periodNum]);
             }
             return $this->calcBonusBsYJ($offset + $this->_limit);
@@ -4079,16 +4121,26 @@ class BonusCalc extends BaseObject {
     // 判断是否满足月最低消费
     public function _isMonthPerfLimit($userId) {
         $userMonthTotal = PerfMonth::find()->where(
-            'USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH', 
+            'USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH',
             ['USER_ID'=>$userId, 'CALC_MONTH'=>$this->_calcYearMonth]
         )
-        ->asArray()
-        ->one();
+            ->asArray()
+            ->one();
         $fxPvStatus = false;
         if (isset($userMonthTotal['PV_PCS']) && $userMonthTotal['PV_PCS'] >= $this->_sysConfig['monthPcsPvFxCondition']['VALUE']) {
             $fxPvStatus = true;
         }
-        
+
         return $fxPvStatus;
     }
+
+    // 判断会员是否活跃
+    public function _isPerfActive($userId): bool
+    {
+        $pv = PerfPeriod::find()->where('USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH AND PERIOD_NUM<=:PERIOD_NUM',
+            ['USER_ID'=>$userId, 'CALC_MONTH'=>$this->_calcYearMonth, 'PERIOD_NUM'=>$this->_periodNum])
+            ->SUM('PV_PCS');
+
+        return $pv >= $this->_sysConfig['monthPcsPvFxCondition']['VALUE'];
+    }
 }

+ 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
 {

+ 1 - 0
common/models/OrderGoodsShop.php

@@ -56,6 +56,7 @@ class OrderGoodsShop extends \common\components\ActiveRecord
             'ORDER_SN' => '订单ID',
             'GOODS_TITLE' => '商品名称',
             'PRICE' => '价格',
+            'PRICE_STANDARD' => '标准价格',
             'REAL_PRICE' => '实际价格',
             'PV' => '订货BV',
             'REAL_PV' => '实际BV',

+ 3 - 2
common/models/forms/ExcelOrderDecForm.php

@@ -46,9 +46,10 @@ class ExcelOrderDecForm extends \common\components\ActiveRecord
         '存货名称' => 'GOODS_TITLE',
         '数量' => 'BUY_NUMS',
         '商品单价' => 'PRICE',
+        '商品标准单价' => 'PRICE_STANDARD',
         '商品金额' => 'REAL_PRICE',
-        '商品BV' => 'PV',
-        'BV合计' => 'REAL_PV',
+        '商品PV' => 'PV',
+        'PV合计' => 'REAL_PV',
         '期数' => 'PERIOD_NUM',
     ];
 

+ 3 - 2
common/models/forms/ExcelOrderShopForm.php

@@ -46,9 +46,10 @@ class ExcelOrderShopForm extends \common\components\ActiveRecord
         '存货名称' => 'GOODS_TITLE',
         '数量' => 'BUY_NUMS',
         '商品单价' => 'PRICE',
+        '商品标准单价' => 'PRICE_STANDARD',
         '商品金额' => 'REAL_PRICE',
-        '商品BV' => 'PV',
-        'BV合计' => 'REAL_PV',
+        '商品PV' => 'PV',
+        'PV合计' => 'REAL_PV',
         '期数' => 'PERIOD_NUM',
     ];
 

+ 1 - 1
common/models/forms/UploadForm.php

@@ -189,7 +189,7 @@ class UploadForm extends Model {
                 $uploadInfo = [
                     'fileName' => $fileName . '.' . $this->file->extension,
                     'category' => $uploadCategory,
-                    'url' => $fileName . '.' . $this->file->extension,
+                    'url' => $localPath,
                     'fileSize' => null,
                     'md5' => null,
                 ];

+ 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 '应得绩效奖金';