1
0
Fork 0
party-rank-server/app/Http/Controllers/Api/UserRankController.php

85 lines
2.5 KiB
PHP

<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\{PartyUser, UserRank};
class UserRankController extends Controller
{
// 党员排名
public function index(Request $request)
{
$query = PartyUser::query();
if ($request->filled('limit')) {
$query->limit($request->input('limit'));
}
$user = auth('api')->user();
// 当前用户的排名
$current = ['score' => '-', 'rank' => '-'];
$list = $query->orderBy('current_score', 'desc')->get();
$rankList = [];
foreach($list as $index => $item) {
$rankItem = [
'id' => $item->id,
'name' => $item->name,
'rank' => $index + 1,
'score' => $item->current_score
];
$rankList[] = $rankItem;
if ($user && $rankItem['id'] == $user->id) {
$current['rank'] = $rankItem['rank'];
$current['score'] = $rankItem['score'];
}
}
return $this->response()->success(['list' => $rankList, 'current' => $current]);
}
// 党员排名期数
public function dates()
{
$query = UserRank::query();
$list = $query->select('sn')->groupBy('sn')->pluck('sn');
return $this->response()->success($list);
}
// 党员其他季度的排名记录
public function list(Request $request)
{
$request->validate([
// 期数
'sn' => 'required',
]);
$list = UserRank::with(['user'])
->where('sn', $request->input('sn'))
->orderBy('score', 'desc')
->get();
$rankList = [];
$user = auth('api')->user();
// 当前用户所在的支部排名
$current = ['score' => '-', 'rank' => '-', 'cate' => ''];
foreach ($list as $index => $item) {
$rankItem = [
'id' => $item->id,
'name' => $item->user?->name,
'rank' => $index + 1,
'score' => $item->score,
];
$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]);
}
}