setName('appoint_order_close') ->setDescription('关闭超过预约时间的订单'); } protected function execute(Input $input, Output $output) { $time = time(); $orders = Order::where(['order_status' => OrderEnum::ORDER_STATUS_WAIT_RECEIVING,'pay_status' => PayEnum::ISPAID]) ->where('appoint_time','<',$time) ->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 RefundLogic())->refund($order,$order['order_amount'],0,OrderRefundEnum::TYPE_SYSTEM,1,0); //添加订单日志 (new OrderLogLogic())->record(OrderLogEnum::TYPE_SYSTEM,OrderLogEnum::SYSTEM_CANCEL_APPOINT_ORDER,$order['id'],0); } Db::commit(); } catch(\Exception $e) { Db::rollback(); Log::write('关闭超过预约时间的订单失败,失败原因:' . $e->getMessage()); } } }