from(Order::tableName()); $query->where(['status' => OrderClass::ORDER_STATUS_UN_SEND])->andWhere(['<=', 'addTime', $date]); $query->orderBy('deadline ASC'); //注意哪个平台的行为,低层很多方法会使用到 Yii::$app->params['ptStyle'] = dict::getDict('ptStyle', 'ghs'); //如果有报错,抛出异常 Yii::$app->params['errorReport'] = 1; //24小时后的自动确认,不需要微信通知 Yii::$app->params['noNeedWxNotice'] = 1; foreach ($query->batch() as $orderInfoList) { foreach ($orderInfoList as $orderInfo) { $connection = Yii::$app->db;//事务处理 $transaction = $connection->beginTransaction(); $id = $orderInfo['id'] ?? 0; $orderSn = $orderInfo['orderSn'] ?? ''; $status = $orderInfo['status'] ?? OrderClass::ORDER_STATUS_UN_PAY; $addTime = $orderInfo['addTime'] ?? ''; $prefix = "订单{$orderSn},ID{$id},创建于{$addTime},状态是{$status}"; if ($status != OrderClass::ORDER_STATUS_UN_SEND) { noticeUtil::push($prefix . " 自动完成操作时,状态不对", '15280215347'); continue; } if (empty($addTime) && $addTime > $date) { noticeUtil::push($prefix . " 自动完成操作时,时间不对", '15280215347'); continue; } try { $unSendOrder = OrderClass::getById($id, true); OrderClass::selfSend($unSendOrder); $hasSendOrder = OrderClass::getById($id, true); OrderService::reach($hasSendOrder); $transaction->commit(); //noticeUtil::push($prefix . " 【已自动完成】 SUCCESS", '15280215347'); } catch (\Exception $e) { $transaction->rollBack(); $msg = $e->getMessage(); noticeUtil::push("销售单自动完成报错了!订单号:{$orderSn},错误信息:{$msg}", '15280215347'); } } } } }