user(); $query = DailyMealPlan::withoutGlobalScope('store') ->where('customer_id', $customer->id) ->with('review'); // 按指定日期筛选 if ($request->filled('date')) { $query->whereDate('plan_date', $request->input('date')); } // 最近N天 if ($request->filled('days') && !$request->filled('date')) { $days = (int) $request->input('days', 7); $query->where('plan_date', '>=', Carbon::today()->subDays($days - 1)); } return $this->paginate( $query->orderByDesc('plan_date')->paginate(20) ); } /** * 今日用膳 */ public function today(Request $request): JsonResponse { /** @var Customer $customer */ $customer = $request->user(); $list = DailyMealPlan::withoutGlobalScope('store') ->where('customer_id', $customer->id) ->whereDate('plan_date', today()) ->get(); return $this->success($list); } /** * 提交膳食点评 */ public function review(Request $request, int $planId): JsonResponse { /** @var Customer $customer */ $customer = $request->user(); $validated = $request->validate([ 'rating' => 'required|integer|min:1|max:5', 'content' => 'nullable|string|max:500', ]); // 确认该膳食计划属于当前客户 $plan = DailyMealPlan::withoutGlobalScope('store') ->where('id', $planId) ->where('customer_id', $customer->id) ->first(); if (!$plan) { return $this->error('膳食记录不存在或无权操作', 40401, 404); } $review = MealReview::updateOrCreate( ['daily_meal_plan_id' => $planId], [ 'score' => $validated['rating'], 'content' => $validated['content'] ?? null, 'customer_id' => $customer->id, ] ); return $this->success($review); } }