achievementService->scanUser($user); $achievementData = $this->achievementService->displayForUser($user); $activeTab = in_array($request->query('status'), ['unlocked', 'locked'], true) ? $request->query('status') : 'all'; $allAchievements = $achievementData['achievements']; // 页面 tab 只影响展示列表,不影响顶部总进度统计。 $achievementTabs = [ 'all' => [ 'label' => '全部', 'count' => $allAchievements->count(), 'url' => route('achievements.index'), ], 'unlocked' => [ 'label' => '已完成', 'count' => $allAchievements->where('unlocked', true)->count(), 'url' => route('achievements.index', ['status' => 'unlocked']), ], 'locked' => [ 'label' => '未达成', 'count' => $allAchievements->where('unlocked', false)->count(), 'url' => route('achievements.index', ['status' => 'locked']), ], ]; $achievementData['achievements'] = match ($activeTab) { 'unlocked' => $allAchievements->where('unlocked', true)->values(), 'locked' => $allAchievements->where('unlocked', false)->values(), default => $allAchievements, }; return view('achievements.index', [ 'user' => $user, 'active_tab' => $activeTab, 'achievement_tabs' => $achievementTabs, ...$achievementData, ]); } }