|
|
@@ -195,6 +195,9 @@ class BonusSend extends BaseObject {
|
|
|
$this->initTask();
|
|
|
echo('挂网开始');
|
|
|
$this->putFakeOrder();
|
|
|
+ // 先把有remainPv的订单处理一下,将remainPv加入到remain_pv及流水表
|
|
|
+ echo('处理当期REMAIN PV ' . date('Y-m-d H:i:s', time()) . PHP_EOL);
|
|
|
+ $this->_calcRemainPv();
|
|
|
$t2 = microtime(true);
|
|
|
echo('初始化完成,当前期数【' . $this->_periodNum . '】,耗时:' . round($t2 - $t1, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL);
|
|
|
// 改变状态
|
|
|
@@ -267,6 +270,56 @@ class BonusSend extends BaseObject {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 处理order表中有remain_pv的订单
|
|
|
+ * 将结果写入到remainPv相关表中
|
|
|
+ *
|
|
|
+ */
|
|
|
+ private function _calcRemainPv(){
|
|
|
+ $orders = Order::find()->where('PERIOD_NUM=:PERIOD_NUM AND REMAIN_PV>0',[':PERIOD_NUM'=>$this->_periodNum])->asArray()->all();
|
|
|
+ foreach($orders as $order){
|
|
|
+ $oRemainPv = RemainPv::find()->where(['USER_ID' => $order['USER_ID']])->one();
|
|
|
+
|
|
|
+ $transactionRemain = \Yii::$app->db->beginTransaction();
|
|
|
+ try{
|
|
|
+ $flowRemainPvModel = new FlowRemainPv();
|
|
|
+ $flowRemainPvModel->ID = $this->_generateSn();
|
|
|
+ $flowRemainPvModel->USER_ID = $order['USER_ID'];
|
|
|
+ $flowRemainPvModel->REMAIN_PV_FLOW = $order['REMAIN_PV'];
|
|
|
+ $flowRemainPvModel->REMAIN_PV_TOTAL = $oRemainPv['REMAIN_PV'] + $order['REMAIN_PV'];
|
|
|
+ $flowRemainPvModel->PERIOD_NUM = $this->_periodNum;
|
|
|
+ $flowRemainPvModel->UPDATED_AT = Date::nowTime();
|
|
|
+ $flowRemainPvModel->ORDER_SN = $order['SN'];
|
|
|
+ if(!$flowRemainPvModel->save()){
|
|
|
+ $this->addErrors($flowRemainPvModel->getErrors());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ $oRemainPv = RemainPv::find()->where(['USER_ID' => $order['USER_ID']])->one();
|
|
|
+ if($oRemainPv){
|
|
|
+ $oRemainPv->updateCounters(['REMAIN_PV'=>$order['REMAIN_PV']]);
|
|
|
+ }else{
|
|
|
+ $remainPvModel = new RemainPv();
|
|
|
+ $remainPvModel->ID = $this->_generateSn();
|
|
|
+ $remainPvModel->USER_ID = $order['USER_ID'];
|
|
|
+ $remainPvModel->UPDATED_AT = Date::nowTime();
|
|
|
+ $remainPvModel->REMAIN_PV = $order['REMAIN_PV'];
|
|
|
+ $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 null;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 需要多进程执行的任务
|
|
|
* @param $workId
|