@extends('admin.layouts.app') @section('title', '游戏管理') @section('content')
{{-- 页头 --}}

🎮 游戏管理

统一管理聊天室所有娱乐游戏的开关状态与核心参数,所有游戏默认关闭。

@if (session('success'))
✅ {{ session('success') }}
@endif {{-- 游戏卡片列表 --}}
@foreach ($games as $game)
{{-- 卡片头部:游戏名 + 开关 --}}
{{ $game->icon }}
{{ $game->name }} {{ $game->enabled ? '运行中' : '已关闭' }}
{{ $game->description }}
{{-- 大开关按钮 --}}
{{-- 参数配置区域 --}}
@csrf @php $params = $game->params ?? []; $labels = gameParamLabels($game->game_key); @endphp
@foreach ($params as $paramKey => $paramValue) @php $meta = $labels[$paramKey] ?? ['label' => $paramKey, 'type' => 'number', 'unit' => ''] @endphp
@if ($meta['type'] === 'boolean') @elseif ($meta['type'] === 'array') @else @endif
@endforeach
修改后立即生效(缓存60秒刷新)
@endforeach @if ($games->isEmpty())
暂无游戏配置,请先运行 php artisan db:seed --class=GameConfigSeeder
@endif
@endsection @php /** * 返回各游戏参数的中文标签说明。 * * @param string $gameKey * @return array */ function gameParamLabels(string $gameKey): array { return match ($gameKey) { 'baccarat' => [ 'interval_minutes' => ['label' => '开局间隔', 'type' => 'number', 'unit' => '分钟', 'min' => 1], 'bet_window_seconds' => ['label' => '押注窗口', 'type' => 'number', 'unit' => '秒', 'min' => 10], 'min_bet' => ['label' => '最低押注', 'type' => 'number', 'unit' => '金币', 'min' => 1], 'max_bet' => ['label' => '最高押注', 'type' => 'number', 'unit' => '金币', 'min' => 1], 'payout_big' => ['label' => '大赔率(1:N)', 'type' => 'number', 'unit' => '', 'min' => 1], 'payout_small' => ['label' => '小赔率(1:N)', 'type' => 'number', 'unit' => '', 'min' => 1], 'payout_triple' => ['label' => '豹子赔率(1:N)', 'type' => 'number', 'unit' => '', 'min' => 1], 'kill_points' => ['label' => '庄家收割点数', 'type' => 'array', 'unit' => '逗号分隔'], ], 'slot_machine' => [ 'cost_per_spin' => ['label' => '每次旋转消耗', 'type' => 'number', 'unit' => '金币', 'min' => 1], 'house_edge_percent' => [ 'label' => '庄家边际', 'type' => 'number', 'unit' => '%', 'min' => 0, 'step' => 0.1, ], 'daily_limit' => ['label' => '每日转动上限', 'type' => 'number', 'unit' => '次(0=不限)', 'min' => 0], 'jackpot_payout' => ['label' => '三个7赔率(1:N)', 'type' => 'number', 'unit' => '', 'min' => 1], 'triple_payout' => ['label' => '三💎赔率(1:N)', 'type' => 'number', 'unit' => '', 'min' => 1], 'same_payout' => ['label' => '其他三同(1:N)', 'type' => 'number', 'unit' => '', 'min' => 1], 'pair_payout' => ['label' => '两同赔率(1:N)', 'type' => 'number', 'unit' => '', 'min' => 1], 'curse_enabled' => ['label' => '开启诅咒(三💀)', 'type' => 'boolean', 'unit' => ''], ], 'mystery_box' => [ 'auto_drop_enabled' => ['label' => '自动定时投放', 'type' => 'boolean', 'unit' => ''], 'auto_interval_hours' => ['label' => '自动投放间隔', 'type' => 'number', 'unit' => '小时', 'min' => 1], 'claim_window_seconds' => ['label' => '领取窗口', 'type' => 'number', 'unit' => '秒', 'min' => 10], 'min_reward' => ['label' => '普通箱最低奖励', 'type' => 'number', 'unit' => '金币', 'min' => 1], 'max_reward' => ['label' => '普通箱最高奖励', 'type' => 'number', 'unit' => '金币', 'min' => 1], 'rare_min_reward' => ['label' => '稀有箱最低奖励', 'type' => 'number', 'unit' => '金币', 'min' => 1], 'rare_max_reward' => ['label' => '稀有箱最高奖励', 'type' => 'number', 'unit' => '金币', 'min' => 1], 'trap_chance_percent' => [ 'label' => '黑化箱概率', 'type' => 'number', 'unit' => '%', 'min' => 0, 'max' => 100, ], ], 'horse_racing' => [ 'interval_minutes' => ['label' => '比赛间隔', 'type' => 'number', 'unit' => '分钟', 'min' => 5], 'bet_window_seconds' => ['label' => '押注窗口', 'type' => 'number', 'unit' => '秒', 'min' => 10], 'race_duration' => ['label' => '跑马动画时长', 'type' => 'number', 'unit' => '秒', 'min' => 10], 'horse_count' => ['label' => '参赛马匹数', 'type' => 'number', 'unit' => '匹', 'min' => 2, 'max' => 8], 'min_bet' => ['label' => '最低押注', 'type' => 'number', 'unit' => '金币', 'min' => 1], 'max_bet' => ['label' => '最高押注', 'type' => 'number', 'unit' => '金币', 'min' => 1], 'house_take_percent' => [ 'label' => '庄家抽水', 'type' => 'number', 'unit' => '%', 'min' => 0, 'max' => 20, ], ], 'fortune_telling' => [ 'free_count_per_day' => ['label' => '每日免费次数', 'type' => 'number', 'unit' => '次', 'min' => 0], 'extra_cost' => ['label' => '额外次数消耗', 'type' => 'number', 'unit' => '金币', 'min' => 0], 'buff_duration_hours' => ['label' => '加成持续时间', 'type' => 'number', 'unit' => '小时', 'min' => 1], 'jackpot_chance' => [ 'label' => '上上签概率', 'type' => 'number', 'unit' => '%', 'min' => 0, 'max' => 100, ], 'good_chance' => ['label' => '上签概率', 'type' => 'number', 'unit' => '%', 'min' => 0, 'max' => 100], 'bad_chance' => ['label' => '下签概率', 'type' => 'number', 'unit' => '%', 'min' => 0, 'max' => 100], 'curse_chance' => [ 'label' => '大凶签概率', 'type' => 'number', 'unit' => '%', 'min' => 0, 'max' => 100, ], ], default => [], }; } @endphp