filled('limit')) { $query->limit($request->input('limit')); } $user = auth('api')->user(); // 当前用户所在的支部排名 $current = ['score' => '-', 'rank' => '-', 'cate' => '']; $list = $query->get(); $rankList = collect(); foreach ($list as $item) { $rankList->push([ 'id' => $item->id, 'name' => $item->name, 'count' => $item->users_count, 'score' => $item->users_count ? floor($item->current_score / $item->users_count) : 0, ]); } $rankList = $rankList->sortByDesc('score'); $rankList = $rankList->values()->map(function ($item, $index) use ($user, &$current) { $item['rank'] = $index + 1; if ($user && $item['id'] == $user->cate_id) { $current['cate'] = $item['name']; $current['rank'] = $item['rank']; $current['score'] = $item['score']; } return $item; }); return $this->response()->success(['list' => $rankList, 'current' => $current]); } // 党支部排名期数 public function dates() { $query = CateRank::query(); $list = $query->select('sn')->groupBy('sn')->pluck('sn'); return $this->response()->success($list); } // 党支部其他季度的排名记录 public function list(Request $request) { $request->validate([ // 期数 'sn' => 'required', ]); $type = $request->input('column', 'avg_score'); $list = CateRank::with(['cate']) ->where('sn', $request->input('sn')) ->orderBy($type, 'desc') ->get(); $rankList = []; $user = auth('api')->user(); // 当前用户所在的支部排名 $current = ['score' => '-', 'rank' => '-', 'cate' => '']; foreach ($list as $index => $item) { $rankItem = [ 'id' => $item->id, 'name' => $item->cate?->name, 'rank' => $index + 1, 'score' => $item->$type, ]; $rankList[] = $rankItem; if ($user && $rankItem['id'] == $user->cate_id) { $current['cate'] = $rankItem['name']; $current['rank'] = $rankItem['rank']; $current['score'] = $rankItem['score']; } } return $this->response()->success(['list' => $rankList, 'current' => $current]); } }