Эх сурвалжийг харах

自动合格,挂网时的处理等

theo 3 жил өмнө
parent
commit
c45fa61be6

+ 1 - 0
backendApi/modules/v1/controllers/ShopController.php

@@ -371,6 +371,7 @@ class ShopController extends BaseController {
             'MOBILE'=> 'O.MOBILE',
             'PERIOD_NUM'=> 'O.PERIOD_NUM',
             'CREATED_AT'=> 'O.CREATED_AT',
+            'ORDER_TYPE'=> 'O.ORDER_TYPE',
         ]);
         $condition = $filter['condition'];
         $params = $filter['params'];

+ 4 - 1
backendApi/modules/v1/models/lists/shop/OrderList.php

@@ -163,7 +163,9 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                     'header' => 'Order type',//订单类型
                     'headerOther' => ['width' => '120'],
                     'value' => function ($row) {
-                            if($row['ORDER_TYPE']=='ZC'){
+                            if($row['ORDER_TYPE']=='FO'){
+                                $orderType = 'remain BV order';
+                            }else if($row['ORDER_TYPE']=='ZC'){
                                 $orderType = 'declaration form';
                             }else{
                                 $orderType = ($row['PAY_TYPE']=='cash') ? 'Cancel again': 'integral';//'重消' : '积分'
@@ -325,6 +327,7 @@ class OrderList extends \common\libs\dataList\DataList implements DataListInterf
                 'SN'=> ['name'=> 'Order No'],//订单编号
                 'USER_NAME'=> ['name'=> 'Member code'],//会员编号
                 'MOBILE'=> ['name'=> 'Contact 1'],//联系方式1
+                'ORDER_TYPE'=> ['name'=> 'Order Type'],
                 'PERIOD_NUM'=> ['name'=> 'Number of periods'],//期数
                 'CREATED_AT'=> ['name'=> 'Creation time', 'other'=>'date'],//创建时间
             ];

+ 66 - 0
common/helpers/bonus/BonusSend.php

@@ -19,6 +19,7 @@ use common\helpers\user\Status;
 use common\libs\api\sms\SmsApi;
 use common\libs\swoole\Process;
 use common\models\DealType;
+use common\models\FlowRemainPv;
 use common\models\PerfPeriod;
 use common\models\DecOrder;
 use common\models\EmployLevel;
@@ -32,6 +33,9 @@ use common\models\UserPerf;
 use common\models\UserPerfUpdate;
 use common\models\UserTeamwork;
 use common\models\YearHighestEmpLv;
+use common\models\Order;
+use common\models\RemainPv;
+use common\models\forms\OrderForm;
 use yii\base\BaseObject;
 use yii\base\StaticInstanceTrait;
 use common\helpers\Cache;
@@ -120,6 +124,66 @@ class BonusSend extends BaseObject {
         return $this->_errors;
     }
 
+    /**
+     * 挂网时处理虚假订单
+     *
+     */
+    public function putFakeOrder() {
+        echo('开始处理假订单' . PHP_EOL);
+        $fakeOrder= Order::find()->where(['PERIOD_NUM'=>$this->_periodNum, 'ORDER_TYPE'=>'FO'])->asArray()->all();
+        foreach($fakeOrder as $fOrder){
+            $oRemainPv=RemainPv::findOne(["USER_ID"=>$fOrder['USER_ID']]);
+            $transactionRemain = \Yii::$app->db->beginTransaction();
+            try{
+                $flowRemainPvModel = new FlowRemainPv();
+                $flowRemainPvModel->ID = $this->_generateSn();
+                $flowRemainPvModel->USER_ID = $fOrder['USER_ID'];
+                $flowRemainPvModel->REMAIN_PV_FLOW = -30;
+                $flowRemainPvModel->REMAIN_PV_TOTAL = $oRemainPv->REMAIN_PV - 30;
+                $flowRemainPvModel->PERIOD_NUM = $this->_periodNum;
+                $flowRemainPvModel->UPDATED_AT = Date::nowTime();
+                $flowRemainPvModel->ORDER_SN = $fOrder['SN'];
+                if(!$flowRemainPvModel->save()){
+                    $this->addErrors($flowRemainPvModel->getErrors());
+                    return false;
+                }
+                $oRemainPv->updateCounters(['REMAIN_PV'=>-30]);
+                $transactionRemain->commit();
+            } catch (Exception $e) {
+                $transactionRemain->rollBack();
+                $this->addError('add', $e->getMessage());
+                return null;
+            }
+        }
+        echo('假订单处理完' . PHP_EOL);
+        return $flowRemainPvModel;
+    }
+    /**
+     * 生成流水号
+     * @return string
+     */
+    private function _generateSn() {
+        return Date::today('Ymd') . $this->_random(10, 1);
+    }
+
+    /**
+     * 生成随机数
+     * @param $length
+     * @param int $numeric
+     * @return string
+     */
+    private function _random($length, $numeric = 0) {
+        $seed = base_convert(md5(microtime() . $_SERVER['DOCUMENT_ROOT']), 16, $numeric ? 10 : 35);
+        $seed = $numeric ? (str_replace('0', '', $seed) . '012340567890') : ($seed . 'zZ' . strtoupper($seed));
+        $hash = '';
+        $max = strlen($seed) - 1;
+        for ($i = 0; $i < $length; $i++) {
+            $hash .= $seed[mt_rand(0, $max)];
+        }
+        return $hash;
+    }
+
+
     /**
      * 进行奖金发放步骤
      * @return bool
@@ -129,6 +193,8 @@ class BonusSend extends BaseObject {
             $t1 = microtime(true);
             // 初始化
             $this->initTask();
+            echo('挂网开始');
+            $this->putFakeOrder();
             $t2 = microtime(true);
             echo('初始化完成,当前期数【' . $this->_periodNum . '】,耗时:' . round($t2 - $t1, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL);
             // 改变状态

+ 0 - 4
common/helpers/bonus/CalcCache.php

@@ -237,8 +237,6 @@ class CalcCache {
             //先清除本期的假订单
             echo('首先,清除上次尝试生成业绩单时所创建的虚假订单'. date('Y-m-d  H:i:s', time()) . PHP_EOL);
             $delFOrder = Order::deleteAll(['ORDER_TYPE'=>'FO','PERIOD_NUM'=>$periodNum]);
-//            print($delFOrder);exit;
-//            print_r($periods);exit;
             echo('检查有结余PV的用户,如果他当月PV不足30,则为其创建假订单'. PHP_EOL);
             foreach($userHaveRemain as $uR){
                 $myPv = Order::find()->where(['PERIOD_NUM'=>$periods, 'USER_ID'=>$uR['USER_ID']])->SUM('PV');
@@ -249,8 +247,6 @@ class CalcCache {
                     $newOrderForm->addFakeOrder($uR['USER_ID'],$periodNum);
                 }
             }
-            exit;
-//            $userOrderArray = Order::findAll()
         }
         // 修复USER_INFO表里面已经没有PERIOD_NUM了
         $allData = UserInfo::findUseDbCalc()->from(UserInfo::tableName(). 'AS UI')->select('UI.USER_ID,U.STATUS')->leftJoin(User::tableName() . 'AS U', 'U.ID=UI.USER_ID')->where('1=1')->orderBy('UI.RELATION_DEEP DESC,UI.ID DESC')->offset($offset)->limit($limit)->asArray()->all();

+ 36 - 25
common/models/forms/OrderForm.php

@@ -599,7 +599,7 @@ class OrderForm extends Model
             if ($payAmount > Balance::getBalanceGarage($loginUserId)) {
                 return ['code' => 500, 'message' => '车房积分不足,无法购买商品'];
             }
-        } else{
+//        } else{
 //            if ($payAmount > Balance::getBalanceReconsumePoints($loginUserId)) {
 //                return ['code' => 500, 'message' => '复消积分不足,无法购买商品'];
 //            }
@@ -709,35 +709,45 @@ class OrderForm extends Model
         }
 
         if($this->_remainPv>0) {
-            $flowRemainPvModel = new FlowRemainPv();
-            $flowRemainPvModel->ID = $this->_generateSn();
-            $flowRemainPvModel->USER_ID = $userId;
-            $flowRemainPvModel->REMAIN_PV_FLOW = $this->_remainPv;
-            $flowRemainPvModel->UPDATED_AT = Date::nowTime();
-            $flowRemainPvModel->ORDER_SN = 'OS'.$ordNo;
-            if(!$flowRemainPvModel->save()){
-                $this->addErrors($flowRemainPvModel->getErrors());
-                return false;
-            }
-
             $oRemainPv = RemainPv::find()->where(['USER_ID' => $userId])->one();
-            if($oRemainPv){
-                $oRemainPv->updateCounters(['REMAIN_PV'=>$this->_remainPv]);
-            }else{
-                $remainPvModel = new RemainPv();
-                $remainPvModel->ID = $this->_generateSn();
-                $remainPvModel->USER_ID = $userId;
-                $remainPvModel->UPDATED_AT = Date::nowTime();
-                $remainPvModel->REMAIN_PV = $this->_remainPv;
-                $remainPvModel->STATUS = 1;
-                if(!$remainPvModel->save()){
-                    $this->addErrors($remainPvModel->getErrors());
+
+            $transactionRemain = \Yii::$app->db->beginTransaction();
+            try{
+                $flowRemainPvModel = new FlowRemainPv();
+                $flowRemainPvModel->ID = $this->_generateSn();
+                $flowRemainPvModel->USER_ID = $userId;
+                $flowRemainPvModel->REMAIN_PV_FLOW = $this->_remainPv;
+                $flowRemainPvModel->REMAIN_PV_TOTAL = $oRemainPv['REMAIN_PV'] + $this->_remainPv;
+                $flowRemainPvModel->PERIOD_NUM = $nowPeriodNum;
+                $flowRemainPvModel->UPDATED_AT = Date::nowTime();
+                $flowRemainPvModel->ORDER_SN = 'OS'.$ordNo;
+                if(!$flowRemainPvModel->save()){
+                    $this->addErrors($flowRemainPvModel->getErrors());
                     return false;
                 }
+
+                $oRemainPv = RemainPv::find()->where(['USER_ID' => $userId])->one();
+                if($oRemainPv){
+                    $oRemainPv->updateCounters(['REMAIN_PV'=>$this->_remainPv]);
+                }else{
+                    $remainPvModel = new RemainPv();
+                    $remainPvModel->ID = $this->_generateSn();
+                    $remainPvModel->USER_ID = $userId;
+                    $remainPvModel->UPDATED_AT = Date::nowTime();
+                    $remainPvModel->REMAIN_PV = $this->_remainPv;
+                    $remainPvModel->STATUS = 1;
+                    if(!$remainPvModel->save()){
+                        $this->addErrors($remainPvModel->getErrors());
+                        return false;
+                    }
+                }
+                $transactionRemain->commit();
+            } catch (Exception $e) {
+                $transactionRemain->rollBack();
+                $this->addError('add', $e->getMessage());
+                return null;
             }
         }
-
-
         return $orderModel;
     }
 
@@ -981,5 +991,6 @@ class OrderForm extends Model
             $this->addErrors($orderModel->getErrors());
             return false;
         }
+        return $orderModel;
     }
 }

+ 1 - 1
frontendApi/config/menu.php

@@ -96,7 +96,7 @@ return [
         'child'=>[
 //            ['name'=>'会员复销池余额流水', 'class'=>'', 'icon'=>'', 'controller'=>'finance', 'action'=>'reconsume-pool-flow', 'routePath'=>'finance/reconsume-pool-flow', 'show'=>1,],
 //            ['name'=>'转账记录', 'class'=>'', 'icon'=>'', 'controller'=>'finance', 'action'=>'transfer-list', 'routePath'=>'finance/transfer-list', 'show'=>1,'allow'=>'transferRecordSwitch'],
-//            ['name'=>'我要转账', 'class'=>'', 'icon'=>'', 'controller'=>'finance', 'action'=>'transfer-add', 'routePath'=>'finance/transfer-add', 'show'=>1,'allow'=>'transferSwitch'],
+            ['name'=>'我要转账', 'class'=>'', 'icon'=>'', 'controller'=>'finance', 'action'=>'transfer-add', 'routePath'=>'finance/transfer-add', 'show'=>1,'allow'=>'transferSwitch'],
             ['name'=>'Withdrawal details', 'class'=>'', 'icon'=>'', 'controller'=>'finance', 'action'=>'withdraw', 'routePath'=>'finance/withdraw', 'show'=>1,],//提现明细
             ['name'=>'申请提现', 'class'=>'', 'icon'=>'', 'controller'=>'finance', 'action'=>'withdraw-add', 'routePath'=>'finance/withdraw-add', 'show'=>0,],
             ['name'=>'Recharge details', 'class'=>'', 'icon'=>'', 'controller'=>'finance', 'action'=>'recharge', 'routePath'=>'finance/recharge', 'show'=>1,],//充值明细

+ 5 - 0
frontendApi/modules/v1/controllers/DashboardController.php

@@ -19,6 +19,7 @@ use common\models\CalcBonus;
 use common\models\FlowBonus;
 use common\models\Period;
 use common\models\ReconsumePool;
+use common\models\RemainPv;
 
 class DashboardController extends BaseController
 {
@@ -93,6 +94,9 @@ class DashboardController extends BaseController
             12 => 'Dec',
         ];
 
+        //剩余分期PV显示
+        $myRemainPv = RemainPv::findOne(['USER_ID'=>$baseInfo['ID']])->REMAIN_PV;
+
         return static::notice([
             'nowTime' => $nowTime,
             'empLv'=>$empLv,
@@ -103,6 +107,7 @@ class DashboardController extends BaseController
             'news'=>$news,
 //            'periodNum'=>'Period '.$periodNum.' ,'.$curYM['CALC_MONTH'].'月第'.$wkrd.'周,共'.$weeks.'周',
             'periodNum'=>$periodNum.' ,'.$wkrd.' period  of '. $monthArray[$curYM['CALC_MONTH']],
+            'myRemainPv'=>$myRemainPv
         ]);
     }
 

+ 3 - 0
frontendEle/src/views/dashboard/index.vue

@@ -17,6 +17,7 @@
               </el-col><!--聘级-->
               <el-col :xs="24" :sm="24" :md="24" :lg="4" :xl="12">Member Level:{{decLvName}}</el-col><!--会员级别-->
               <el-col :xs="24" :sm="24" :md="24" :lg="8" :xl="12">Current Period:{{periodNum}}</el-col><!--当前业绩期-->
+              <el-col :xs="24" :sm="24" :md="24" :lg="8" :xl="12">Remain BV:{{myRemainPv}}</el-col><!--剩余的PV-->
             </el-row>
           </el-col>
         </el-row>
@@ -85,6 +86,7 @@
         this.news = response.news
         this.periodNum = response.periodNum
         this.decLvName = response.decLvName
+        this.myRemainPv = response.myRemainPv
         this.loading = false
         this.imgLoad()
         return network.getData(`dashboard/bonus-num`)
@@ -117,6 +119,7 @@
         news: [],
         periodNum: '',
         decLvName: '',
+        myRemainPv: '',
         bannerHeight: '',
       }
     },