title('URS达人等级统计'); // 移除下拉选项,因为达人等级统计不需要时间范围选择 $this->dropdown([]); } /** * 处理请求 * * @param Request $request * @return mixed|void */ public function handle(Request $request) { $stats = $this->getTalentLevelStats(); // 转换为NumberS2需要的数据格式 $dataList = []; foreach ($stats as $stat) { $dataList[$stat['name']] = $stat['count']; } $this->withContent($dataList); } /** * 获取达人等级统计数据 * * @return array */ protected function getTalentLevelStats(): array { // 统计各等级的用户数量 $levelCounts = UrsUserTalent::select('talent_level', DB::raw('COUNT(*) as count')) ->groupBy('talent_level') ->get() ->keyBy('talent_level'); $stats = []; // 遍历所有等级配置,包括非达人等级 foreach (UrsTalentLevel::cases() as $levelEnum) { $level = $levelEnum->value; $count = $levelCounts->get($level)->count ?? 0; $stats[] = [ 'level' => $level, 'name' => $levelEnum->getName(), 'count' => $count, ]; } return $stats; } }