Jelajahi Sumber

订单加上时间限制,如果是定时任务,则查询创建时间为周日0点,否则以页面点击为准

root 3 tahun lalu
induk
melakukan
158e55608d
1 mengubah file dengan 17 tambahan dan 11 penghapusan
  1. 17 11
      common/helpers/bonus/PreparePerfCalc.php

+ 17 - 11
common/helpers/bonus/PreparePerfCalc.php

@@ -121,7 +121,7 @@ class PreparePerfCalc {
             $this->initCalcTask($periodNum);
             $this->_updatePercent(10);
             // 设置结算状态
-            $this->setCalcStatus('start');
+            $this->setCalcStatus('start', $periodNum);
             // 清空所有本期结算用到的缓存
             PrepareCalcCache::clearAll($this->_periodNum);
             // 清空会员推荐和接点关系缓存
@@ -216,9 +216,10 @@ class PreparePerfCalc {
      * @param $type
      * start|end|fail
      */
-    public function setCalcStatus($type) {
+    public function setCalcStatus($type, $periodNum = null) {
         if ($type == 'start') {
-            PeriodPrepare::updateAll(['IS_PERFING' => 1, 'IS_PERFED' => Period::PERF_NONE, 'PERF_STARTED_AT' => Date::nowTime()], 'PERIOD_NUM=:PERIOD_NUM', [':PERIOD_NUM' => $this->_periodNum]);
+            $this->_lastTime = !empty($periodNum) ? Date::nowTime() : $this->_lastTime;
+            PeriodPrepare::updateAll(['IS_PERFING' => 1, 'IS_PERFED' => Period::PERF_NONE, 'PERF_STARTED_AT' => $this->_lastTime], 'PERIOD_NUM=:PERIOD_NUM', [':PERIOD_NUM' => $this->_periodNum]);
         } elseif ($type == 'end') {
             PeriodPrepare::updateAll(['IS_PERFING' => 0, 'IS_PERFED' => Period::PERF_FINISH, 'PERFED_AT' => Date::nowTime()], 'PERIOD_NUM=:PERIOD_NUM', [':PERIOD_NUM' => $this->_periodNum]);
         } elseif ($type == 'fail') {
@@ -304,6 +305,11 @@ class PreparePerfCalc {
             $this->_lastPeriodYearMonth = 0;
         }
         $this->_pvRatio = $this->_sysConfig['pvRatio']['VALUE'];
+        // 限制订单的时间:如果是定时器,则固定为每周日的0点. 如果是手动执行,则是进行异步代码的时间
+        // 这里直接使用后台生成业绩单的时间
+        if (empty($periodNum)) {
+            $this->_lastTime = $this->_lastTime-86399;
+        }
     }
 
     /**
@@ -333,8 +339,8 @@ class PreparePerfCalc {
         ->select('ID,DEC_SN,ORDER_SN,USER_ID,TYPE,TO_USER_ID,IS_ADMIN,DEC_AMOUNT,DEC_PV,PERIOD_NUM,
         CALC_MONTH,IS_DEL,P_CALC_MONTH,CREATED_AT,DEC_ID')
         ->where(
-            "PERIOD_NUM=:PERIOD_NUM AND IS_DEL=0 AND TYPE='ZC'", 
-            [':PERIOD_NUM' => $this->_periodNum]
+            "PERIOD_NUM=:PERIOD_NUM AND IS_DEL=0 AND TYPE='ZC'  AND CREATED_AT<=:CREATED_AT", 
+            [':PERIOD_NUM' => $this->_periodNum, ':CREATED_AT' => $this->_lastTime]
         )
         ->orderBy('CREATED_AT DESC,ID DESC')
         ->offset($offset)
@@ -446,8 +452,8 @@ class PreparePerfCalc {
         $allData = OrderDec::findUseDbCalc()
         ->select('CREATED_AT,ID,SN,USER_ID,ORDER_TYPE,ORDER_AMOUNT,PV,PAY_AMOUNT,PAY_PV,PERIOD_NUM,PAY_TYPE')
         ->where(
-            "PERIOD_NUM=:PERIOD_NUM AND IS_DELETE=0 AND ORDER_TYPE=:ORDER_TYPE", 
-            [':PERIOD_NUM' => $this->_periodNum, ':ORDER_TYPE'=>'ZC'])
+            "PERIOD_NUM=:PERIOD_NUM AND IS_DELETE=0 AND ORDER_TYPE=:ORDER_TYPE AND CREATED_AT<=:CREATED_AT", 
+            [':PERIOD_NUM' => $this->_periodNum, ':ORDER_TYPE'=>'ZC', ':CREATED_AT' => $this->_lastTime])
             ->orderBy('ID DESC')
             ->offset($offset)
             ->limit($this->_limit)
@@ -559,8 +565,8 @@ class PreparePerfCalc {
         ->select('ID,SN,DEC_SN,USER_ID,ORDER_TYPE,ORDER_AMOUNT,PAY_AMOUNT,PAY_PV,PAY_TYPE,PERIOD_NUM,STATUS,IS_DELETE,
         P_CALC_MONTH,CREATED_AT')
         ->where(
-            "PERIOD_NUM=:PERIOD_NUM AND IS_DELETE=0 AND ORDER_TYPE=:ORDER_TYPE", 
-            [':PERIOD_NUM' => $this->_periodNum, ':ORDER_TYPE'=>DeclarationForm::TYPE_FX]
+            "PERIOD_NUM=:PERIOD_NUM AND IS_DELETE=0 AND ORDER_TYPE=:ORDER_TYPE AND CREATED_AT<=:CREATED_AT", 
+            [':PERIOD_NUM' => $this->_periodNum, ':ORDER_TYPE'=>DeclarationForm::TYPE_FX,':CREATED_AT' => $this->_lastTime]
         )
         ->orderBy('CREATED_AT DESC,ID DESC')
         ->offset($offset)
@@ -687,8 +693,8 @@ class PreparePerfCalc {
             'ID,SN,DEC_SN,USER_ID,ORDER_TYPE,ORDER_AMOUNT,PAY_AMOUNT,PAY_PV,PAY_TYPE,PERIOD_NUM,STATUS,IS_DELETE,
             P_CALC_MONTH,CREATED_AT')
         ->where(
-            "PERIOD_NUM=:PERIOD_NUM AND IS_DELETE=0 AND ORDER_TYPE=:ORDER_TYPE", 
-            [':PERIOD_NUM' => $this->_periodNum, ':ORDER_TYPE'=>DeclarationForm::TYPE_FX]
+            "PERIOD_NUM=:PERIOD_NUM AND IS_DELETE=0 AND ORDER_TYPE=:ORDER_TYPE AND CREATED_AT<=:CREATED_AT", 
+            [':PERIOD_NUM' => $this->_periodNum, ':ORDER_TYPE'=>DeclarationForm::TYPE_FX,':CREATED_AT' => $this->_lastTime]
         )
         ->orderBy('CREATED_AT DESC,ID DESC')
         ->offset($offset)