whereIn('lottery_state', [LottState::PENDING,LottState::DRAFT]) ->where('odds_close_time', '<', $closeDate) ->where(function($query) { $query->where('pid', 0) ->orWhereRaw('id=pid') // 合买 ->orWhereRaw('id!=pid and type=4'); // 跟单 }) ->chunkById(200, function($orders) { foreach ($orders as $order) { $this->cancelAndRefund($order); } }); } public function cancelAndRefund(Order $order) { DB::beginTransaction(); try { $order->lottery_state = LottState::CANCEL; $order->save(); $seller = new Seller(); $seller->id = 0; CustomerWalletService::refundForRevokeOrder($order, $seller); DB::commit(); } catch (JingCaiException $exception) { DB::rollBack(); Log::error('cancelAndRefund-JingCaiException', [ 'order_id' => $order->id, 'error' => $exception->getMessage(), 'track' => Helps::filterStackTrace($exception->getTrace(),1) ]); } catch (\Exception $exception) { DB::rollBack(); Log::error('cancelAndRefund-Exception', [ 'order_id' => $order->id, 'error' => $exception->getMessage(), 'track' => Helps::filterStackTrace($exception->getTrace(),2) ]); } } }