瀏覽代碼

feat:玩家管理功能

aiden 4 月之前
父節點
當前提交
6abddded2e
共有 5 個文件被更改,包括 634 次插入2 次删除
  1. 358 0
      app/controller/Player.php
  2. 243 0
      app/model/MerchantPlayerModel.php
  3. 6 2
      config/menu.php
  4. 15 0
      config/permission.php
  5. 12 0
      route/app.php

+ 358 - 0
app/controller/Player.php

@@ -0,0 +1,358 @@
+<?php
+declare (strict_types = 1);
+
+namespace app\controller;
+
+use app\BaseController;
+use app\model\MerchantPlayerModel;
+use think\facade\Request;
+
+class Player extends BaseController
+{
+    /**
+     * 获取玩家列表
+     */
+    public function list()
+    {
+        $loginInfo = checkUserLogin();
+        if (!$loginInfo) {
+            return json_error([], '请先登录');
+        }
+        
+        if (!checkPermission($loginInfo, 'Player', 'list')) {
+            return json_error([], '没有查看玩家列表的权限');
+        }
+        
+        // 获取查询参数
+        $page = Request::get('page', 1, 'intval');
+        $limit = Request::get('limit', 10, 'intval');
+        
+        // 过滤条件
+        $filters = [
+            'nickname' => Request::get('nickname', '', 'trim'),
+            'player_id' => Request::get('player_id', 0, 'intval'),
+            'status' => Request::get('status', ''),
+            'adjust_status' => Request::get('adjust_status', ''),
+            'login_ip' => Request::get('login_ip', '', 'trim'),
+            'reg_ip' => Request::get('reg_ip', '', 'trim'),
+            'balance_min' => Request::get('balance_min', 0, 'floatval'),
+            'balance_max' => Request::get('balance_max', 0, 'floatval'),
+            'today_win_min' => Request::get('today_win_min', 0, 'floatval'),
+            'today_win_max' => Request::get('today_win_max', 0, 'floatval'),
+            'history_win_min' => Request::get('history_win_min', 0, 'floatval'),
+            'history_win_max' => Request::get('history_win_max', 0, 'floatval'),
+            'login_time_start' => Request::get('login_time_start', '', 'trim'),
+            'login_time_end' => Request::get('login_time_end', '', 'trim'),
+            'create_time_start' => Request::get('create_time_start', '', 'trim'),
+            'create_time_end' => Request::get('create_time_end', '', 'trim'),
+            'order' => Request::get('order', 'player_id', 'trim'),
+            'sort' => Request::get('sort', 'desc', 'trim'),
+        ];
+        
+        try {
+            // 获取玩家列表
+            $result = MerchantPlayerModel::getPlayerListByMerchant($loginInfo['merchant_id'], $page, $limit, $filters);
+            
+            // 处理列表数据
+            foreach ($result['list'] as &$player) {
+                $player['status_text'] = MerchantPlayerModel::getStatusText($player['status']);
+                $player['adjust_status_text'] = MerchantPlayerModel::getAdjustStatusText($player['adjust_status']);
+                $player['login_time_text'] = $player['login_time'] ? date('Y-m-d H:i:s', $player['login_time']) : '未登录';
+                $player['create_time_text'] = date('Y-m-d H:i:s', $player['create_time']);
+                $player['update_time_text'] = date('Y-m-d H:i:s', $player['update_time']);
+            }
+            
+            return json_success($result, '获取成功');
+        } catch (\Exception $e) {
+            return json_error([], '获取玩家列表失败:' . $e->getMessage());
+        }
+    }
+    
+    /**
+     * 获取玩家详情
+     */
+    public function detail()
+    {
+        $loginInfo = checkUserLogin();
+        if (!$loginInfo) {
+            return json_error([], '请先登录');
+        }
+        
+        if (!checkPermission($loginInfo, 'Player', 'detail')) {
+            return json_error([], '没有查看玩家详情的权限');
+        }
+        
+        $playerId = Request::get('player_id', 0, 'intval');
+        if (!$playerId) {
+            return json_error([], '玩家ID不能为空');
+        }
+        
+        try {
+            $player = MerchantPlayerModel::getPlayerDetail($playerId, $loginInfo['merchant_id']);
+            if (!$player) {
+                return json_error([], '玩家不存在');
+            }
+            
+            // 添加状态文本
+            $player['status_text'] = MerchantPlayerModel::getStatusText($player['status']);
+            $player['adjust_status_text'] = MerchantPlayerModel::getAdjustStatusText($player['adjust_status']);
+            $player['login_time_text'] = $player['login_time'] ? date('Y-m-d H:i:s', $player['login_time']) : '未登录';
+            $player['create_time_text'] = date('Y-m-d H:i:s', $player['create_time']);
+            $player['update_time_text'] = date('Y-m-d H:i:s', $player['update_time']);
+            
+            return json_success($player, '获取成功');
+        } catch (\Exception $e) {
+            return json_error([], '获取玩家详情失败:' . $e->getMessage());
+        }
+    }
+    
+    /**
+     * 更新玩家状态
+     */
+    public function updateStatus()
+    {
+        $loginInfo = checkUserLogin();
+        if (!$loginInfo) {
+            return json_error([], '请先登录');
+        }
+        
+        if (!checkPermission($loginInfo, 'Player', 'updateStatus')) {
+            return json_error([], '没有更新玩家状态的权限');
+        }
+        
+        $playerId = Request::post('player_id', 0, 'intval');
+        $status = Request::post('status', 0, 'intval');
+        
+        if (!$playerId) {
+            return json_error([], '玩家ID不能为空');
+        }
+        
+        if (!in_array($status, [MerchantPlayerModel::STATUS_NORMAL, MerchantPlayerModel::STATUS_FROZEN])) {
+            return json_error([], '状态值无效');
+        }
+        
+        try {
+            $result = MerchantPlayerModel::updatePlayerStatus($playerId, $loginInfo['merchant_id'], $status);
+            if ($result) {
+                return json_success([], '状态更新成功');
+            } else {
+                return json_error([], '状态更新失败');
+            }
+        } catch (\Exception $e) {
+            return json_error([], '更新玩家状态失败:' . $e->getMessage());
+        }
+    }
+    
+    /**
+     * 更新玩家调控状态
+     */
+    public function updateAdjustStatus()
+    {
+        $loginInfo = checkUserLogin();
+        if (!$loginInfo) {
+            return json_error([], '请先登录');
+        }
+        
+        if (!checkPermission($loginInfo, 'Player', 'updateAdjustStatus')) {
+            return json_error([], '没有更新玩家调控状态的权限');
+        }
+        
+        $playerId = Request::post('player_id', 0, 'intval');
+        $adjustStatus = Request::post('adjust_status', 0, 'intval');
+        
+        if (!$playerId) {
+            return json_error([], '玩家ID不能为空');
+        }
+        
+        if (!in_array($adjustStatus, [
+            MerchantPlayerModel::ADJUST_STATUS_NORMAL,
+            MerchantPlayerModel::ADJUST_STATUS_WIN,
+            MerchantPlayerModel::ADJUST_STATUS_LOSE
+        ])) {
+            return json_error([], '调控状态值无效');
+        }
+        
+        try {
+            $result = MerchantPlayerModel::updatePlayerAdjustStatus($playerId, $loginInfo['merchant_id'], $adjustStatus);
+            if ($result) {
+                return json_success([], '调控状态更新成功');
+            } else {
+                return json_error([], '调控状态更新失败');
+            }
+        } catch (\Exception $e) {
+            return json_error([], '更新玩家调控状态失败:' . $e->getMessage());
+        }
+    }
+    
+    /**
+     * 获取玩家统计信息
+     */
+    public function statistics()
+    {
+        $loginInfo = checkUserLogin();
+        if (!$loginInfo) {
+            return json_error([], '请先登录');
+        }
+        
+        if (!checkPermission($loginInfo, 'Player', 'statistics')) {
+            return json_error([], '没有查看玩家统计的权限');
+        }
+        
+        try {
+            $statistics = MerchantPlayerModel::getPlayerStatistics($loginInfo['merchant_id']);
+            return json_success($statistics, '获取成功');
+        } catch (\Exception $e) {
+            return json_error([], '获取玩家统计失败:' . $e->getMessage());
+        }
+    }
+    
+    /**
+     * 批量更新玩家状态
+     */
+    public function batchUpdateStatus()
+    {
+        $loginInfo = checkUserLogin();
+        if (!$loginInfo) {
+            return json_error([], '请先登录');
+        }
+        
+        if (!checkPermission($loginInfo, 'Player', 'batchUpdate')) {
+            return json_error([], '没有批量更新玩家状态的权限');
+        }
+        
+        $playerIds = Request::post('player_ids', []);
+        $status = Request::post('status', 0, 'intval');
+        
+        if (empty($playerIds) || !is_array($playerIds)) {
+            return json_error([], '请选择要更新的玩家');
+        }
+        
+        if (!in_array($status, [MerchantPlayerModel::STATUS_NORMAL, MerchantPlayerModel::STATUS_FROZEN])) {
+            return json_error([], '状态值无效');
+        }
+        
+        try {
+            $result = MerchantPlayerModel::batchUpdateStatus($playerIds, $loginInfo['merchant_id'], $status);
+            if ($result > 0) {
+                return json_success(['updated' => $result], '批量更新成功');
+            } else {
+                return json_error([], '批量更新失败');
+            }
+        } catch (\Exception $e) {
+            return json_error([], '批量更新玩家状态失败:' . $e->getMessage());
+        }
+    }
+    
+    /**
+     * 批量更新玩家调控状态
+     */
+    public function batchUpdateAdjustStatus()
+    {
+        $loginInfo = checkUserLogin();
+        if (!$loginInfo) {
+            return json_error([], '请先登录');
+        }
+        
+        if (!checkPermission($loginInfo, 'Player', 'batchUpdate')) {
+            return json_error([], '没有批量更新玩家调控状态的权限');
+        }
+        
+        $playerIds = Request::post('player_ids', []);
+        $adjustStatus = Request::post('adjust_status', 0, 'intval');
+        
+        if (empty($playerIds) || !is_array($playerIds)) {
+            return json_error([], '请选择要更新的玩家');
+        }
+        
+        if (!in_array($adjustStatus, [
+            MerchantPlayerModel::ADJUST_STATUS_NORMAL,
+            MerchantPlayerModel::ADJUST_STATUS_WIN,
+            MerchantPlayerModel::ADJUST_STATUS_LOSE
+        ])) {
+            return json_error([], '调控状态值无效');
+        }
+        
+        try {
+            $result = MerchantPlayerModel::batchUpdateAdjustStatus($playerIds, $loginInfo['merchant_id'], $adjustStatus);
+            if ($result > 0) {
+                return json_success(['updated' => $result], '批量更新成功');
+            } else {
+                return json_error([], '批量更新失败');
+            }
+        } catch (\Exception $e) {
+            return json_error([], '批量更新玩家调控状态失败:' . $e->getMessage());
+        }
+    }
+    
+    /**
+     * 导出玩家列表
+     */
+    public function export()
+    {
+        $loginInfo = checkUserLogin();
+        if (!$loginInfo) {
+            return json_error([], '请先登录');
+        }
+        
+        if (!checkPermission($loginInfo, 'Player', 'export')) {
+            return json_error([], '没有导出玩家列表的权限');
+        }
+        
+        // 获取所有过滤条件
+        $filters = [
+            'nickname' => Request::get('nickname', '', 'trim'),
+            'player_id' => Request::get('player_id', 0, 'intval'),
+            'status' => Request::get('status', ''),
+            'adjust_status' => Request::get('adjust_status', ''),
+            'login_ip' => Request::get('login_ip', '', 'trim'),
+            'reg_ip' => Request::get('reg_ip', '', 'trim'),
+            'balance_min' => Request::get('balance_min', 0, 'floatval'),
+            'balance_max' => Request::get('balance_max', 0, 'floatval'),
+            'today_win_min' => Request::get('today_win_min', 0, 'floatval'),
+            'today_win_max' => Request::get('today_win_max', 0, 'floatval'),
+            'history_win_min' => Request::get('history_win_min', 0, 'floatval'),
+            'history_win_max' => Request::get('history_win_max', 0, 'floatval'),
+            'login_time_start' => Request::get('login_time_start', '', 'trim'),
+            'login_time_end' => Request::get('login_time_end', '', 'trim'),
+            'create_time_start' => Request::get('create_time_start', '', 'trim'),
+            'create_time_end' => Request::get('create_time_end', '', 'trim'),
+        ];
+        
+        try {
+            // 获取所有数据
+            $result = MerchantPlayerModel::getPlayerListByMerchant($loginInfo['merchant_id'], 1, 100000, $filters);
+            
+            // 生成CSV数据
+            $csvData = "玩家ID,昵称,注册IP,登录IP,余额,今日输赢,历史输赢,今日下注,今日登录次数,历史登录次数,状态,调控状态,最后登录时间,注册时间\n";
+            
+            foreach ($result['list'] as $player) {
+                $csvData .= sprintf(
+                    "%d,%s,%s,%s,%.4f,%.4f,%.4f,%.4f,%d,%d,%s,%s,%s,%s\n",
+                    $player['player_id'],
+                    $player['nickname'],
+                    $player['reg_ip'],
+                    $player['login_ip'],
+                    $player['balance'],
+                    $player['today_win_amount'],
+                    $player['history_win_amount'],
+                    $player['today_bet_amount'],
+                    $player['today_login_count'],
+                    $player['history_login_count'],
+                    MerchantPlayerModel::getStatusText($player['status']),
+                    MerchantPlayerModel::getAdjustStatusText($player['adjust_status']),
+                    $player['login_time'] ? date('Y-m-d H:i:s', $player['login_time']) : '未登录',
+                    date('Y-m-d H:i:s', $player['create_time'])
+                );
+            }
+            
+            // 返回CSV数据
+            return response($csvData)
+                ->header('Content-Type', 'text/csv; charset=utf-8')
+                ->header('Content-Disposition', 'attachment; filename="players_' . date('YmdHis') . '.csv"')
+                ->header('Cache-Control', 'no-cache, must-revalidate');
+                
+        } catch (\Exception $e) {
+            return json_error([], '导出玩家列表失败:' . $e->getMessage());
+        }
+    }
+}

+ 243 - 0
app/model/MerchantPlayerModel.php

@@ -0,0 +1,243 @@
+<?php
+declare (strict_types = 1);
+
+namespace app\model;
+
+use think\Model;
+
+/**
+ * 商户玩家模型
+ */
+class MerchantPlayerModel extends Model
+{
+    // 设置表名
+    protected $name = 'merchant_player';
+
+    // 设置主键
+    protected $pk = 'player_id';
+
+    // 设置自动时间戳
+    protected $autoWriteTimestamp = 'int';
+
+    // 设置字段类型
+    protected $type = [
+        'player_id' => 'int',
+        'nickname' => 'string',
+        'merchant_id' => 'int',
+        'reg_ip' => 'string',
+        'login_ip' => 'string',
+        'today_win_amount' => 'float',
+        'history_win_amount' => 'float',
+        'today_bet_amount' => 'float',
+        'balance' => 'float',
+        'today_login_count' => 'int',
+        'history_login_count' => 'int',
+        'adjust_status' => 'int',
+        'status' => 'int',
+        'login_time' => 'int',
+        'create_time' => 'int',
+        'update_time' => 'int',
+    ];
+
+    // 状态常量
+    const STATUS_NORMAL = 0;    // 正常
+    const STATUS_FROZEN = 1;    // 冻结
+    const STATUS_DELETED = 2;   // 删除
+
+    // 调控状态常量
+    const ADJUST_STATUS_NORMAL = 0;     // 正常
+    const ADJUST_STATUS_WIN = 1;        // 放水(赢)
+    const ADJUST_STATUS_LOSE = 2;       // 收割(输)
+
+    /**
+     * 获取状态文本
+     */
+    public static function getStatusText($status): string
+    {
+        $statusMap = [
+            self::STATUS_NORMAL => '正常',
+            self::STATUS_FROZEN => '冻结',
+            self::STATUS_DELETED => '删除',
+        ];
+        return $statusMap[$status] ?? '未知';
+    }
+
+    /**
+     * 获取调控状态文本
+     */
+    public static function getAdjustStatusText($adjustStatus): string
+    {
+        $adjustStatusMap = [
+            self::ADJUST_STATUS_NORMAL => '正常',
+            self::ADJUST_STATUS_WIN => '放水',
+            self::ADJUST_STATUS_LOSE => '收割',
+        ];
+        return $adjustStatusMap[$adjustStatus] ?? '未知';
+    }
+
+    /**
+     * 根据商户ID获取玩家列表
+     */
+    public static function getPlayerListByMerchant($merchantId, $page = 1, $limit = 10, $filters = [])
+    {
+        $query = self::where('merchant_id', $merchantId);
+
+        // 应用过滤条件
+        if (!empty($filters['nickname'])) {
+            $query->where('nickname', 'like', '%' . $filters['nickname'] . '%');
+        }
+
+        if (!empty($filters['player_id'])) {
+            $query->where('player_id', $filters['player_id']);
+        }
+
+        if (isset($filters['status']) && $filters['status'] !== '') {
+            $query->where('status', $filters['status']);
+        }
+
+        if (isset($filters['adjust_status']) && $filters['adjust_status'] !== '') {
+            $query->where('adjust_status', $filters['adjust_status']);
+        }
+
+        if (!empty($filters['login_ip'])) {
+            $query->where('login_ip', 'like', '%' . $filters['login_ip'] . '%');
+        }
+
+        if (!empty($filters['reg_ip'])) {
+            $query->where('reg_ip', 'like', '%' . $filters['reg_ip'] . '%');
+        }
+
+        // 余额范围
+        if (!empty($filters['balance_min'])) {
+            $query->where('balance', '>=', $filters['balance_min']);
+        }
+        if (!empty($filters['balance_max'])) {
+            $query->where('balance', '<=', $filters['balance_max']);
+        }
+
+        // 今日输赢范围
+        if (!empty($filters['today_win_min'])) {
+            $query->where('today_win_amount', '>=', $filters['today_win_min']);
+        }
+        if (!empty($filters['today_win_max'])) {
+            $query->where('today_win_amount', '<=', $filters['today_win_max']);
+        }
+
+        // 历史输赢范围
+        if (!empty($filters['history_win_min'])) {
+            $query->where('history_win_amount', '>=', $filters['history_win_min']);
+        }
+        if (!empty($filters['history_win_max'])) {
+            $query->where('history_win_amount', '<=', $filters['history_win_max']);
+        }
+
+        // 登录时间范围
+        if (!empty($filters['login_time_start'])) {
+            $query->where('login_time', '>=', strtotime($filters['login_time_start']));
+        }
+        if (!empty($filters['login_time_end'])) {
+            $query->where('login_time', '<=', strtotime($filters['login_time_end']));
+        }
+
+        // 创建时间范围
+        if (!empty($filters['create_time_start'])) {
+            $query->where('create_time', '>=', strtotime($filters['create_time_start']));
+        }
+        if (!empty($filters['create_time_end'])) {
+            $query->where('create_time', '<=', strtotime($filters['create_time_end']));
+        }
+
+        // 排序
+        $order = $filters['order'] ?? 'player_id';
+        $sort = $filters['sort'] ?? 'desc';
+        $query->order($order, $sort);
+
+        // 获取总数
+        $total = $query->count();
+
+        // 获取列表
+        $list = $query->page($page, $limit)->select();
+
+        return [
+            'list' => $list,
+            'total' => $total,
+            'page' => $page,
+            'limit' => $limit
+        ];
+    }
+
+    /**
+     * 获取玩家详情
+     */
+    public static function getPlayerDetail($playerId, $merchantId)
+    {
+        return self::where('player_id', $playerId)
+            ->where('merchant_id', $merchantId)
+            ->find();
+    }
+
+    /**
+     * 更新玩家状态
+     */
+    public static function updatePlayerStatus($playerId, $merchantId, $status)
+    {
+        return self::where('player_id', $playerId)
+            ->where('merchant_id', $merchantId)
+            ->update(['status' => $status]);
+    }
+
+    /**
+     * 更新玩家调控状态
+     */
+    public static function updatePlayerAdjustStatus($playerId, $merchantId, $adjustStatus)
+    {
+        return self::where('player_id', $playerId)
+            ->where('merchant_id', $merchantId)
+            ->update(['adjust_status' => $adjustStatus]);
+    }
+
+    /**
+     * 获取玩家统计信息
+     */
+    public static function getPlayerStatistics($merchantId)
+    {
+        $today = strtotime(date('Y-m-d'));
+
+        return [
+            'total_players' => self::where('merchant_id', $merchantId)->count(),
+            'active_players' => self::where('merchant_id', $merchantId)
+                ->where('status', self::STATUS_NORMAL)
+                ->count(),
+            'today_new_players' => self::where('merchant_id', $merchantId)
+                ->where('create_time', '>=', $today)
+                ->count(),
+            'today_login_players' => self::where('merchant_id', $merchantId)
+                ->where('login_time', '>=', $today)
+                ->count(),
+            'total_balance' => self::where('merchant_id', $merchantId)->sum('balance'),
+            'today_bet_amount' => self::where('merchant_id', $merchantId)->sum('today_bet_amount'),
+            'today_win_amount' => self::where('merchant_id', $merchantId)->sum('today_win_amount'),
+            'history_win_amount' => self::where('merchant_id', $merchantId)->sum('history_win_amount'),
+        ];
+    }
+
+    /**
+     * 批量更新玩家状态
+     */
+    public static function batchUpdateStatus($playerIds, $merchantId, $status)
+    {
+        return self::where('merchant_id', $merchantId)
+            ->whereIn('player_id', $playerIds)
+            ->update(['status' => $status]);
+    }
+
+    /**
+     * 批量更新玩家调控状态
+     */
+    public static function batchUpdateAdjustStatus($playerIds, $merchantId, $adjustStatus)
+    {
+        return self::where('merchant_id', $merchantId)
+            ->whereIn('player_id', $playerIds)
+            ->update(['adjust_status' => $adjustStatus]);
+    }
+}

+ 6 - 2
config/menu.php

@@ -17,8 +17,8 @@ return [
                     'id' => 11,
                     'title' => '玩家列表',
                     'icon' => 'layui-icon-user',
-                    'controller' => 'User',
-                    'url' => '/user/list',
+                    'controller' => 'Player',
+                    'url' => '/view/player/list.html',
                     'sort' => 1,
                     'level' => 2,
                     'parent_id' => 1,
@@ -109,6 +109,10 @@ return [
             'name' => '用户管理',
             'actions' => ['list', 'create', 'update', 'delete', 'detail']
         ],
+        'Player' => [
+            'name' => '玩家管理',
+            'actions' => ['list', 'detail', 'updateStatus', 'updateAdjustStatus', 'statistics', 'batchUpdate', 'export']
+        ],
         'UserRole' => [
             'name' => '角色管理',
             'actions' => ['list', 'create', 'update', 'delete', 'detail', 'permissions']

+ 15 - 0
config/permission.php

@@ -16,6 +16,18 @@ return [
                 'detail' => '查看用户详情'
             ]
         ],
+        'Player' => [
+            'name' => '玩家管理',
+            'actions' => [
+                'list' => '查看玩家列表',
+                'detail' => '查看玩家详情',
+                'updateStatus' => '更新玩家状态',
+                'updateAdjustStatus' => '更新玩家调控状态',
+                'statistics' => '查看玩家统计',
+                'batchUpdate' => '批量更新玩家',
+                'export' => '导出玩家数据'
+            ]
+        ],
         'UserRole' => [
             'name' => '角色管理',
             'actions' => [
@@ -83,6 +95,7 @@ return [
             'description' => '只有查看权限',
             'permissions' => [
                 'User' => ['list', 'detail'],
+                'Player' => ['list', 'detail', 'statistics'],
                 'UserRole' => ['list', 'detail'],
                 'Merchant' => ['list', 'detail'],
                 'Statistics' => ['user', 'merchant', 'daily', 'monthly', 'yearly']
@@ -93,6 +106,7 @@ return [
             'description' => '有基本的增删改查权限',
             'permissions' => [
                 'User' => ['list', 'create', 'update', 'detail'],
+                'Player' => ['list', 'detail', 'updateStatus', 'statistics'],
                 'UserRole' => ['list', 'detail'],
                 'Merchant' => ['list', 'create', 'update', 'detail'],
                 'MerchantAudit' => ['pending', 'passed'],
@@ -104,6 +118,7 @@ return [
             'description' => '有完整的管理权限',
             'permissions' => [
                 'User' => ['list', 'create', 'update', 'delete', 'detail'],
+                'Player' => ['list', 'detail', 'updateStatus', 'updateAdjustStatus', 'statistics', 'batchUpdate', 'export'],
                 'UserRole' => ['list', 'create', 'update', 'delete', 'detail', 'permissions'],
                 'Permission' => ['list', 'assign'],
                 'Menu' => ['list', 'tree', 'breadcrumb', 'permissions'],

+ 12 - 0
route/app.php

@@ -57,3 +57,15 @@ Route::group('permission', function () {
     Route::post('validatePermissions', 'Permission/validatePermissions');
     Route::post('formatPermissions', 'Permission/formatPermissions');
 });
+
+// 玩家相关路由
+Route::group('player', function () {
+    Route::get('list', 'Player/list');
+    Route::get('detail', 'Player/detail');
+    Route::post('updateStatus', 'Player/updateStatus');
+    Route::post('updateAdjustStatus', 'Player/updateAdjustStatus');
+    Route::get('statistics', 'Player/statistics');
+    Route::post('batchUpdateStatus', 'Player/batchUpdateStatus');
+    Route::post('batchUpdateAdjustStatus', 'Player/batchUpdateAdjustStatus');
+    Route::get('export', 'Player/export');
+});