setName('order_close') ->setDescription('系统关闭超时未付款订单'); } protected function execute(Input $input, Output $output) { $now = time(); $ableClose = ConfigService::get('transaction', 'cancel_unpaid_orders',1); $cancelTime = ConfigService::get('transaction', 'cancel_unpaid_orders_times',30) * 60; if ($ableClose == YesNoEnum::NO) { return true; } $orders = Order::with('order_goods') ->whereRaw("create_time+$cancelTime < $now") ->where(['order_status'=>OrderEnum::ORDER_STATUS_WAIT_PAY,'pay_status'=>PayEnum::UNPAID]) ->select() ->toArray(); if (empty($orders)) { return true; } Db::startTrans(); try{ foreach ($orders as $order) { //更新订单状态 Order::update(['order_status' => OrderEnum::ORDER_STATUS_CLOSE,'cancel_time'=>time()], ['id' => $order['id']]); //添加订单日志 (new OrderLogLogic())->record(OrderLogEnum::TYPE_SYSTEM,OrderLogEnum::SYSTEM_CANCEL_ORDER,$order['id'],0); // 系统取消订单 - 通知买家 // event('Notice', [ // 'scene_id' => NoticeEnum::SYSTEM_CANCEL_ORDER_NOTICE, // 'params' => [ // 'user_id' => $order['user_id'], // 'order_id' => $order['id'] // ] // ]); } Db::commit(); } catch(\Exception $e) { Db::rollback(); Log::write('订单自动关闭失败,失败原因:' . $e->getMessage()); } } }