|
|
@@ -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)
|