request->input('kitchenId'); $cycleId = (int)$this->request->input('cycleId'); $orderIds = $this->orderModel ->where('kitchen_id', $kitchenId) ->where('cycle_id', $cycleId) ->whereIn('status', [ OrderCode::PLAN, OrderCode::DEPART, OrderCode::ARRIVE, ]) ->pluck('id') ->toArray(); Db::transaction(function () use ($orderIds) { foreach (array_chunk($orderIds, 100) as $chunk) { $orderFinish = $this->orderModel->whereIn('id', $chunk)->update(['status' => OrderCode::FINISH]); $orderGoodFinish = $this->orderGoodModel->whereIn('order_id', $chunk)->update(['status' => OrderCode::FINISH]); if (!$orderFinish && !$orderGoodFinish) throw new ErrException('更新失败,数据回滚,请重新操作'); } }); // 财务结算节点 消息队列 - 生成财务结算数据 完成订单数据 $financesMessage = new FinancesProducer([ 'cycle_id' => $cycleId, 'kitchen_id' => $kitchenId, ]); $this->producer->produce($financesMessage); // return $this->return->success(); } }