from(Purchase::tableName()); $date = date("Y-m-d H:i:s"); //找出一个星期内可以标记为过期的订单 $startDate = date("Y-m-d H:i:s", strtotime('-7 days')); $query->where(['status' => PurchaseClass::STATUS_UN_PAY])->andWhere(['>', 'deadline', $startDate])->andWhere(['<=', 'deadline', $date]); $query->orderBy('deadline ASC'); Yii::$app->params['ptStyle'] = dict::getDict('ptStyle', 'hd'); //如果有报错,抛出异常 Yii::$app->params['errorReport'] = 1; $arr = []; foreach ($query->batch() as $purchases) { foreach ($purchases as $purchase) { $connection = Yii::$app->db; $transaction = $connection->beginTransaction(); $id = $purchase['id'] ?? 0; $orderSn = $purchase['orderSn'] ?? ''; try { $current = PurchaseClass::getById($id, true); PurchaseService::expire($current); $transaction->commit(); noticeUtil::push("采购单过期未付款,库存已回滚,单号:{$orderSn}"); } catch (\Exception $e) { $transaction->rollBack(); $msg = $e->getMessage(); noticeUtil::push("采购单过期处理报错了!订单号:{$orderSn},错误信息:{$msg}", '15280215347'); } $log = "过期的采购单:{$id} json:" . json_encode($purchase); $arr[] = $log; } } if (!empty($arr)) { foreach ($arr as $item) { Yii::info($item); } } } //采购单没付款的,到期前2分钟提醒商家 public function actionExpireRemind() { ini_set('memory_limit', '2045M'); set_time_limit(0); $query = new \yii\db\Query(); $query->from(Purchase::tableName()); $time = time()+900; $date = date("Y-m-d H:i:s",$time); //找出一个星期内可以标记为过期的订单 $startDate = date("Y-m-d H:i:s"); $query->where(['status' => PurchaseClass::STATUS_UN_PAY])->andWhere(['>', 'deadline', $startDate])->andWhere(['<=', 'deadline', $date]); $query->orderBy('deadline ASC'); Yii::$app->params['ptStyle'] = dict::getDict('ptStyle', 'hd'); //如果有报错,抛出异常 Yii::$app->params['errorReport'] = 1; foreach ($query->batch() as $purchases) { foreach ($purchases as $purchase) { $connection = Yii::$app->db; $transaction = $connection->beginTransaction(); $id = $purchase['id'] ?? 0; $orderSn = $purchase['orderSn'] ?? ''; try { $cg = PurchaseClass::getById($id, true); $deadline = $cg->deadline ?? ''; if (!empty($deadline)) { $currentDead = date("Y-m-d H:i", strtotime($deadline)); $currentDeadTime = strtotime($currentDead); $now = strtotime(date('Y-m-d H:i')); //2分钟 $tow = 120; $totalTime = $now + $tow; if ($totalTime == $currentDeadTime) { $saleId = $cg->saleId ?? 0; $order = OrderClass::getById($saleId, true); if(!empty($order)){ $shopId = $order->shopId ?? 0; ShopExtClass::beforeCancelPrint($shopId,$order); } } } $transaction->commit(); } catch (\Exception $e) { $transaction->rollBack(); $msg = $e->getMessage(); noticeUtil::push("采购单过期前通知报错了!订单号:{$orderSn},错误信息:{$msg}", '15280215347'); } } } } //待付款订单自动变成欠款订单 public function actionSetDebtOrder() { //采购单由供货商发起的!!!!! $ghsInvite = dict::getDict('cgStyle', 'ghs'); $query = new \yii\db\Query(); $query->from(Purchase::tableName()); $date = date("Y-m-d H:i:s"); //找出一个星期内可以标记为欠款的订单 $startDate = date("Y-m-d H:i:s", strtotime('-7 days')); $query->where(['status' => PurchaseClass::STATUS_UN_PAY])->andWhere(['cgStyle' => $ghsInvite])->andWhere(['>', 'autoSetTime', $startDate])->andWhere(['<=', 'autoSetTime', $date]); $query->orderBy('autoSetTime ASC'); Yii::$app->params['ptStyle'] = dict::getDict('ptStyle', 'hd'); //如果有报错,抛出异常 Yii::$app->params['errorReport'] = 1; $arr = []; foreach ($query->batch() as $purchases) { foreach ($purchases as $purchase) { $connection = Yii::$app->db; $transaction = $connection->beginTransaction(); $id = $purchase['id'] ?? 0; $orderSn = $purchase['orderSn'] ?? ''; try { $current = PurchaseClass::getById($id, true); //供货商发起的记欠款 PurchaseService::debt($current); $transaction->commit(); noticeUtil::push("采购单已经变更为欠款。订单号:{$orderSn}", '15280215347'); } catch (\Exception $e) { $transaction->rollBack(); $msg = $e->getMessage(); noticeUtil::push("待付款采购单设置为欠款单报错了!订单号:{$orderSn},错误信息:{$msg}", '15280215347'); } $log = "待付款采购单设置为欠款单:{$id} json:" . json_encode($purchase); $arr[] = $log; } } if (!empty($arr)) { foreach ($arr as $item) { Yii::info($item); } } } }