Selaa lähdekoodia

1、绑定手机按regionid区分不能去掉这个条件
2、日志上报

Tree 1 viikko sitten
vanhempi
sitoutus
3c08be6924

+ 1 - 0
app/Console/Commands/CheckIosAppStore.php

@@ -36,6 +36,7 @@ class CheckIosAppStore extends Command
         'Slots Magnet Revolution 206' => 'https://apps.apple.com/us/app/slots-magnet-revolution/id6759797102',
         'Viking Mysteric Slots 207'   => 'https://apps.apple.com/us/app/viking-mysteric-slots/id6759851510',
         'Slots Chemistry Pirate 208'  => 'https://apps.apple.com/us/app/slots-chemistry-pirate/id6759852588',
+//        'Mini Plinko Slot 227'  => 'https://apps.apple.com/us/app/mini-plinko-slot/id6769709635',
 //        'ios test'  => 'https://apps.apple.com/us/app/slots-chemistry-pirate/id67598525',
         // 'ceshi' => 'https://apps.apple.com/us/app/pixiepineslotsgrid/id6758513278',
     ];

+ 65 - 0
app/Http/Controllers/Admin/GameEnterLogController.php

@@ -0,0 +1,65 @@
+<?php
+
+namespace App\Http\Controllers\Admin;
+
+use App\Http\Controllers\Controller;
+use App\Models\GameEnterLog;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+
+class GameEnterLogController extends Controller
+{
+    /**
+     * Average game enter duration statistics per game.
+     */
+    public function statistics(Request $request)
+    {
+        $startDate = $request->input('start_date', date('Y-m-d', strtotime('-7 days')));
+        $endDate = $request->input('end_date', date('Y-m-d'));
+
+        $rows = DB::table(GameEnterLog::TABLE)
+            ->whereBetween('log_date', [$startDate, $endDate])
+            ->selectRaw('game_id, COUNT(*) as enter_count, AVG(CAST(duration_ms AS FLOAT)) as avg_duration_ms')
+            ->groupBy('game_id')
+            ->orderByDesc('enter_count')
+            ->get();
+
+        $gameIds = $rows->pluck('game_id')->filter()->unique()->values()->toArray();
+        $games = [];
+        if (!empty($gameIds)) {
+            $gamesData = DB::connection('mysql')
+                ->table('webgame.games')
+                ->whereIn('id', $gameIds)
+                ->select('id', 'brand', 'title')
+                ->get();
+            foreach ($gamesData as $game) {
+                $games[$game->id] = $game;
+            }
+        }
+
+        $statistics = [];
+        foreach ($rows as $row) {
+            $gameId = (int) $row->game_id;
+            $avgMs = (float) $row->avg_duration_ms;
+            $gameName = __('auto.未知游戏');
+            if (isset($games[$gameId])) {
+                $game = $games[$gameId];
+                $gameName = $game->brand . ' - ' . $game->title;
+            }
+
+            $statistics[] = [
+                'game_id' => $gameId,
+                'game_name' => $gameName,
+                'enter_count' => (int) $row->enter_count,
+                'avg_duration_ms' => round($avgMs, 2),
+                'avg_duration_sec' => round($avgMs / 1000, 3),
+            ];
+        }
+
+        return view('admin.game_enter_log.statistics', [
+            'statistics' => $statistics,
+            'start_date' => $startDate,
+            'end_date' => $endDate,
+        ]);
+    }
+}

+ 58 - 0
app/Http/Controllers/Game/GameEnterLogController.php

@@ -0,0 +1,58 @@
+<?php
+
+namespace App\Http\Controllers\Game;
+
+use App\Http\Controllers\Controller;
+use App\Models\GameEnterLog;
+use Illuminate\Http\Request;
+
+class GameEnterLogController extends Controller
+{
+    /**
+     * Record game enter duration from client.
+     * Params: userID, game_id, time (duration in milliseconds).
+     */
+    public function record(Request $request)
+    {
+        try {
+            $userId = $request->input('userID') ?: $request->input('user_id');
+            $gameId = $request->input('game_id') ?: $request->input('gameId');
+            $durationMs = $request->input('time');
+            if ($durationMs === null || $durationMs === '') {
+                $durationMs = $request->input('duration');
+            }
+
+            if (empty($userId) || empty($gameId)) {
+                return apiReturnFail('userID and game_id are required');
+            }
+
+            if ($durationMs === null || $durationMs === '' || !is_numeric($durationMs)) {
+                return apiReturnFail('time is required (enter game duration in milliseconds)');
+            }
+
+            $durationMs = (int) $durationMs;
+            if ($durationMs < 0) {
+                return apiReturnFail('time must be a non-negative number');
+            }
+
+            $result = GameEnterLog::addLog([
+                'user_id' => $userId,
+                'game_id' => $gameId,
+                'duration_ms' => $durationMs,
+                'log_date' => $request->input('log_date') ?: date('Y-m-d'),
+            ]);
+
+            if ($result) {
+                return apiReturnSuc(['message' => 'Recorded successfully']);
+            }
+
+            return apiReturnFail('Failed to record');
+        } catch (\Exception $e) {
+            \Log::error('Game enter log record error: ' . $e->getMessage(), [
+                'request' => $request->all(),
+                'trace' => $e->getTraceAsString(),
+            ]);
+            return apiReturnFail('Error: ' . $e->getMessage());
+        }
+    }
+}

+ 1 - 1
app/Http/Controllers/Game/LoginController.php

@@ -874,7 +874,7 @@ class LoginController extends Controller
             $region=$config->isRegionUnique();
             $regionID = $request?$request->user()?$request->user()->RegionID:$region:$region;
             $isExist = GlobalUserInfo::query()
-                // ->where('RegionID', $regionID)
+                 ->where('RegionID', $regionID)
                 ->where(function ($query) use ($Phone, $OrgPhone) {
                     $query->where("Phone", $Phone)->orWhere('Accounts', $OrgPhone);
                 })

+ 2 - 2
app/Http/logic/api/SafePayCashierLogic.php

@@ -59,14 +59,14 @@ class SafePayCashierLogic implements CashierInterFace
             'currency'   => $config['currency'] ?? 'USD',
             'bank_code'  => $bankType,
             'bank_type'  => $bankType,
-            'name'       => $accountName ?: 'user',
+            'name'       => $accountName ?: 'user'.$query->UserID,
             'account'    => $account,
             'email'      => $email ?: '',
             'phone'      => $phone ?: '0000000000',
             'notify_url' => $config['notify_url'] ?? '',
             'extra'      => json_encode([
                 'userId'    => (string)($query->UserID ?? ''),
-                'firstName' => $accountName ?: '',
+                'firstName' => $accountName ?: 'user'.$query->UserID,
             ]),
         ];
 

+ 39 - 0
app/Models/GameEnterLog.php

@@ -0,0 +1,39 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class GameEnterLog extends Model
+{
+    const TABLE = 'agent.dbo.game_enter_log';
+
+    protected $table = self::TABLE;
+
+    public $timestamps = false;
+
+    protected $fillable = [
+        'user_id',
+        'game_id',
+        'duration_ms',
+        'log_date',
+        'created_at',
+    ];
+
+    /**
+     * @param array $data user_id, game_id, duration_ms, log_date (optional)
+     * @return bool
+     */
+    public static function addLog(array $data)
+    {
+        $logData = [
+            'user_id' => (int) ($data['user_id'] ?? 0),
+            'game_id' => (int) ($data['game_id'] ?? 0),
+            'duration_ms' => (int) ($data['duration_ms'] ?? 0),
+            'log_date' => $data['log_date'] ?? date('Y-m-d'),
+            'created_at' => date('Y-m-d H:i:s'),
+        ];
+
+        return self::insert($logData);
+    }
+}

+ 9 - 0
resources/lang/en_US/auto.php

@@ -1916,4 +1916,13 @@ return [
     '单控池总库存:'=>'Single-control pool total inventory:',
     '单控池累计成功回收:'=>'The single-control pool has accumulated successful recovery:',
     '单控池累计成功吐分:'=>'Single-control pool accumulative successful points:'
+    '进游戏时长统计'=>'Game enter duration stats',
+    '各游戏进游戏平均时长'=>'Average game enter duration by game',
+    '进游戏时长统计说明'=>'Client reports time from tap to load complete (ms). Table shows averages for the selected date range.',
+    '上报次数'=>'Report count',
+    '平均耗时(秒)'=>'Avg duration (sec)',
+    '平均耗时(毫秒)'=>'Avg duration (ms)',
+    '暂无进游戏时长统计数据'=>'No data. Change the date range or confirm the client is reporting and the table exists.',
+    '未知游戏'=>'Unknown game',
+    '至'=>'to',
 ];

+ 9 - 0
resources/lang/zh_CN/auto.php

@@ -1918,4 +1918,13 @@ return [
     '单控池总库存:'=>'单控池总库存:',
     '单控池累计成功回收:'=>'单控池累计成功回收:',
     '单控池累计成功吐分:'=>'单控池累计成功吐分:'
+    '进游戏时长统计'=>'进游戏时长统计',
+    '各游戏进游戏平均时长'=>'各游戏进游戏平均时长',
+    '进游戏时长统计说明'=>'客户端上报从点击进游戏到加载完成的耗时(毫秒),下表为所选日期范围内的平均值。',
+    '上报次数'=>'上报次数',
+    '平均耗时(秒)'=>'平均耗时(秒)',
+    '平均耗时(毫秒)'=>'平均耗时(毫秒)',
+    '暂无进游戏时长统计数据'=>'暂无统计数据,请选择其他时间范围,或确认客户端已上报且数据表已创建。',
+    '未知游戏'=>'未知游戏',
+    '至'=>'至',
 ];

+ 66 - 0
resources/views/admin/game_enter_log/statistics.blade.php

@@ -0,0 +1,66 @@
+@extends('base.base')
+@section('base')
+    <div class="main-panel">
+        <div class="content-wrapper">
+            <div class="page-header">
+                <h3 class="page-title">
+                     <span class="page-title-icon bg-gradient-primary text-white mr-2">
+                        <i class="mdi mdi-timer"></i>
+                    </span>
+                    {{ __('auto.进游戏时长统计') }}
+                </h3>
+                <nav aria-label="breadcrumb">
+                    <ol class="breadcrumb">
+                        <li class="breadcrumb-item"><a href="#">{{ __('auto.游戏数据') }}</a></li>
+                        <li class="breadcrumb-item active" aria-current="page">{{ __('auto.进游戏时长统计') }}</li>
+                    </ol>
+                </nav>
+            </div>
+            <div class="row">
+                <div class="col-lg-12 grid-margin stretch-card">
+                    <div class="card">
+                        <div class="card-body">
+                            <h4 class="card-title">{{ __('auto.各游戏进游戏平均时长') }}</h4>
+                            <p class="text-muted small">{{ __('auto.进游戏时长统计说明') }}</p>
+                            <form class="well form-inline margin-top-20" method="get" action="">
+                                <span style="padding-left: 10px">{{ __('auto.日期') }}:</span>
+                                <input type="date" name="start_date" class="form-control" value="{{ $start_date }}" />
+                                <span style="padding-left: 10px">{{ __('auto.至') }}</span>
+                                <input type="date" name="end_date" class="form-control" value="{{ $end_date }}" />
+                                <input type="submit" class="btn btn-sm btn-gradient-dark btn-icon-text" value="{{ __('auto.搜索') }}"/>&nbsp;&nbsp;
+                                <a href="/admin/game_enter_log/statistics" class="btn btn-sm btn-gradient-warning btn-icon-text">{{ __('auto.清空') }}</a>
+                            </form>
+                            <br>
+                            <table class="table table-bordered">
+                                <thead>
+                                <tr>
+                                    <th width="35%">{{ __('auto.游戏') }}</th>
+                                    <th width="15%">{{ __('auto.上报次数') }}</th>
+                                    <th width="25%">{{ __('auto.平均耗时(秒)') }}</th>
+                                    <th width="25%">{{ __('auto.平均耗时(毫秒)') }}</th>
+                                </tr>
+                                </thead>
+                                <tbody>
+                                @foreach($statistics as $stat)
+                                    <tr>
+                                        <td>{{ $stat['game_name'] }} <small class="text-muted">(ID: {{ $stat['game_id'] }})</small></td>
+                                        <td>{{ $stat['enter_count'] }}</td>
+                                        <td>{{ $stat['avg_duration_sec'] }}</td>
+                                        <td>{{ $stat['avg_duration_ms'] }}</td>
+                                    </tr>
+                                @endforeach
+                                </tbody>
+                            </table>
+                            @if(count($statistics) == 0)
+                                <div class="alert alert-info">
+                                    <p>{{ __('auto.暂无进游戏时长统计数据') }}</p>
+                                </div>
+                            @endif
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+@endsection
+

+ 3 - 0
routes/game.php

@@ -5,6 +5,9 @@ use Illuminate\Support\Facades\Route;
 
 Route::any('/client_log/record', 'Game\ClientLogController@recordLog');
 
+Route::any('/game_enter/record', 'Game\GameEnterLogController@record');
+
+
 
 //GlobalUID date
 Route::any('/agent_api/get-players', 'Game\AgentController@getAgentPlayers');

+ 66 - 64
routes/web.php

@@ -15,7 +15,7 @@ use Illuminate\Support\Facades\Route;
  */
 
 /**
- * 需要加入 rbac 控制的路由置于此处
+ * 需要加�? rbac 控制的路由置于�?��??
  */
 Route::any('/sendtele', 'Api\ApiController@sendTele');
 Route::any('/repaycheck', 'Admin\TestController@repay');
@@ -66,17 +66,17 @@ Route::group([
     'middleware' => ['install.check', 'session.check', 'rbac', 'test', 'check.role'],
 //    'as' => 'rbac',
 ], function ($route) {
-    //控制
+    //控制�?
     // $route->get('console', 'Admin\IndexController@console');
-//    $route->get('console', 'Admin\GameDataController@userOnlineView')->defaults('name', '控制');
-    $route->get('console', 'Admin\LiveDataController@gameInfo')->defaults('name', '控制');
+//    $route->get('console', 'Admin\GameDataController@userOnlineView')->defaults('name', '控制�?');
+    $route->get('console', 'Admin\LiveDataController@gameInfo')->defaults('name', '控制�?');
 
 
     $route->group(['prefix' => 'admin'], function (\Illuminate\Routing\Router $route) {
 
 
 
-        // 系统健康状态
+        // 系统健康状态�?�
         $route->get('/system-health', 'Admin\SystemHealthController@index')->name('admin.system_health.index');
         $route->post('/system-health/update', 'Admin\SystemHealthController@update')->name('admin.system_health.update');
 
@@ -97,8 +97,8 @@ Route::group([
         $route->get('/game/user/onlines', 'Admin\GameDataController@userOnline');
         $route->get('/createid', 'Admin\GameDataController@makeGameid');
         
-        // 客户端日志查询
-        $route->get('/client_log', 'Admin\ClientLogController@index')->defaults('name', '客户日志');
+        // 客户�?日志查�??
+        $route->get('/client_log', 'Admin\ClientLogController@index')->defaults('name', '客户�?日志');
         $route->any('/client_log/query', 'Admin\ClientLogController@query');
         $route->get('/pwa_bonus_log', 'Admin\PwaBonusLogController@index')->defaults('name', 'PWA奖励日志');
 //        $route->any('/game_data/GateBuyRecord','Admin\GameDataController@GateBuyRecord');
@@ -125,7 +125,7 @@ Route::group([
         $route->get('permission/update/{id}', 'Admin\AdministratorController@permissionUpdateView');
         $route->post('permission/update/{id}', 'Admin\AdministratorController@permissionUpdate');
         $route->post('permission/del/{id}', 'Admin\AdministratorController@permissionDel');
-        //管理员
+        //管理员�?�
         $route->get('administrator/list', 'Admin\AdministratorController@administratorList');
         $route->get('administrator/add', 'Admin\AdministratorController@administratorAddView');
         $route->post('administrator/add', 'Admin\AdministratorController@administratorAdd');
@@ -147,7 +147,7 @@ Route::group([
         $route->get('sign-in-reward/update/{dayNumber}', 'Admin\SignInRewardController@updateView');
         $route->post('sign-in-reward/update/{dayNumber}', 'Admin\SignInRewardController@update');
         
-        //举报与反
+        //举报与反�?
         $route->get('/complaint/opinion', 'Admin\ComplaintController@opinionList');
         $route->get('/opinion/email/{id}', 'Admin\ComplaintController@emailView');
         $route->post('/opinion/sendemail/{id}', 'Admin\ComplaintController@sendEmail');
@@ -157,7 +157,7 @@ Route::group([
         $route->post('/accusation/del/{id}', 'Admin\ComplaintController@accusationDel');
         $route->get('/opinion/reply/{id}', 'Admin\ComplaintController@replyAddView');
         $route->post('/opinion/reply/{id}', 'Admin\ComplaintController@replyAdd');
-        //公告管
+        //�?告�?�
         $route->get('/notice/system', 'Admin\NoticeController@systemList');
         $route->any('/system/add', 'Admin\NoticeController@systemAddView');
         $route->post('/system/update_status', 'Admin\NoticeController@updateStatus');
@@ -182,7 +182,7 @@ Route::group([
         $route->post('/punish/update/{id}', 'Admin\NoticeController@punishUpdate');
         $route->post('/punish/excel', 'Admin\NoticeController@excel');
         //兑换管理
-        $route->get('/exchange/hailefen', 'Admin\ExchangeController@hailefen');//嗨了 兑换
+        $route->get('/exchange/hailefen', 'Admin\ExchangeController@hailefen');//嗨了�? 兑换
         $route->get('/exchange/treasure', 'Admin\ExchangeController@treasureList');
         $route->post('/treasure/update/{id}', 'Admin\ExchangeController@treasureUpdate');
         $route->get('/exchange/shop', 'Admin\ExchangeController@shopList');
@@ -201,7 +201,7 @@ Route::group([
         $route->get('/treasure_goods/update/{id}', 'Admin\ExchangeController@treasureGoodsUpdateView');
         $route->post('/treasure_goods/update/{id}', 'Admin\ExchangeController@treasureGoodsUpdate');
 
-        // Superball 活跃活动后台统
+        // Superball 活跃活动后台统�??
         $route->get('/superball/daily', 'Admin\SuperballController@daily')->defaults('name', 'Superball 每日数据');
         $route->get('/superball/user-tasks', 'Admin\SuperballController@userTasks')->defaults('name', 'Superball 用户任务');
         $route->get('/superball/prizes', 'Admin\SuperballController@prizes')->defaults('name', 'Superball 奖励记录');
@@ -225,7 +225,7 @@ Route::group([
         $route->get('/account_cookie/list', 'Admin\AccountCookieController@index')->name('admin.account_cookie.index');
 
 
-        //充值
+        //充值�?�
         $route->get('/recharge/config/cash', 'Admin\WithdrawalController@cashier_channel_config')->name('admin.cashier.config');
         $route->get('/recharge/list/{history?}', 'Admin\RechargeController@rechargeList');
         $route->get('/recharge/rank', 'Admin\RechargeController@rechargeRank');
@@ -243,7 +243,7 @@ Route::group([
 
         /*补单*/
         $route->post('/recharge/supplement/{id}', 'Admin\RechargeController@supplement');
-        // 充值订单退款
+        // 充值�?�单退�?
         $route->post('/recharge/refund/{id}', 'Admin\RechargeController@refund');
         // 模拟上报 FB(仅管理员)
         $route->post('/recharge/fb_report_mock/{id}', 'Admin\RechargeController@fbReportMock');
@@ -257,11 +257,11 @@ Route::group([
         $route->any('/recharge/month_card_channel_edit/{id}', 'Admin\RechargeController@monthCardChannelEdit');
         $route->any('/recharge/month_card_switch/{id}', 'Admin\RechargeController@monthCardSwitch');
         $route->any('/recharge/month_card_channel_switch/{CardID}/{channel}', 'Admin\RechargeController@monthCardChannelSwitch');
-        //充值-玩家充值记
+        //充�?-玩�?�充值�?�
         $route->get('/recharge/record', 'Admin\RechargeController@record');
         $route->any('/recharge/config/{method}', 'Admin\RechargeController@config');
         $route->post('/recharge/switch/{id}', 'Admin\RechargeController@switch_control');
-        // 充值档位修
+        // 充值档位修�?
         $route->get('/recharge/gear_list', 'Admin\RechargeController@gear_list');
         $route->any('/recharge/add', 'Admin\RechargeController@add');
         $route->any('/recharge/update/{id}', 'Admin\RechargeController@update');
@@ -269,16 +269,16 @@ Route::group([
         $route->any('/recharge/channel_switch/{id}', 'Admin\RechargeController@channel_switch');
         $route->get('/recharge/ip_white', 'Admin\RechargeController@ip_white');
         $route->any('/recharge/ip_white_update/{id}', 'Admin\RechargeController@ip_white_update');
-        $route->any('/recharge/gift', 'Admin\RechargeController@gift');// 充值礼
+        $route->any('/recharge/gift', 'Admin\RechargeController@gift');// 充值礼�?
 
-        // 充值礼包配
+        // 充值礼包配�?
         $route->get('/recharge/gift_list', 'Admin\RechargeController@gift_list');
         $route->any('/recharge/gift_add', 'Admin\RechargeController@gift_add');
         $route->any('/recharge/gift_update/{id}', 'Admin\RechargeController@gift_update');
         $route->post('/recharge/gift_delete/{id}', 'Admin\RechargeController@gift_delete');
 
         $route->get('/recharge/methods', 'Admin\RechargeController@methods');
-        // 支付通道成功率(近4日)
+        // �?付通道成功率(�?4日)
         $route->get('/recharge/pay_channel_rate', 'Admin\RechargeController@payChannelRate');
 
 
@@ -357,7 +357,7 @@ Route::group([
 
         $route->any('/web_region_config/edit/{id}', 'Admin\WebRegionConfigController@edit');
 
-        // 主题配置管理
+        // 主�?�配�?管理
         $route->get('/web_theme_config', 'Admin\WebThemeConfigController@index');
         $route->any('/web_theme_config/add', 'Admin\WebThemeConfigController@add');
         $route->any('/web_theme_config/edit/{id}', 'Admin\WebThemeConfigController@edit');
@@ -388,7 +388,7 @@ Route::group([
         $route->get('/card/give', 'Admin\CardController@giveCardView');
         $route->post('/card/give', 'Admin\CardController@giveCard');
         $route->get('/card/give/record', 'Admin\CardController@giveCardRecordView');
-        //金币场
+        //金币场�?�
         $route->get('/gold/recharge', 'Admin\GoldController@rechargeList');
         $route->get('/gold/gold', 'Admin\GoldController@goldList');
         $route->get('/gold/user', 'Admin\GoldController@userList');
@@ -410,7 +410,7 @@ Route::group([
         $route->any('/gold/update_stock_log', 'Admin\GoldController@update_stock_log');
 
 
-        //邮件管
+        //�?件�?�
         $route->get('/mail/list', 'Admin\MailController@mailList');
         $route->get('/mail/add', 'Admin\MailController@mailAddView');
         $route->post('/mail/add', 'Admin\MailController@mailAdd');
@@ -454,11 +454,11 @@ Route::group([
         $route->any('/global/userlist', 'Admin\GlobalController@userlist');
         $route->any('/global/user_new_list', 'Admin\GlobalController@userNewList');
         $route->any('/global/recharge_rank', 'Admin\GlobalController@rechargeRank');
-        //用户列表 修改视图页面
+        //用户列表 �?改�?�图页面
         $route->any('/global/user_update', 'Admin\GlobalController@user_update');
-        //用户列表 封号,解封操
+        //用户列表 封号,解封操�?
         $route->post('/global/ban', 'Admin\GlobalController@ban')->defaults('name', '用户管理-封号 / 解封');
-        //用户列表 radio 筛
+        //用户列表 radio 筛�?
         $route->get('global/rad', 'Admin\GlobalController@rad');
         //用户列表 点ID 跳转页面
         $route->get('global/id_find', 'Admin\GlobalController@id_find');
@@ -467,13 +467,13 @@ Route::group([
 
         $route->any('global/force_stock_mode/{id}', 'Admin\GlobalController@force_stock_mode');
 
-        //用户列表 关联姓名 设 IP
+        //用户列表 关联姓名 设�?? IP
         $route->get('global/join', 'Admin\GlobalController@join');
         //用户列表-用户单控系统
         $route->get('global/dk', 'Admin\GlobalController@dk');
         //用户列表-用户单控系统-详细列表用户
         $route->any('global/dk_userlist', 'Admin\GlobalController@dk_userlist');
-        //用户列表-用户单控系统-详细列表用户修改页面
+        //用户列表-用户单控系统-详细列表用户�?改页�?
         $route->any('global/dk_userlist_edit', 'Admin\GlobalController@dk_userlist_edit');
         // 用户列表-用户单控系统-取消单控
         $route->post('global/cancel_dk', 'Admin\GlobalController@cancel_dk');
@@ -501,7 +501,7 @@ Route::group([
         $route->any('/global/winloser', 'Admin\GlobalController@winloser');
         // 查看战绩
         $route->any('/global/game_record', 'Admin\GlobalController@game_record');
-        //推广员励报表
+        //推广员�?�励报表
         $route->any('/global/reward', 'Admin\GlobalController@reward');
         $route->any('/global/user_source', 'Admin\GlobalController@userSource');
 
@@ -535,15 +535,15 @@ Route::group([
         $route->any('/Protect/free_protect_config_update', 'Admin\ProtectController@free_protect_config_update');
 
 
-        /* 系统设置  IP白名单理*/
+        /* 系统设置  IP白名单�?�理*/
         // 列表
-        $route->get('/IpWhiteList/list', 'Admin\IpWhiteListController@index')->defaults('name', 'IP白名单列');
+        $route->get('/IpWhiteList/list', 'Admin\IpWhiteListController@index')->defaults('name', 'IP白名单列�?');
         $route->get('/login_ip/list', 'Admin\IpWhiteListController@login_ip');
         $route->get('/IpWhiteList/add', 'Admin\IpWhiteListController@add_view');
-        $route->post('/IpWhiteList/add', 'Admin\IpWhiteListController@add')->defaults('name', 'IP白名单添加提');
+        $route->post('/IpWhiteList/add', 'Admin\IpWhiteListController@add')->defaults('name', 'IP白名单添加提�?');
         $route->get('/IpWhiteList/update/{id}', 'Admin\IpWhiteListController@update_view');
-        $route->post('/IpWhiteList/update', 'Admin\IpWhiteListController@update')->defaults('name', 'IP白名单修改提');
-        $route->post('/IpWhiteList/del/{id}', 'Admin\IpWhiteListController@del')->defaults('name', 'IP白名单删');
+        $route->post('/IpWhiteList/update', 'Admin\IpWhiteListController@update')->defaults('name', 'IP白名单修改提�?');
+        $route->post('/IpWhiteList/del/{id}', 'Admin\IpWhiteListController@del')->defaults('name', 'IP白名单删�?');
 
         //日志
         $route->get('/admin_log/list', 'Admin\AdminLogController@index');
@@ -595,7 +595,7 @@ Route::group([
         $route->get('/withdraw/names', 'Admin\WithdrawalController@nameStatics');
 
 
-        // 人池配置
+        // �?人池配置
         $route->any('/recharge_control_config/index', 'Admin\RechargeControlConfigController@index');
         $route->any('/recharge_control_config/add', 'Admin\RechargeControlConfigController@add');
         $route->any('/recharge_control_config/update/{id}', 'Admin\RechargeControlConfigController@update');
@@ -611,7 +611,7 @@ Route::group([
 
         /*单控操作记录*/
         $route->any('/control/record', 'Admin\ControlRecordController@index');
-        //  单控池监
+        //  单控池监�?
         $route->any('/control/monitor', 'Admin\ControlRecordController@monitor');
         $route->any('/group_control/record', 'Admin\GroupControlRecordController@record');
         $route->get('/group_control/show_config/{id}', 'Admin\GroupControlRecordController@show_config');
@@ -636,7 +636,7 @@ Route::group([
         $route->any('/group_control/LuckyGemstoneMul', 'Admin\GroupControlRecordController@LuckyGemstoneMul');
         $route->any('/group_control/LuckyGemstoneMul_update', 'Admin\GroupControlRecordController@LuckyGemstoneMul_update');
 
-        /*用户标*/
+        /*用户标�??*/
         $route->get('/user_tags/index', 'Admin\UserTagsController@index');
 
         // 库存变化曲线
@@ -644,15 +644,15 @@ Route::group([
         $route->get('/stock/room_list', 'Admin\StockController@roomList');
 
 
-        /*数据统新后台*/
+        /*数据统�?�新后台*/
         // 用户行为 -- 埋点数据
         $route->get('/burying_point/index', 'Admin\BuryingPointController@index');
         $route->get('/burying_point/weight', 'Admin\BuryingPointController@weight');
         $route->post('/burying_point/update/{id}', 'Admin\BuryingPointController@update');
 
-        // 玩家输赢排行榜
+        // 玩�?�输赢排行�??
 //        $route->get('/data_analy/score', 'Admin\DataAnalysisController@data_analy');
-        // 数据统计管
+        // 数据统�?��?�
 //        $route->get('/game/room', 'Admin\GamesController@room');
 
 
@@ -674,13 +674,13 @@ Route::group([
         $route->any('/chart/dashboard', 'Admin\ChartController@dashboard');
 
 
-        // 短信通道切换开关
+        // �?信通道切换开�?
         $route->any('/sys_sms_config/index', 'Admin\SysSmsConfigController@index');
         $route->any('/sys_sms_config/update_status/{id}', 'Admin\SysSmsConfigController@updateStatus');
         $route->any('/sys_sms_config/remarks/{id}', 'Admin\SysSmsConfigController@Remarks');
         $route->any('/sys_sms_config/update/{id}', 'Admin\SysSmsConfigController@Update');
 
-        // 裂变需
+        // 裂变需�?
         $route->any('/extension/verify', 'Admin\ExtensionController@verify');
         $route->any('/extension/verify_update/{id}', 'Admin\ExtensionController@verify_update');
         $route->any('/extension/register_config', 'Admin\ExtensionController@register_config');
@@ -696,12 +696,12 @@ Route::group([
         $route->any('/extension/gamecount_config_add', 'Admin\ExtensionController@gameCountConfig_add');
         $route->any('/extension/gamecount_config_update/{id}', 'Admin\ExtensionController@gameCountConfig_update');
         $route->any('/extension/gamecount_limit', 'Admin\ExtensionController@gameCountLimit');
-        // 彩金自动审核开关
+        // 彩金�?动�?�核开�?
         $route->any('/extension/auto_verify', 'Admin\ExtensionController@autoVerify');
         $route->any('/extension/recharge_rate', 'Admin\ExtensionController@recharge_rate');
 
 
-        // 新代理系统管理路由
+        // 新代理系统�?�理�?�?
         $route->any('/extension_new/verify', 'Admin\ExtensionNewController@verify')->name('admin.extension_new.verify');
         $route->any('/extension_new/verify_update/{id}', 'Admin\ExtensionNewController@verify_update')->name('admin.extension_new.verify_update');
         $route->any('/extension_new/register_config', 'Admin\ExtensionNewController@register_config')->name('admin.extension_new.register_config');
@@ -717,10 +717,10 @@ Route::group([
         $route->any('/extension_new/gamecount_config_add', 'Admin\ExtensionNewController@gameCountConfig_add')->name('admin.extension_new.gamecount_config_add');
         $route->any('/extension_new/gamecount_config_update/{id}', 'Admin\ExtensionNewController@gameCountConfig_update')->name('admin.extension_new.gamecount_config_update');
         $route->any('/extension_new/gamecount_limit', 'Admin\ExtensionNewController@gameCountLimit')->name('admin.extension_new.gamecount_limit');
-        // 彩金自动审核开关
+        // 彩金�?动�?�核开�?
         $route->any('/extension_new/auto_verify', 'Admin\ExtensionNewController@autoVerify')->name('admin.extension_new.auto_verify');
         $route->any('/extension_new/recharge_rate', 'Admin\ExtensionNewController@recharge_rate')->name('admin.extension_new.recharge_rate');
-        // 绑定关系查
+        // 绑定关系查�??
         $route->any('/extension_new/daily_binding', 'Admin\ExtensionNewController@dailyBinding')->name('admin.extension_new.daily_binding');
         $route->any('/extension_new/reward', 'Admin\ExtensionNewController@reward')->name('admin.extension_new.reward');
         $route->any('/extension_new/bind_list', 'Admin\ExtensionNewController@bind_list')->name('admin.extension_new.bind_list');
@@ -729,11 +729,11 @@ Route::group([
 
         $route->any('/version/del_version', 'Admin\VersionController@delVersion');
 
-        // 彩金池操
+        // 彩金池操�?
         $route->any('/winnings/operate', 'Admin\WinningsController@operate');
         $route->any('/winnings/update/{id}', 'Admin\WinningsController@update');
 
-        // 验证码查看+手机号手动绑定
+        // 验证码查�?+手机号手动绑�?
         $route->any('/code/query', 'Admin\CodeController@query');
         $route->any('/code/bind_phone/{id}', 'Admin\CodeController@bind_phone');
 
@@ -751,7 +751,7 @@ Route::group([
         $route->any('/clearBomb/config', 'Admin\ClearBombController@operate');
         $route->any('/clearBomb/config_update/{id}', 'Admin\ClearBombController@config_update');
 
-        // 拉霸世界 控制参数配置
+        // 拉霸世界�? 控制参数配置
         $route->any('/slots_world_cup/config', 'Admin\SlotsWorldCupController@operate');
         $route->any('/slots_world_cup/config_update/{id}', 'Admin\SlotsWorldCupController@config_update');
 
@@ -772,11 +772,11 @@ Route::group([
         $route->any('/athena/config', 'Admin\AthenaController@operate');
         $route->any('/athena/config_update/{id}', 'Admin\AthenaController@config_update');
 
-        // 开关
+        // 开关�?�
         $route->any('/switches', 'Admin\SwitchesController@index');
         $route->any('/switches/set_status/{id}', 'Admin\SwitchesController@setStatus');
 
-        // 黑名
+        // 黑名�?
         $route->any('/blacklist', 'Admin\BlacklistController@index');
         $route->any('/blacklist/config/{id}', 'Admin\BlacklistController@config');
         $route->any('/blacklist/add/{UserID}', 'Admin\BlacklistController@add');
@@ -792,10 +792,12 @@ Route::group([
 
         $route->any('/game_data/rank','Admin\GameDataController@gameRankList');
 
-        // 游戏输赢排行榜
-        $route->get('/game_data/winlose_rank', 'Admin\GameWinLoseRankController@index')->defaults('name', '游戏输赢排行榜');
+        // 游戏输赢排�?��??
+        $route->get('/game_data/winlose_rank', 'Admin\GameWinLoseRankController@index')->defaults('name', '游戏输赢排�?��??');
 
-        $route->any('/game_data/participation_statistics', 'Admin\GameDataController@gameParticipationStatistics')->defaults('name', '游戏参与情况统计');
+        $route->get('/game_enter_log/statistics', 'Admin\GameEnterLogController@statistics')->defaults('name', '进游戏时长统计');
+
+        $route->any('/game_data/participation_statistics', 'Admin\GameDataController@gameParticipationStatistics')->defaults('name', '游戏参与情况统�??');
 
 
         // PG游戏参数配置
@@ -803,7 +805,7 @@ Route::group([
         $route->any('/common-config', 'Admin\CommonConfigController@index')->name('admin.common-config');
         $route->any('/common-config/update', 'Admin\CommonConfigController@update')->name('admin.common-config.update');
 
-        // 1234 权重配置 & 点击统
+        // 1234 权重配置 & 点击统�??
         $route->any('/weight-config', 'Admin\WeightConfigController@index')->name('admin.weight-config');
         $route->post('/weight-config/update', 'Admin\WeightConfigController@update')->name('admin.weight-config.update');
         $route->post('/weight-config/reset-stats', 'Admin\WeightConfigController@resetStats')->name('admin.weight-config.reset-stats');
@@ -812,7 +814,7 @@ Route::group([
         $route->any('/pg-game-config/update', 'Admin\PGGameConfigController@update')->name('admin.pg-game-config.update');
         $route->post('/pg-game-config/copy_all', 'Admin\PGGameConfigController@copyAll')->name('admin.pg-game-config.copy_all');
         
-        // 个控回报配置
+        // �?控回报配�?
         $route->any('/game-some-config', 'Admin\GameSomeConfigController@index')->name('admin.game-some-config');
         $route->post('/game-some-config/update', 'Admin\GameSomeConfigController@update')->name('admin.game-some-config.update');
 
@@ -836,17 +838,17 @@ Route::group([
         $route->any('/game-number-mapping/update/{id}', 'Admin\GameNumberMappingController@update')->name('admin.game-number-mapping.update');
         $route->post('/game-number-mapping/delete/{id}', 'Admin\GameNumberMappingController@delete')->name('admin.game-number-mapping.delete');
         
-        // 节假日大转盘配置
+        // 节假日大�?盘配�?
         $route->any('/holiday-wheel', 'Admin\HolidayWheelController@index')->name('admin.holiday-wheel');
         $route->post('/holiday-wheel/update', 'Admin\HolidayWheelController@update')->name('admin.holiday-wheel.update');
         $route->get('/holiday-wheel/history', 'Admin\HolidayWheelController@history')->name('admin.holiday-wheel.history');
         
-        // 圣诞大转盘配
+        // 圣诞大转盘配�?
         $route->any('/christmas-wheel', 'Admin\ChristmasWheelController@index')->name('admin.christmas-wheel');
         $route->post('/christmas-wheel/update', 'Admin\ChristmasWheelController@update')->name('admin.christmas-wheel.update');
         $route->get('/christmas-wheel/history', 'Admin\ChristmasWheelController@history')->name('admin.christmas-wheel.history');
         
-        // Bonus购买回报配置
+        // Bonus�?买回报配�?
         $route->any('/game-buy-bonus-config', 'Admin\GameBuyBonusConfigController@index')->name('admin.game-buy-bonus-config');
         $route->post('/game-buy-bonus-config/update', 'Admin\GameBuyBonusConfigController@update')->name('admin.game-buy-bonus-config.update');
         // PG游戏参数配置
@@ -876,15 +878,15 @@ Route::group([
     $route->get('admin/bx_nb', 'Admin\IndexController@index')->middleware(['check.role']);
     $route->get('admin/mex', 'Admin\IndexController@index')->middleware(['check.role']);
 //    $route->get('/', 'Admin\IndexController@index')->middleware(['check.role']);
-    //403无访问权限
+    //403无�?�问权限
     $route->get('403', 'Admin\IndexController@noPermission');
-    //修改个人信息
+    //�?改个人信�?
     $route->get('edit/info/{id}', 'Admin\AdministratorController@editInfoView');
     $route->post('edit/info/{id}', 'Admin\AdministratorController@editInfo');
     //图片上传
     $route->post('admin/upload', 'Admin\IndexController@upload');
     $route->post('admin/wangeditor/upload', 'Admin\IndexController@wangeditorUpload');
-    //退出登
+    //退出登�?
     $route->get('logout', 'Admin\AdministratorController@logout');
 });
 Route::group([
@@ -901,15 +903,15 @@ Route::group([
 
 });
 
-// 图标库(开发者用
+// 图标库(开发者用�?
 Route::get('icon', function () {
     return view('admin.icon');
 });
-// 常用后台模板(开发者用
+// 常用后台模板(开发者用�?
 Route::get('tmp', function () {
     return view('admin.tmp');
 });
-// 安装向导
+// 安�?�向�?
 //Route::get('install', 'InstallController@index')->name('installView');
 //Route::post('install/1', 'InstallController@setEnviroment')->name('setEnviroment');
 //Route::post('install/2', 'InstallController@startInstall')->name('startInstall');