| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- <?php
- namespace console\controllers;
- use bizGhs\order\classes\OrderClass;
- use bizGhs\order\models\Order;
- use bizGhs\order\services\OrderService;
- use common\components\dict;
- use common\components\noticeUtil;
- use Yii;
- use yii\console\Controller;
- /**
- * 订单相关
- */
- class OrderController extends Controller
- {
- //待配送订单,超过24小时自动完成 ./yii order/auto-finish
- public function actionAutoFinish()
- {
- $remain = time() - 86400;
- $date = date("Y-m-d H:i:s", $remain);
- $query = new \yii\db\Query();
- $query->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');
- }
- }
- }
- }
- }
|