From abc05de86ee6b0b173d2b53c2654cf35ddd64f31 Mon Sep 17 00:00:00 2001 From: lkddi Date: Sat, 11 Apr 2026 16:31:13 +0800 Subject: [PATCH] Fix duplicate mystery box config fields --- .../Admin/GameConfigController.php | 17 +++++++++++++++ .../views/admin/game-configs/index.blade.php | 21 ++++++++++++++++++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Admin/GameConfigController.php b/app/Http/Controllers/Admin/GameConfigController.php index 43d92ff..dd5c62a 100644 --- a/app/Http/Controllers/Admin/GameConfigController.php +++ b/app/Http/Controllers/Admin/GameConfigController.php @@ -66,6 +66,23 @@ class GameConfigController extends Controller $current = $gameConfig->params ?? []; $updated = array_merge($current, $request->input('params')); + if ($gameConfig->game_key === 'mystery_box') { + $legacyMap = [ + 'min_reward' => 'normal_reward_min', + 'max_reward' => 'normal_reward_max', + 'rare_min_reward' => 'rare_reward_min', + 'rare_max_reward' => 'rare_reward_max', + ]; + + foreach ($legacyMap as $legacyKey => $newKey) { + if (! array_key_exists($newKey, $updated) && array_key_exists($legacyKey, $updated)) { + $updated[$newKey] = $updated[$legacyKey]; + } + + unset($updated[$legacyKey]); + } + } + $gameConfig->update(['params' => $updated]); $gameConfig->clearCache(); diff --git a/resources/views/admin/game-configs/index.blade.php b/resources/views/admin/game-configs/index.blade.php index 40bdd86..0067ca1 100644 --- a/resources/views/admin/game-configs/index.blade.php +++ b/resources/views/admin/game-configs/index.blade.php @@ -93,12 +93,31 @@ @php $params = $game->params ?? []; $labels = gameParamLabels($game->game_key); + $hiddenLegacyKeys = $game->game_key === 'mystery_box' + ? ['min_reward', 'max_reward', 'rare_min_reward', 'rare_max_reward'] + : []; $paramKeys = array_values(array_unique(array_merge(array_keys($labels), array_keys($params)))); + $paramKeys = array_values(array_filter($paramKeys, fn ($key) => ! in_array($key, $hiddenLegacyKeys, true))); @endphp
@foreach ($paramKeys as $paramKey) - @php $paramValue = $params[$paramKey] ?? ($labels[$paramKey]['default'] ?? '') @endphp + @php + $paramValue = $params[$paramKey] ?? ($labels[$paramKey]['default'] ?? ''); + + if ($game->game_key === 'mystery_box') { + $legacyFallbackMap = [ + 'normal_reward_min' => 'min_reward', + 'normal_reward_max' => 'max_reward', + 'rare_reward_min' => 'rare_min_reward', + 'rare_reward_max' => 'rare_max_reward', + ]; + + if (($paramValue === '' || $paramValue === null) && isset($legacyFallbackMap[$paramKey])) { + $paramValue = $params[$legacyFallbackMap[$paramKey]] ?? $paramValue; + } + } + @endphp @php $meta = $labels[$paramKey] ?? ['label' => $paramKey, 'type' => 'number', 'unit' => ''] @endphp