ensurePlatformAdmin($request); $filters = [ 'status' => trim((string) $request->query('status', '')), 'keyword' => trim((string) $request->query('keyword', '')), ]; $query = PlatformLead::query(); $query->when($filters['status'] !== '', fn (Builder $b) => $b->where('status', $filters['status'])); $query->when($filters['keyword'] !== '', function (Builder $b) use ($filters) { $kw = $filters['keyword']; $b->where(function (Builder $q) use ($kw) { $q->where('name', 'like', '%' . $kw . '%') ->orWhere('mobile', 'like', '%' . $kw . '%') ->orWhere('email', 'like', '%' . $kw . '%') ->orWhere('company', 'like', '%' . $kw . '%'); }); }); $leads = $query->latest('id')->paginate(15)->withQueryString(); return view('admin.platform_leads.index', [ 'leads' => $leads, 'filters' => $filters, 'statusLabels' => $this->statusLabels(), ]); } public function setStatus(Request $request, PlatformLead $lead): RedirectResponse { $this->ensurePlatformAdmin($request); $data = $request->validate([ 'status' => ['required', Rule::in(array_keys($this->statusLabels()))], ]); $lead->status = (string) $data['status']; $lead->save(); return redirect()->back()->with('success', '线索状态已更新:#' . $lead->id . ' → ' . ($this->statusLabels()[$lead->status] ?? $lead->status)); } private function statusLabels(): array { return [ 'new' => '新线索', 'contacted' => '已联系', 'qualified' => '已确认需求', 'converted' => '已转化', 'closed' => '已关闭', ]; } }