Przeglądaj źródła

管理奖改成蓝星奖,并使用新字段,以前的管理奖字段不变

zxiansheng 4 lat temu
rodzic
commit
27f4f2b1b2

+ 34 - 6
common/helpers/bonus/BonusCalc.php

@@ -14,6 +14,7 @@ use common\helpers\snowflake\SnowFake;
 use common\helpers\Tool;
 use common\models\CalcBonus;
 use common\models\CalcBonusBD;
+use common\models\CalcBonusBS;
 use common\models\CalcBonusBT;
 use common\models\CalcBonusCF;
 use common\models\CalcBonusFL;
@@ -2980,18 +2981,43 @@ class BonusCalc extends BaseObject {
         $bonusReal = $bonus['BONUS_BD'] + $bonus['BONUS_TG'] + $bonus['BONUS_XF'] + $bonus['BONUS_YJ'] + $bonus['BONUS_QY'] + $bonus['BONUS_YC'] + $bonus['BONUS_YC_EXTRA'] + $bonus['BONUS_VIP'] + $standardBonus;
         $realBonusGx = 0;
         $realBonusGl = 0;
+        $realBonusBs = 0; // 蓝星奖,顶替原来的管理奖. BlueStar
+        $blueStartAmount = 0;
+        $buleStartOriBonus = 0;
+        $buleStartManageTax = 0;
         if( $this->_isCalcMonth ) {
             //查看是否复消300
             $monthPerfData = CalcCache::nowMonthPerf($userId, $this->_periodNum);
             $fxPvStatus = $monthPerfData['PV_PCS_FX'] >= $this->_sysConfig['monthPcsPvFxCondition']['VALUE'];
-            if ( $fxPvStatus ) {//加上本期和往期的共享和管理奖
-                $monthSumData = CalcBonus::findUseSlaves()->select('SUM(BONUS_GX) AS BONUS_GX_SUM, SUM(BONUS_GL) AS BONUS_GL_SUM')->where('USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH', ['USER_ID'=>$userId, 'CALC_MONTH'=>$this->_calcYearMonth])->asArray()->one();
+            // BONUS_REAL 字段是发到用户的真实奖金
+            if ( $fxPvStatus ) {
+                // 管理奖改成了蓝星奖,但是对于用户来说依旧叫管理奖.字段改成bs.
+                // 因为管理奖(即蓝星奖,是用存储过程计算的,则此处直接取AR_CALC_BONUS_BS表中计算的结果数据使用,
+                // 并将管理奖结果同步到当前结算月的CalcBonus中)
+                // 由于单独奖金流水记录每次都插入,所以倒叙找最新的数据.
+                $userBS = CalcBonusBS::find()
+                ->where(
+                    'PERIOD_NUM=:PERIOD_NUM AND USER_ID=:USER_ID',
+                    [
+                        ':PERIOD_NUM' => $this->_periodNum,
+                        ':USER_ID' => $userId
+                    ]
+                )
+                ->select('AMOUNT,ORI_BONUS,MANAGE_TAX')
+                ->limit(1)
+                ->orderBy('CREATED_AT DESC')
+                ->asArray()
+                ->all();
+                $userBS = is_array($userBS) ? reset($userBS) : [];
+                $blueStartAmount = isset($userBS['AMOUNT']) && !empty($userBS['AMOUNT']) ? $userBS['AMOUNT'] : 0; // 奖金
+                $buleStartOriBonus = isset($userBS['ORI_BONUS']) && !empty($userBS['ORI_BONUS']) ? $userBS['ORI_BONUS'] : 0; // 原奖金
+                $buleStartManageTax = isset($userBS['MANAGE_TAX']) && !empty($userBS['MANAGE_TAX']) ? $userBS['MANAGE_TAX'] : 0; // 管理费
+                $monthSumData = CalcBonus::findUseSlaves()->select('SUM(BONUS_GX) AS BONUS_GX_SUM')->where('USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH', ['USER_ID'=>$userId, 'CALC_MONTH'=>$this->_calcYearMonth])->asArray()->one();
                 $bonusGxSum = $monthSumData['BONUS_GX_SUM'] ?? 0;
-                $bonusGlSum = $monthSumData['BONUS_GL_SUM'] ?? 0;
                 $realBonusGx += $bonusGxSum + $bonus['BONUS_GX'];
-                $realBonusGl += $bonusGlSum + $bonus['BONUS_GL'];
-                $bonusReal += $realBonusGx + $realBonusGl;
-                unset($monthSumData, $bonusGxSum, $bonusGlSum);
+                $realBonusBs = $blueStartAmount; // 蓝星奖直接取数据库中算好的值
+                $bonusReal += $realBonusGx + $realBonusBs;
+                unset($monthSumData, $bonusGxSum);
             }
         }
         // if( $this->_isCalcMonth ) {
@@ -3081,6 +3107,8 @@ class BonusCalc extends BaseObject {
             'REAL_BONUS_GX' => $realBonusGx,
             'ORI_BONUS_GL' => $bonus['ORI_BONUS_GL'],
             'REAL_BONUS_GL' => $realBonusGl,
+            'BONUS_BS' => $realBonusBs, // 新的管理奖金,即蓝星奖,顶替原来的管理奖
+            'ORI_BONUS_BS' => $buleStartOriBonus, // 蓝星管理奖金原奖金,即包含管理费
             'ORI_BONUS_GL_BD' => $bonus['ORI_BONUS_GL_BD'],
             'ORI_BONUS_GL_FX' => $bonus['ORI_BONUS_GL_FX'],
             'ORI_BONUS_QY' => $bonus['ORI_BONUS_QY'],

+ 11 - 1
common/helpers/bonus/BonusSend.php

@@ -278,7 +278,15 @@ class BonusSend extends BaseObject {
         echo sprintf("时间:[%s]数据库发奖,当前page为:【%s】" . PHP_EOL, date('Y-m-d H:i:s', time()), $page);
         $periodNum = $this->_periodNum;
         // 从奖金结算表中获取当期未发放的所有数据
-        $allData = CalcBonus::findUseDbCalc()->yearMonth($this->_calcYearMonth)->where('(IS_SENT=0 OR IS_SENT=2) AND CALC_MONTH=:CALC_MONTH AND PERIOD_NUM=:PERIOD_NUM', [':CALC_MONTH' => $this->_calcYearMonth, ':PERIOD_NUM' => $periodNum])->limit($this->_limit)->asArray()->all();
+        $allData = CalcBonus::findUseDbCalc()
+        ->yearMonth($this->_calcYearMonth)
+        ->where(
+            '(IS_SENT=0 OR IS_SENT=2) AND CALC_MONTH=:CALC_MONTH AND PERIOD_NUM=:PERIOD_NUM', 
+            [':CALC_MONTH' => $this->_calcYearMonth, ':PERIOD_NUM' => $periodNum]
+        )
+        ->limit($this->_limit)
+        ->asArray()
+        ->all();
         if ($allData) {
             $transaction = Yii::$app->db->beginTransaction();
             try {
@@ -303,6 +311,7 @@ class BonusSend extends BaseObject {
                             'YJ' => $data['BONUS_YJ'],
                             'GX' => $data['BONUS_GX'],
                             'GL' => $data['BONUS_GL'],
+                            'BS' => $data['BONUS_BS'],
 
                             'ORI_QY' => $data['ORI_BONUS_QY'],
                             'ORI_YC' => $data['ORI_BONUS_YC'],
@@ -313,6 +322,7 @@ class BonusSend extends BaseObject {
                             'ORI_YJ' => $data['ORI_BONUS_YJ'],
                             'ORI_GX' => $data['ORI_BONUS_GX'],
                             'ORI_GL' => $data['ORI_BONUS_GL'],
+                            'ORI_BS' => $data['ORI_BONUS_BS'],
 
                             'RECONSUME_POINTS_TOTAL' => $data['RECONSUME_POINTS'],
                             'EXCHANGE_POINTS_TOTAL' => $data['EXCHANGE_POINTS'],

+ 16 - 0
common/helpers/user/Balance.php

@@ -272,6 +272,10 @@ class Balance {
                     $paramData['GL_TOTAL'] = new Expression('GL_TOTAL + '.$params['GL']);
                     //$oneUserBonusModel->GL_TOTAL += $params['GL'];
                 }
+                if (isset($params['BS'])) {
+                    $paramData['BS_TOTAL'] = new Expression('BS_TOTAL + '.$params['BS']);
+                    //$oneUserBonusModel->GL_TOTAL += $params['GL'];
+                }
                 if (isset($params['RECONSUME_POINTS_TOTAL'])) {
                     $paramData['RECONSUME_POINTS_TOTAL'] = new Expression('RECONSUME_POINTS_TOTAL + '.$params['RECONSUME_POINTS_TOTAL']);
                     //$oneUserBonusModel->RECONSUME_POINTS_TOTAL += $params['RECONSUME_POINTS_TOTAL'];
@@ -317,6 +321,10 @@ class Balance {
                     $paramData['ORI_GL_TOTAL'] = new Expression('ORI_GL_TOTAL + '.$params['ORI_GL']);
                     //$oneUserBonusModel->ORI_GL_TOTAL += $params['ORI_GL'];
                 }
+                if (isset($params['ORI_BS'])) {
+                    $paramData['ORI_BS_TOTAL'] = new Expression('ORI_BS_TOTAL + '.$params['ORI_BS']);
+                    //$oneUserBonusModel->ORI_GL_TOTAL += $params['ORI_GL'];
+                }
 
                 if (isset($params['BONUS_TOTAL'])) {
                     $paramData['BONUS_TOTAL'] = new Expression('BONUS_TOTAL + '.$params['BONUS_TOTAL']);
@@ -368,6 +376,10 @@ class Balance {
 //                    $paramData['GL_TOTAL'] = new Expression('GL_TOTAL + '.$params['GL']);
                     $paramData['GL_TOTAL'] = $params['GL'];
                 }
+                if (isset($params['BS'])) {
+                    $paramData['BS_TOTAL'] = $params['BS'];
+                    //$oneUserBonusModel->GL_TOTAL += $params['GL'];
+                }
                 if (isset($params['RECONSUME_POINTS_TOTAL'])) {
 //                    $paramData['RECONSUME_POINTS_TOTAL'] = new Expression('RECONSUME_POINTS_TOTAL + '.$params['RECONSUME_POINTS_TOTAL']);
                     $paramData['RECONSUME_POINTS_TOTAL'] = $params['RECONSUME_POINTS_TOTAL'];
@@ -416,6 +428,10 @@ class Balance {
 //                    $paramData['ORI_GL_TOTAL'] = new Expression('ORI_GL_TOTAL + '.$params['ORI_GL']);
                     $paramData['ORI_GL_TOTAL'] = $params['ORI_GL'];
                 }
+                if (isset($params['ORI_BS'])) {
+                    $paramData['ORI_BS_TOTAL'] = $params['ORI_BS'];
+                    //$oneUserBonusModel->ORI_GL_TOTAL += $params['ORI_GL'];
+                }
 
                 if (isset($params['BONUS_TOTAL'])) {
 //                    $paramData['BONUS_TOTAL'] = new Expression('BONUS_TOTAL + '.$params['BONUS_TOTAL']);

+ 6 - 2
common/models/CalcBonus.php

@@ -100,7 +100,9 @@ use Yii;
  * @property string $ORI_BONUS_GL_BD 报单管理奖原奖金
  * @property string $ORI_BONUS_GL_FX 复消管理奖原奖金
  * @property string $RECONSUME_POINTS 复消积分
- * @property string $MANAGE_TAX 管理费
+ * @property string $MANAGE_TAX 管理费 
+ * @property string $BONUS_BS 蓝星奖金(即新的管理奖)
+ * @property string $ORI_BONUS_BS 蓝星原奖金(即新的管理奖,原奖金)
  */
 class CalcBonus extends \common\components\ActiveRecord
 {
@@ -120,7 +122,7 @@ class CalcBonus extends \common\components\ActiveRecord
         return [
             [['USER_ID', 'LAST_USER_NAME', 'LAST_REAL_NAME', 'LAST_MOBILE', 'LAST_SYSTEM_ID','LAST_LOCATION', 'PERIOD_NUM', 'CALC_YEAR', 'CALC_MONTH', 'CALCULATED_AT', 'P_CALC_MONTH', 'CREATED_AT'], 'required'],
             [['LAST_STATUS', 'LAST_PERIOD_AT', 'LAST_CREATED_AT', 'LAST_PROVINCE', 'LAST_CITY', 'LAST_COUNTY', 'LAST_IS_DIRECT_SELLER', 'LAST_LOCATION', 'PERIOD_NUM', 'CALC_YEAR', 'CALC_MONTH', 'CALCULATED_AT', 'IS_SENT', 'SENT_AT', 'CREATED_AT'], 'integer'],
-            [['BONUS_QY', 'BONUS_YC', 'BONUS_VIP', 'BONUS_FX', 'BONUS_LS', 'BONUS_FW', 'BONUS_BT', 'BONUS_BT_PROD', 'BONUS_BT_TOOL', 'DEDUCT_ZR', 'BONUS_FL', 'BONUS_CF', 'BONUS_LX', 'SHOULD_QY', 'SHOULD_DEDUCT_ZR', 'PV_1L', 'QY_1L', 'SURPLUS_1L', 'PV_2L', 'QY_2L', 'SURPLUS_2L', 'PV_3L', 'QY_3L', 'SURPLUS_3L', 'PV_4L', 'QY_4L', 'SURPLUS_4L', 'PV_5L', 'QY_5L', 'SURPLUS_5L', 'PV_PCS', 'PV_LS_TOUCH', 'SURPLUS_LS', 'QY_LS', 'PV_TOUCH', 'BONUS_REAL', 'BONUS_TOTAL', 'BONUS_INCOME', 'ORI_BONUS_QY','ORI_BONUS_QY_BD','ORI_BONUS_QY_FX','ORI_BONUS_YC', 'ORI_BONUS_VIP','ORI_BONUS_STANDARD','BONUS_BD','ORI_BONUS_BD','BONUS_TG','ORI_BONUS_TG','BONUS_XF','ORI_BONUS_XF','BONUS_YJ','ORI_BONUS_YJ','ORI_BONUS_YJ_BD','ORI_BONUS_YJ_FX','BONUS_GX','ORI_BONUS_GX','REAL_BONUS_GX','BONUS_GL','ORI_BONUS_GL','REAL_BONUS_GL','ORI_BONUS_GL_BD','ORI_BONUS_GL_FX','RECONSUME_POINTS','MANAGE_TAX'], 'number'],
+            [['ORI_BONUS_BS','BONUS_BS','BONUS_QY', 'BONUS_YC', 'BONUS_VIP', 'BONUS_FX', 'BONUS_LS', 'BONUS_FW', 'BONUS_BT', 'BONUS_BT_PROD', 'BONUS_BT_TOOL', 'DEDUCT_ZR', 'BONUS_FL', 'BONUS_CF', 'BONUS_LX', 'SHOULD_QY', 'SHOULD_DEDUCT_ZR', 'PV_1L', 'QY_1L', 'SURPLUS_1L', 'PV_2L', 'QY_2L', 'SURPLUS_2L', 'PV_3L', 'QY_3L', 'SURPLUS_3L', 'PV_4L', 'QY_4L', 'SURPLUS_4L', 'PV_5L', 'QY_5L', 'SURPLUS_5L', 'PV_PCS', 'PV_LS_TOUCH', 'SURPLUS_LS', 'QY_LS', 'PV_TOUCH', 'BONUS_REAL', 'BONUS_TOTAL', 'BONUS_INCOME', 'ORI_BONUS_QY','ORI_BONUS_QY_BD','ORI_BONUS_QY_FX','ORI_BONUS_YC', 'ORI_BONUS_VIP','ORI_BONUS_STANDARD','BONUS_BD','ORI_BONUS_BD','BONUS_TG','ORI_BONUS_TG','BONUS_XF','ORI_BONUS_XF','BONUS_YJ','ORI_BONUS_YJ','ORI_BONUS_YJ_BD','ORI_BONUS_YJ_FX','BONUS_GX','ORI_BONUS_GX','REAL_BONUS_GX','BONUS_GL','ORI_BONUS_GL','REAL_BONUS_GL','ORI_BONUS_GL_BD','ORI_BONUS_GL_FX','RECONSUME_POINTS','MANAGE_TAX'], 'number'],
             [['ID', 'USER_ID', 'LAST_DEC_LV', 'LAST_EMP_LV', 'LAST_SUB_COM_ID', 'LAST_SYSTEM_ID'], 'string', 'max' => 32],
             [['LAST_USER_NAME', 'LAST_REC_USER_NAME', 'LAST_CON_USER_NAME'], 'string', 'max' => 16],
             [['LAST_REAL_NAME', 'LAST_REC_REAL_NAME', 'LAST_CON_REAL_NAME'], 'string', 'max' => 128],
@@ -229,6 +231,8 @@ class CalcBonus extends \common\components\ActiveRecord
             'ORI_BONUS_GL_FX'=> '复消管理奖原奖金',
             'RECONSUME_POINTS'=> '复消积分',
             'MANAGE_TAX'=> '管理费',
+            'BONUS_BS' => '蓝星奖',
+            'ORI_BONUS_BS' => '蓝星原奖金'
         ];
     }
 

+ 78 - 0
common/models/CalcBonusBS.php

@@ -0,0 +1,78 @@
+<?php
+
+namespace common\models;
+
+use Yii;
+
+/**
+ * This is the model class for table "{{%CALC_BONUS_BS}}".
+ *
+ * @property string $ID
+ * @property string $USER_ID 会员ID
+ * @property string $LAST_DEC_LV 结算时会员级别
+ * @property string $LAST_EMP_LV 结算时会员聘级
+ * @property int $LAST_STATUS 结算时状态
+ * @property string $FROM_USER_ID 来源会员ID
+ * @property string $LAST_FROM_DEC_LV 结算时来源会员级别
+ * @property string $LAST_FROM_EMP_LV 结算时来源会员聘级
+ * @property int $LAST_FROM_STATUS 结算时来源状态
+ * @property string $AMOUNT 金额
+ * @property int $PERIOD_NUM 结算期数
+ * @property int $CALC_MONTH 所在结算月
+ * @property int $CALCULATED_AT 结算时间
+ * @property int $CREATED_AT 创建时间
+ * @property string $LOGS 日志
+ * @property $ORI_BONUS 原奖金
+ * @property $MANAGE_TAX 管理费
+ */
+class CalcBonusBS extends \common\components\ActiveRecord
+{
+    /**
+     * @inheritdoc
+     */
+    public static function tableName()
+    {
+        return '{{%CALC_BONUS_BS}}';
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function rules()
+    {
+        return [
+            [['USER_ID', 'PERIOD_NUM', 'CALC_MONTH', 'CALCULATED_AT', 'CREATED_AT'], 'required'],
+            [['AMOUNT', 'ORI_BONUS', 'MANAGE_TAX'], 'number'],
+            [['LAST_STATUS', 'PERIOD_NUM', 'CALC_MONTH', 'CALCULATED_AT', 'CREATED_AT', 'LAST_FROM_STATUS'], 'integer'],
+            [['ID', 'USER_ID', 'LAST_DEC_LV', 'LAST_EMP_LV', 'FROM_USER_ID',  'LAST_FROM_DEC_LV', 'LAST_FROM_EMP_LV'], 'string', 'max' => 32],
+            [['LOGS'], 'string', 'max' => 2000],
+            [['ID'], 'unique'],
+        ];
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function attributeLabels()
+    {
+        return [
+            'ID' => 'ID',
+            'USER_ID' => '会员ID',
+            'LAST_DEC_LV' => '结算时会员级别',
+            'LAST_EMP_LV' => '结算时会员聘级',
+            'LAST_STATUS' => '结算时状态',
+            'FROM_USER_ID' => '来源会员ID',
+            'LAST_FROM_DEC_LV' => '结算时来源会员级别',
+            'LAST_FROM_EMP_LV' => '结算时来源会员聘级',
+            'LAST_FROM_STATUS' => '结算时来源状态',
+            'AMOUNT' => '金额',
+            'PERIOD_NUM' => '结算期数',
+            'CALC_MONTH' => '所在结算月',
+            'CALCULATED_AT' => '结算时间',
+            'CREATED_AT' => '创建时间',
+            'LOGS' => '日志',
+            'ORI_BONUS' => '原奖金',
+            'MANAGE_TAX' => '管理费',
+        ];
+    }
+}

+ 4 - 1
common/models/UserBonus.php

@@ -68,7 +68,7 @@ class UserBonus extends \common\components\ActiveRecord
     {
         return [
             [['USER_ID', 'CREATED_AT'], 'required'],
-            [['BONUS', 'BONUS_FREEZE', 'CF', 'LX', 'QY_TOTAL', 'YC_TOTAL', 'VIP_TOTAL', 'FX_TOTAL', 'LS_TOTAL', 'FW_TOTAL', 'BT_TOTAL', 'BT_PROD_TOTAL', 'BT_TOOL_TOTAL', 'CF_TOTAL', 'LX_TOTAL', 'DEDUCT_ZR_TOTAL', 'FL_TOTAL', 'BD_TOTAL','TG_TOTAL','YJ_TOTAL','GX_TOTAL','GL_TOTAL', 'ORI_QY_TOTAL','ORI_YC_TOTAL','ORI_YC_TOTAL','ORI_BD_TOTAL','ORI_TG_TOTAL','ORI_YJ_TOTAL','ORI_GX_TOTAL','ORI_GL_TOTAL','RECONSUME_POINTS','MANAGE_TAX', 'RECONSUME_POINTS_EXPIRED', 'RECONSUME_POINTS_TOTAL', 'BONUS_TOTAL'], 'number'],
+            [['BS_TOTAL','ORI_BS_TOTAL','BS','BONUS', 'BONUS_FREEZE', 'CF', 'LX', 'QY_TOTAL', 'YC_TOTAL', 'VIP_TOTAL', 'FX_TOTAL', 'LS_TOTAL', 'FW_TOTAL', 'BT_TOTAL', 'BT_PROD_TOTAL', 'BT_TOOL_TOTAL', 'CF_TOTAL', 'LX_TOTAL', 'DEDUCT_ZR_TOTAL', 'FL_TOTAL', 'BD_TOTAL','TG_TOTAL','YJ_TOTAL','GX_TOTAL','GL_TOTAL', 'ORI_QY_TOTAL','ORI_YC_TOTAL','ORI_YC_TOTAL','ORI_BD_TOTAL','ORI_TG_TOTAL','ORI_YJ_TOTAL','ORI_GX_TOTAL','ORI_GL_TOTAL','RECONSUME_POINTS','MANAGE_TAX', 'RECONSUME_POINTS_EXPIRED', 'RECONSUME_POINTS_TOTAL', 'BONUS_TOTAL'], 'number'],
             [['VER', 'CREATED_AT'], 'integer'],
             [['ID','USER_ID'], 'string', 'max' => 32],
             [['USER_ID'], 'unique'],
@@ -120,6 +120,9 @@ class UserBonus extends \common\components\ActiveRecord
             'RECONSUME_POINTS_EXPIRED' => '复消积分过期',
             'MANAGE_TAX' => '管理费累计',
             'BONUS_TOTAL' => '总奖金累计',
+            'BS' => '蓝星奖(即新的管理奖)',
+            'BS_TOTAL' => '蓝星(管理)累计',
+            'ORI_BS_TOTAL' => '蓝星原奖金累计'
         ];
     }