From 0157d7fc8eb9aeb67b241b3ff6863fae80d893c5 Mon Sep 17 00:00:00 2001 From: Slime-hatena Date: Wed, 17 Apr 2024 00:49:28 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E7=AE=A1=E7=90=86=E8=80=85?= =?UTF-8?q?=E7=94=A8OD=E9=9B=86=E8=A8=88=E3=83=9A=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=81=AE=E8=A1=A8=E8=A8=98=E3=82=92=E3=82=8F=E3=81=8B=E3=82=8A?= =?UTF-8?q?=E3=82=84=E3=81=99=E3=81=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/Http/Controllers/AdminController.php | 15 +++++- .../resources/views/admin/aggregate.blade.php | 51 +++++++++++++------ 2 files changed, 49 insertions(+), 17 deletions(-) diff --git a/OngekiScoreLog/app/Http/Controllers/AdminController.php b/OngekiScoreLog/app/Http/Controllers/AdminController.php index c9b095a..8012529 100644 --- a/OngekiScoreLog/app/Http/Controllers/AdminController.php +++ b/OngekiScoreLog/app/Http/Controllers/AdminController.php @@ -71,7 +71,20 @@ public function GetConfig(){ public function GetAggregate(){ $result = \App\AggregateOverdamage::all(); - return view('admin/aggregate', compact(['result'])); + $difficultyToStr = [ + 0 => 'Basic', + 1 => 'Advanced', + 2 => 'Expert', + 3 => 'Master', + 10 => 'Lunatic', + ]; + + $musics = []; + $temp = \App\MusicData::all(); + foreach ($temp as $value) { + $musics[$value->id] = $value->title; + } + return view('admin/aggregate', compact(['result', 'musics', 'difficultyToStr'])); } /** diff --git a/OngekiScoreLog/resources/views/admin/aggregate.blade.php b/OngekiScoreLog/resources/views/admin/aggregate.blade.php index 1de84e1..76151a6 100644 --- a/OngekiScoreLog/resources/views/admin/aggregate.blade.php +++ b/OngekiScoreLog/resources/views/admin/aggregate.blade.php @@ -8,26 +8,45 @@ @include('admin/_submenu', ['active' => 'aggregate']) @endsection +@section('additional_footer') + +@endsection + @section('content')

集計一覧

- - - - - - - - - - @foreach ($result as $key => $value) +
+
idmaxupdated_at
+ + + + + + + + + + - - - + + + + + - @endforeach - -
idtitle難易度maxupdated_at
{{$value->id}}{{$value->max}}{{$value->updated_at}}idtitle難易度maxupdated_at
+ + + @foreach ($result as $key => $value) + + {{$value->id}} + {{$musics[$value->song_id]}} + {{substr($difficultyToStr[$value->difficulty], 0, 3)}} + {{$value->max}} + {{$value->updated_at}} + + @endforeach + + +
@endsection From 98ce90d42a62ece10230e9927c2194e4933c614d Mon Sep 17 00:00:00 2001 From: Slime-hatena Date: Wed, 17 Apr 2024 02:31:02 +0900 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20OD=E3=83=9A=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=82=92=E9=9B=A3=E6=98=93=E5=BA=A6=E3=81=94=E3=81=A8=E3=81=AB?= =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 正確なOD値を得るには敵レベルが必要らしいので不可能 なら全部出してしまえの精神 --- .../Http/Controllers/ViewUserController.php | 33 +++++++++---------- .../user/song_status_overdamage.blade.php | 13 ++++++-- .../resources/views/user_overdamage.blade.php | 2 +- OngekiScoreLog/routes/web.php | 4 +-- 4 files changed, 29 insertions(+), 23 deletions(-) diff --git a/OngekiScoreLog/app/Http/Controllers/ViewUserController.php b/OngekiScoreLog/app/Http/Controllers/ViewUserController.php index e50ae4f..107d36e 100644 --- a/OngekiScoreLog/app/Http/Controllers/ViewUserController.php +++ b/OngekiScoreLog/app/Http/Controllers/ViewUserController.php @@ -340,7 +340,12 @@ public function getUserPage(Request $request, $id, $mode = null){ return view('user', compact('id', 'status', 'score', 'stat', 'mode', 'submenuActive', 'sidemark', 'archive')); } - public function getOverDamegePage($id){ + public function getOverDamegePage($id, $difficulty = ""){ + // 存在しないdifficultyが指定された場合はリダイレクト + if(!in_array($difficulty, ["", "basic", "advanced", "expert", "master", "lunatic"])){ + return redirect("/user/" . $id . "/overdamage"); + } + $userStatus = new UserStatus(); $user = User::where('id' ,$id)->first(); $status = $userStatus->getRecentUserData($id); @@ -380,30 +385,24 @@ public function getOverDamegePage($id){ // 自分のスコアを取得 $score = (new ScoreData)->getRecentUserScore($id)->addMusicData()->exclusionDeletedMusic()->getValue(); - // 難易度を通常難易度1つ+LUNATICだけに絞る - // FIXME: こんなのコード側でやっちゃいけない... けどテーブル設計的にどうしようもなく... - $temp = []; + // 難易度を指定のものに絞る $scoreDatas = []; { foreach ($score as $value) { $key = $value->song_id; - if($value->difficulty === 10){ - if($value->over_damage_high_score !== "0.00"){ + if($value->over_damage_high_score !== "0.00"){ + if(($difficulty === "" && ($value->difficulty === 3 || $value->difficulty === 10)) + || ($difficulty === "basic" && $value->difficulty === 0) + || ($difficulty === "advanced" && $value->difficulty === 1) + || ($difficulty === "expert" && $value->difficulty === 2) + || ($difficulty === "master" && $value->difficulty === 3) + || ($difficulty === "lunatic" && $value->difficulty === 10) + ){ $scoreDatas[] = $value; } - }else{ - $temp[$key][] = $value; - } - } - - foreach ($temp as $value) { - array_multisort(array_column($value, 'over_damage_high_score'), SORT_DESC, $value); - if($value[0]->over_damage_high_score !== "0.00"){ - $scoreDatas[] = $value[0]; } } } - - return view('user_overdamage', compact('id', 'status', 'lastUpdate', 'scoreDatas', 'topRankerScore')); + return view('user_overdamage', compact('id', 'difficulty', 'status', 'lastUpdate', 'scoreDatas', 'topRankerScore')); } } diff --git a/OngekiScoreLog/resources/views/layouts/components/user/song_status_overdamage.blade.php b/OngekiScoreLog/resources/views/layouts/components/user/song_status_overdamage.blade.php index b13b50b..7ac4917 100644 --- a/OngekiScoreLog/resources/views/layouts/components/user/song_status_overdamage.blade.php +++ b/OngekiScoreLog/resources/views/layouts/components/user/song_status_overdamage.blade.php @@ -1,8 +1,17 @@

登録されている全ユーザーのオーバーダメージのうち、一番高いものと比較することが出来ます。
+ (※全国ランキング1位のスコアではありません!)
OD埋めなどにご活用ください。

-

プレイしている楽曲内で、一番ODが高い難易度のみ表示されます。全難易度のODが0の曲は表示されません。

- 最終更新: {{$lastUpdate->format('Y-m-d H:i:s')}} (?%表示は未集計です) +

最終更新: {{$lastUpdate->format('Y-m-d H:i:s')}} (?%表示は未集計です)

+ +
diff --git a/OngekiScoreLog/resources/views/user_overdamage.blade.php b/OngekiScoreLog/resources/views/user_overdamage.blade.php index dbe1f2d..9933e0d 100644 --- a/OngekiScoreLog/resources/views/user_overdamage.blade.php +++ b/OngekiScoreLog/resources/views/user_overdamage.blade.php @@ -66,7 +66,7 @@ {{-- @component('layouts/components/user/song_filter') @endcomponent --}} - @component('layouts/components/user/song_status_overdamage', ['score' => $scoreDatas, 'topRankerScore' => $topRankerScore, 'id' => $id, 'lastUpdate' => $lastUpdate]) + @component('layouts/components/user/song_status_overdamage', ['score' => $scoreDatas, 'topRankerScore' => $topRankerScore, 'id' => $id, 'difficulty' => $difficulty, 'lastUpdate' => $lastUpdate]) @endcomponent @endsection diff --git a/OngekiScoreLog/routes/web.php b/OngekiScoreLog/routes/web.php index 73bf518..aa1f1c5 100644 --- a/OngekiScoreLog/routes/web.php +++ b/OngekiScoreLog/routes/web.php @@ -20,9 +20,7 @@ Route::get('/user/{id}/trophy', 'ViewUserTrophyController@getIndex')->where(['id' => '\d+']); Route::get('/user/{id}/music/{music}/{difficulty}', 'ViewUserMusicController@getIndex')->where(['id' => '\d+', 'music' => '\d+', 'difficulty' => '\w+']); Route::get('/user/{id}/music/{music}', 'ViewUserMusicController@getRedirect')->where(['id' => '\d+', 'music' => '\d+']); -Route::middleware('throttle:5,1')->group(function () { - Route::get('/user/{id}/overdamage', 'ViewUserController@getOverDamegePage')->where(['id' => '\d+']); -}); +Route::get('/user/{id}/overdamage/{difficulty?}', 'ViewUserController@getOverDamegePage')->where(['id' => '\d+', 'difficulty' => '\w+']); Route::get('/user/{id}/{mode?}', 'ViewUserController@getUserPage')->where(['id' => '\d+']); Route::middleware('throttle:3,1')->group(function () {