model = new Game(); $this->gameMainLogic = new GameMainLogic(); $this->systemDeptLogic = new SystemDeptLogic(); $this->gameGroupLogic = new GameGroupLogic(); } /** * 获取游戏列表 * @param array $where * @return array */ public function getIndex($where) { $authGameList = request()->header('auth_game_list'); $query = $this->search($where); if(!empty($authGameList)) { $authGameList = explode(',', $authGameList); $query->where('id', 'in', $authGameList); } $query->order('sort', 'desc'); $data = $this->getList($query); $mainGameMap = $this->gameMainLogic->getMainGameMap(); foreach ($data['data'] as $key => $value) { $data['data'][$key]['main_game_name'] = $mainGameMap[$value['main_id']] ?? ''; } return $data; } /** * 获取游戏options列表(有权限限制) * @return array */ public function getGameOptions($where): array { $hasPackage = $where['has_package']??false; unset($where['has_package']); $authGameList = request()->header('auth_game_list'); $query = $this->search($where); if(!empty($authGameList)) { $authGameList = explode(',', $authGameList); $query->where('id', 'in', $authGameList); } $query->where('status', 1); $list = $query->select()->toArray(); return $this->getGameGroupTree($list, $hasPackage); } /** * 获取游戏options列表(无权限限制) * @return array */ public function getGameOptionsNoAuth($where): array { $query = $this->search($where); $query->where('status', 1); $list = $query->select()->toArray(); return $this->getGameGroupTree($list); } // 公共方法抽离 protected function getGameGroupTree($list, $hasPackage=null): array { $gameListMap = array_column($list, null, 'id'); // 携带分组信息 $gameGroupList = Db::connect('db_center')->table('game_group')->select()->toArray(); // 按照gameGroupList分组输出,组内携带game_list(如2,3,4),并将gameListMap中的游戏信息塞入分组,树形结构输出 $result = []; foreach ($gameGroupList as $group) { $groupGames = []; if (!empty($group['game_list'])) { $gameIds = explode(',', $group['game_list']); foreach ($gameIds as $gid) { $gid = trim($gid); if (isset($gameListMap[$gid])) { $gameInfo = $gameListMap[$gid]; // 兼容输出格式 $groupGames[] = [ 'id' => $gameInfo['id'], 'name' => $hasPackage ? $gameInfo['id'].':'.$gameInfo['name'].':'.$gameInfo['package_name'] : '['.$gameInfo['id'].']'.$gameInfo['name'], ]; } } } $result[] = [ 'id' =>'group_id_'.$group['id'], 'name' => $group['name'], 'children' => $groupGames ]; } return $result; } public function gameMainTree($gameList): array { $mainGameMap = $this->gameMainLogic->getMainGameMap(); $groupedGames = []; foreach ($gameList as $game) { $mainId = $game['main_id']; $groupedGames[$mainId]['id'] = 'main_id_'.$mainId; $groupedGames[$mainId]['name'] = $mainGameMap[$mainId] ?? $mainId; $groupedGames[$mainId]['children'][] = [ 'id' => $game['id'], 'name' => '['.$game['id'].']'.$game['name'] ]; } return array_values($groupedGames); } /** * 根据权限获取游戏列表 */ public function getGameListByPermission($where) { $authGameList = request()->header('auth_game_list'); $query = $this->search($where); if(!empty($authGameList)) { $authGameList = explode(',', $authGameList); $query->where('id', 'in', $authGameList); } $query->where('status', 1); $query->order('sort', 'desc'); return $query->select()->toArray(); } /** * 根据权限获取游戏列表树形(无权限) */ public function getGameListTreeNoAuth($where) { $pfGame = $this->model->where('status', 1)->order('sort', 'desc')->select()->toArray(); $mainGameMap = $this->gameMainLogic->getMainGameMap(); $groupedGames = []; foreach ($pfGame as $game) { $mainId = $game['main_id']; $groupedGames[$mainId]['id'] = 'main_id_'.$mainId; $groupedGames[$mainId]['disabled'] = ($where['single'] ?? false); $groupedGames[$mainId]['name'] = $mainGameMap[$mainId] ?? $mainId; $groupedGames[$mainId]['children'][] = [ 'id' => $game['id'], 'name' => '['.$game['id'].']'.$game['name'] ]; } return array_values($groupedGames); } /** * 根据权限获取游戏列表树形(有权限) */ public function getGameListTree($where) { $authGameList = request()->header('auth_game_list'); $query = $this->search(); if(!empty($authGameList)) { $authGameList = explode(',', $authGameList); $query->where('id', 'in', $authGameList); } $query->where('status', 1); $query->order('sort', 'desc'); $gameList = $query->select()->toArray(); $mainGameMap = $this->gameMainLogic->getMainGameMap(); $groupedGames = []; foreach ($gameList as $game) { $mainId = $game['main_id']; $groupedGames[$mainId]['id'] = 'main_id_'.$mainId; $groupedGames[$mainId]['disabled'] = ($where['single'] ?? false); $groupedGames[$mainId]['name'] = $mainGameMap[$mainId] ?? $mainId; $groupedGames[$mainId]['children'][] = [ 'id' => $game['id'], 'name' => '['.$game['id'].']'.$game['name'] ]; } return array_values($groupedGames); } /** * 设置部门游戏权限 * @param array $where * @param array $gameList * @return void */ public function setGameListByDeptId($dept_id, $gameList) { $this->systemDeptLogic->setGameListByDeptId($dept_id, $gameList); } }