Prechádzať zdrojové kódy

feat: NG-15: 新会员注册时增加国家与语言选项.

zhangl 1 rok pred
rodič
commit
ea6c79c599
1 zmenil súbory, kde vykonal 16 pridanie a 69 odobranie
  1. 16 69
      common/helpers/bonus/Calc/CalcConsole.php

+ 16 - 69
common/helpers/bonus/Calc/CalcConsole.php

@@ -146,88 +146,37 @@ class CalcConsole extends BaseBusiness
         return true;
     }
 
-    public static function autoPrePerf(){ // 定时计算
+    // 定时计算
+    public static function autoPrePerf()
+    {
         $nowTs = time();
         $currentPeriod = Period::find()->where('START_TIME< :NOW_TIME',['NOW_TIME'=>$nowTs])->where('END_TIME>= :NOW_TIME',['NOW_TIME'=>$nowTs-6])->asArray()->one();
         $periodNum = $currentPeriod['PERIOD_NUM'];
-        $prevPeriodNum = $periodNum - 1;    // 121
-        $prevPeriod = Period::find()->where('PERIOD_NUM = :PERIOD_NUM',[':PERIOD_NUM'=>$prevPeriodNum])->asArray()->one();
-//        if($prevPeriod['IS_SENT']==0) {
-//            return;
-//        }
-        if (
-            Period::isPreparing($periodNum)
-//            || $currentPeriod['IS_MONTH'] == 0
-        ) {
+        $prevPeriodNum = $periodNum - 1;
+        if (Period::isPreparing($periodNum)) {
             return;
         }
 
         $nowDate = date("d", $nowTs);
         $nowHour = date("H", $nowTs);
-        $nowMin = date("i", $nowTs);
-        $nowSec = date("s", $nowTs);
 
+        // 当计算中,则跳过
         if(Period::isPreparing($periodNum)){ // 当计算中,则跳过
             return;
         }
-
-        if(($nowMin!=0 || $nowSec >= 5)){ // 如果不是整点小时,跳过
+        // 自动计算:次月1号凌晨计算一次上一期
+        if ($nowDate == 1 && $nowHour == 0) {
+            self::processAutoExec($prevPeriodNum);
             return;
         }
-
-        // 如果上一期没有挂网,则1-5号以及26~月底,每小时执行一次
-        if ($prevPeriod['IS_SENT'] == 0) {
-            echo('autoPrePerf: IS_SENT=0 当前期:' . $periodNum . ', 上一期:' . $prevPeriodNum . PHP_EOL);
-            // 每小时整点执行一次
-            if ($nowMin != 0) {
-                echo('autoPrePerf: IS_SENT=0(e-1) 当前期:' . $periodNum . ', 上一期:' . $prevPeriodNum . ', 时间:' . $nowMin . PHP_EOL);
-                return;
-            }
-            // 10~25不执行
-            if ($nowDate >= 10 && $nowDate <= 25) {
-                echo('autoPrePerf: IS_SENT=0(e-2) 当前期:' . $periodNum . ', 上一期:' . $prevPeriodNum . ', 日期:' . $nowDate . PHP_EOL);
-                return;
-            }
-        } else {
-            echo('autoPrePerf: IS_SENT=1 当前期:' . $periodNum . PHP_EOL);
-            if( 1 < $nowDate && 10 >= $nowDate ){ // 10号及以前,不是0点,则跳过
-                echo('autoPrePerf: IS_SENT=1(e-1) 当前期:' . $periodNum . ', 日期:' . $nowDate . PHP_EOL);
-                if( $nowHour != 0) {
-                    echo('autoPrePerf: IS_SENT=1(e-2) 当前期:' . $periodNum . ', 日期:' . $nowDate . ', 时间:' . $nowHour . PHP_EOL);
-                    return;
-                }
-            }
-
-            if( 15 < $nowDate && 25 >= $nowDate ){ // 下半月前10天,不是0点,则跳过
-                echo('autoPrePerf: IS_SENT=1(e-3) 当前期:' . $periodNum . ', 日期:' . $nowDate . ', 时间:' . $nowHour . PHP_EOL);
-                if( $nowHour != 0) {
-                    echo('autoPrePerf: IS_SENT=1(e-4) 当前期:' . $periodNum . ', 日期:' . $nowDate . ', 时间:' . $nowHour . PHP_EOL);
-                    return;
-                }
-            }
+        // 自动计算:从每月10号0点开始,每2小时自动计算一次
+        if ($nowDate >= 10 && $nowHour % 2 == 0) {
+            self::processAutoExec($periodNum);
         }
+    }
 
-//        if( 1 < $nowDate && 10 >= $nowDate ){ // 10号及以前,不是0点,则跳过
-//            if( $nowHour != 0) {
-//                return;
-//            }
-//        }
-//
-//        if( 15 < $nowDate && 25 >= $nowDate ){ // 下半月前10天,不是0点,则跳过
-//            if( $nowHour != 0) {
-//                return;
-//            }
-//        }
-//        if($nowDate >1 && $nowDate <= 15 || (($nowMin!=0 || $nowSec >= 5 ) || Period::isPreparing($periodNum)) ){ // 当不是整点小时,当计算中,不计算
-//            return;
-//        }
-//
-//        if (($nowTs + 86400 < $currentPeriod['END_TIME']) && $nowHour > 0) {
-//            return;
-//        }
-
-        print_r($periodNum."该预结算".$nowMin.PHP_EOL.$nowSec);
-
+    private static function processAutoExec($periodNum)
+    {
         //设置计算进行中标识
         Period::updatePeriodIsPreparing($periodNum, Period::IS_PREPARING);
         //设置自动计算标识
@@ -236,9 +185,9 @@ class CalcConsole extends BaseBusiness
         $calc_id = uniqid('calc_');
         CalcOperation::record($calc_id, $periodNum);
         Period::updateAll(['START_EXEC_TIME' => time(), 'CALC_ID' => $calc_id], ['PERIOD_NUM' => $periodNum]);
+
         $formModel = new PeriodForm();
         $formModel->scenario = 'autoPerf';
-
         if($formModel->load(['periodNum'=>$periodNum], '') && $formModel->autoPrePerf()) {
             echo('自动计算已开始,请等待'.PHP_EOL);
             //设置redis开关
@@ -248,8 +197,6 @@ class CalcConsole extends BaseBusiness
             echo('自动计算未开始'.PHP_EOL);
             CalcRecord::record($periodNum, '【定时计算】第' . $periodNum . '期,定时计算未开始');
         }
-        return;
-
     }
 
     /**