diff --git a/app/Http/Controllers/Api/ActivityController.php b/app/Http/Controllers/Api/ActivityController.php index 500cfe2..f8fa66d 100644 --- a/app/Http/Controllers/Api/ActivityController.php +++ b/app/Http/Controllers/Api/ActivityController.php @@ -40,15 +40,22 @@ class ActivityController extends ApiController $list = UserActivity::with('user')->where('activity_id', $activityId)->where('mark', '>', 0)->sort()->limit(30)->get(); //获取当前排名; - $userMark = UserActivity::where([ + $userActivity = UserActivity::where([ 'user_id' => $request->user()->id, 'activity_id' => $activityId, - ])->value('mark'); + ])->first(); $rankNumber = null; - if($userMark){ - $rankNumber = UserActivity::where('activity_id', $activityId)->where('mark', '>', $userMark)->sort()->count(); - $rankNumber++; + if($userActivity?->mark > 0){ //计算自己的排名 + + $markNumber = UserActivity::where('activity_id', $activityId)->where('mark', '>', $userActivity->mark)->sort()->count(); + $rightTimesNumber = UserActivity::where('activity_id', $activityId)->where('mark', '=', $userActivity->mark)->where('right_times', '>', $userActivity->right_times)->count(); + $joinAtNumber = UserActivity::where('activity_id', $activityId)->where([ + 'mark' =>$userActivity->mark, + 'right_times' => $userActivity->right_times + ])->where('last_join_at', '<', $userActivity->last_join_at)->count(); + + $rankNumber = $markNumber + $rightTimesNumber + $joinAtNumber + 1; } return $this->success(['rank_list' => UserActivityResource::collection($list)->resolve(), 'rank_number'=>$rankNumber]); @@ -62,15 +69,21 @@ class ActivityController extends ApiController $list = UserActivity::with('user')->where('activity_id', $activityId)->where('mark', '>', 0)->sort()->limit(30)->get(); //获取当前排名; - $userMark = UserActivity::where([ + $userActivity = UserActivity::where([ 'user_id' => $request->user()->id, 'activity_id' => $activityId, - ])->value('mark'); + ])->first(); $rankNumber = null; - if($userMark){ - $rankNumber = UserActivity::where('activity_id', $activityId)->where('mark', '>', $userMark)->sort()->count(); - $rankNumber++; + if($userActivity?->mark > 0){ //计算自己的排名 + $markNumber = UserActivity::where('activity_id', $activityId)->where('mark', '>', $userActivity->mark)->sort()->count(); + $rightTimesNumber = UserActivity::where('activity_id', $activityId)->where('mark', '=', $userActivity->mark)->where('right_times', '>', $userActivity->right_times)->count(); + $joinAtNumber = UserActivity::where('activity_id', $activityId)->where([ + 'mark' =>$userActivity->mark, + 'right_times' => $userActivity->right_times + ])->where('last_join_at', '<', $userActivity->last_join_at)->count(); + + $rankNumber = $markNumber + $rightTimesNumber + $joinAtNumber + 1; } return $this->success([