request->input('id'); // 获取数据源 $this->logInfo = $this->orderMealCateringLogModel->find($id); $this->siteInfo = $this->siteModel->find($this->logInfo->site_id); $this->resCount = $this->logInfo->quantity; // 检测数据 $this->check(); // 配餐 $this->catering(); return $this->return->success('success',['num' => $this->resCount]); } /** * @return void */ private function catering(): void { $this->logInfo->status = CateringCode::CATERING_STATUS_FINISH; if (!$this->logInfo->save()) throw new ErrException('配餐失败1'); } /** * @return void */ private function check(): void { if (empty($this->logInfo)) throw new ErrException('配餐数据不存在'); if ($this->logInfo->quantity <= 0) throw new ErrException('该配餐数量为0,不可配餐'); $allOrderIds = $this->orderModel ->where('site_id', $this->logInfo->site_id) ->where('cycle_id', $this->cycleId) ->where('type',OrderCode::ORDER_TYPE_MEAL) ->where('status',OrderCode::PAYED) ->pluck('order_id') ->toArray(); $totalCopies = $this->orderGoodModel ->whereIn('order_id', $allOrderIds) ->where('cycle_id', $this->cycleId) ->where('sku_id', $this->logInfo->sku_id) ->sum('copies') ?? 0; if ($totalCopies != $this->logInfo->quantity) $this->resCount = $totalCopies; } }