浏览代码

自动合格相关修改,部分

theo 3 年之前
父节点
当前提交
0321d5e7d5
共有 3 个文件被更改,包括 71 次插入1 次删除
  1. 29 0
      common/helpers/bonus/CalcCache.php
  2. 17 0
      common/models/Period.php
  3. 25 1
      common/models/forms/OrderForm.php

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

@@ -25,6 +25,9 @@ use common\models\UserBonus;
 use common\models\UserNetwork;
 use common\models\UserPerf;
 use common\models\UserRelation;
+use common\models\RemainPv;
+use common\models\Order;
+use common\models\forms\OrderForm;
 use Yii;
 use common\models\UserInfo;
 use yii\helpers\Json;
@@ -224,9 +227,35 @@ class CalcCache {
      */
     public static function addUsers($periodNum, $offset = 0, $limit = self::LIMIT) {
 //        echo sprintf("时间:[%s]缓存用户,当前offset为:【%s】" . PHP_EOL, date('Y-m-d H:i:s', time()) , $offset);
+        $userHaveRemain = RemainPv::findAllAsArray('REMAIN_PV >0');
+//        print_r($userHaveRemain);exit;
+        $currentPeriod = Period::getInfoByPeriodNum($periodNum);
+
+//        print_r($currentPeriod);exit;
+        if($currentPeriod['IS_MONTH']){
+            $periods = Period::getCurrentMonthPeriodByPeriodNum($periodNum);
+            //先清除本期的假订单
+            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');
+                if($myPv<30){
+                    //制造虚拟订单
+                    echo('不足30了,生成假订单' . PHP_EOL);
+                    $newOrderForm = new OrderForm();
+                    $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();
         //$allData = User::findUseDbShopCalc()->select('ID AS USER_ID')->where('PERIOD_AT<=:PERIOD_AT AND IS_UNION=0 AND DELETED=0', [':PERIOD_AT' => $periodNum])->offset($offset)->limit($limit)->asArray()->all();
+//        print_r($allData);
         if ($allData) {
             foreach ($allData as $data) {
 //                if(User::find()->where('ID=:ID',[':ID'=>$data['USER_ID']])->exists()) continue;

+ 17 - 0
common/models/Period.php

@@ -831,4 +831,21 @@ class Period extends \common\components\ActiveRecord
     public static function getMonthNum($startPeriodNum,$endPeriodNum){
         return self::find()->select('CALC_MONTH')->groupBy('CALC_MONTH')->where('PERIOD_NUM>=:START_PERIOD AND PERIOD_NUM<=:END_PERIOD',[':START_PERIOD'=>$startPeriodNum,':END_PERIOD'=>$endPeriodNum])->count();
     }
+
+    /**
+     * 从期数获取当前月的所有期
+     *
+     */
+    public static function getCurrentMonthPeriodByPeriodNum($periodNum){
+        $currentPeriod = self::getInfoByPeriodNum($periodNum);
+        $currentYear = $currentPeriod['CALC_YEAR'];
+        $currentMonth = $currentPeriod['CALC_MONTH'];
+        $periodsArray = self::findAllAsArray(['CALC_YEAR'=>$currentYear,'CALC_MONTH'=>$currentMonth]);
+        $periods = [];
+        foreach ($periodsArray as $p){
+            $periods[] = $p['PERIOD_NUM'];
+        }
+
+        return $periods;
+    }
 }

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

@@ -729,6 +729,7 @@ class OrderForm extends Model
                 $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;
@@ -913,7 +914,7 @@ class OrderForm extends Model
         $orderModel->STATUS = 1;
         $orderModel->CREATED_AT = Date::nowTime();
         $orderModel->CREATE_USER = $loginUserName;
-        $orderModel->EMAIL = $email?$email:'tt@qq.com';
+        $orderModel->EMAIL = $email;
         if(!$orderModel->save()){
             $this->addErrors($orderModel->getErrors());
             return false;
@@ -958,4 +959,27 @@ class OrderForm extends Model
         }
         return $hash;
     }
+
+    public function addFakeOrder($userId, $periodNum){
+        $userName = Info::getUserNameByUserId($userId);
+        $ordNo = $this->_generateSn();
+        $orderModel = new Order();
+        $orderModel->SN = 'OS'.$ordNo;
+        $orderModel->DEC_SN = 'DS'.$ordNo;
+        $orderModel->USER_ID = $userId;
+        $orderModel->USER_NAME = $userName;
+        $orderModel->PERIOD_NUM = $periodNum;
+        $orderModel->CREATE_USER = 'FAKE';
+        $orderModel->ORDER_TYPE = 'FO';
+        $orderModel->STATUS = 1;
+        $orderModel->PV = 30;
+        $orderModel->PAY_PV = 30;
+        $orderModel->P_CALC_MONTH = '1970-01-01';
+        $orderModel->CREATED_AT = Date::nowTime();
+        $orderModel->EXPRESS_TYPE = 1;
+        if(!$orderModel->save()){
+            $this->addErrors($orderModel->getErrors());
+            return false;
+        }
+    }
 }