diff --git a/Application/Base/Service/ApplyService.class.php b/Application/Base/Service/ApplyService.class.php index fc5fb7926..2d627ca40 100644 --- a/Application/Base/Service/ApplyService.class.php +++ b/Application/Base/Service/ApplyService.class.php @@ -50,14 +50,17 @@ class ApplyService { ]; } - public function cancelGame($gameId, $promoteId) { - $ids = [$promoteId]; - $list = M('promote', 'tab_')->field('id')->where('parent_id=' . $promoteId . ' or grand_id=' . $promoteId)->select(); - $ids = array_merge($ids, array_column($list, 'id')); - - $save['offline_status'] = 1; - - M('apply', 'tab_')->where(['game_id' => $gameId, 'promote_id' => ['in', $ids]])->save($save); + public function offlineGame($game, $promote = null) + { + $conditions = ['game_id' => $game['id']]; + if ($promote) { + $promoteService = new PromoteService(); + $children = $promoteService->getAllChildren($promote, 0, ['id']); + $promoteIds = [$promote['id']]; + $promoteIds = array_merge($promoteIds, array_column($children, 'id')); + $conditions['promote_id'] = ['in', $promoteIds]; + } + M('apply', 'tab_')->where($conditions)->save(['offline_status' => 1]); } public function updateAfterPack($apply, $packageUrl, $plistUrl) @@ -90,25 +93,56 @@ class ApplyService { return $host . '/index.php?s=/Home/Home/landingPage/code/' . $code; } - public function encodeApplyCode($apply, $type) + public function getApplyData($apply, $type, $version) { + $data = null; $expiresIn = 0; - $data = [ - 'promote_id' => $apply['promote_id'], - 'game_id' => $apply['game_id'], - 'expires_in' => $expiresIn, - 'created_at' => date('Y-m-d H:i:s'), - 'type' => $type - ]; + if ($version == 1) { + $data = [ + 'promote_id' => $apply['promote_id'], + 'game_id' => $apply['game_id'], + 'expires_in' => $expiresIn, + 'created_at' => date('Y-m-d H:i:s'), + 'type' => $type + ]; + $data = json_encode($data); + } elseif ($version == 2) { + $data = [ + $apply['promote_id'], + $apply['game_id'], + $expiresIn, + time(), + $type + ]; + $data = implode('|', $data); + } + return $data; + } - $jsonStr = json_encode($data); - return base64_encode(openssl_encrypt($jsonStr, self::ENCRYPT_METHOD, self::ENCRYPT_KEY)); + public function encodeApplyCode($apply, $type, $version = 2) + { + $data = $this->getApplyData($apply, $type, $version); + return base64_encode(openssl_encrypt($data, self::ENCRYPT_METHOD, self::ENCRYPT_KEY)); } public function decodeApplyCode($code) { $decryptStr = openssl_decrypt(base64_decode($code), self::ENCRYPT_METHOD, self::ENCRYPT_KEY); - return json_decode($decryptStr, true); + $result = json_decode($decryptStr, true); + if (is_null($result)) { + $items = explode('|', $result); + if (count($items) != 5) { + return null; + } + return [ + 'promote_id' => $items[0], + 'game_id' => $items[1], + 'expires_in' => $items[2], + 'created_at' => date('Y-m-d H:i:s', $items[3]), + 'type' => $items[4], + ]; + } + return $result; } public function checkApplyCode($data, $type) diff --git a/Application/Base/Service/PromoteService.class.php b/Application/Base/Service/PromoteService.class.php index 30f8b41b7..b2874ad86 100644 --- a/Application/Base/Service/PromoteService.class.php +++ b/Application/Base/Service/PromoteService.class.php @@ -835,6 +835,18 @@ class PromoteService { } } + /** + * 获取所有下级推广员 + */ + public function getAllChildren($promote, $level = 0, $fields = '*') + { + $conditions = ['chain' => ['like', $promote['chain'] . $promote['id'] . '/%']]; + if ($level != 0) { + $conditions['level'] = $level; + } + return M('promote', 'tab_')->field($fields)->where($conditions)->select(); + } + public function getLevelName($level) { return self::$levels[$level] ?? '未知'; diff --git a/Application/Home/Controller/GameController.class.php b/Application/Home/Controller/GameController.class.php new file mode 100644 index 000000000..c7e2bca5c --- /dev/null +++ b/Application/Home/Controller/GameController.class.php @@ -0,0 +1,2092 @@ +list(1); + } + + public function mix() + { + $this->list(2); + } + + public function list($serverType) + { + // $serverType = I('server_type', 1); + $promoteId = I('promote_id', 0); + $promoteLevel = I('promote_level', 0); + $loginPromote = $this->getLoginPromote(); + $baseGameId = I('base_game_id', 0); + $isMine = I('is_mine', 0); + + if ($promoteLevel != 0 && $promoteId == 0) { + $this->assign('count', 0); + $this->assign('pagination', ''); + $this->assign('records', []); + return $this->display('index'); + } + + if ($promoteLevel == 0 && $promoteId == 0) { + $promoteId = $loginPromote['id']; + } + + $gameIds = []; + if ($baseGameId > 0) { + $baseGame = M('base_game', 'tab_')->where('id', $baseGameId)->find(); + if ($baseGame['android_game_id'] > 0) { + $gameIds[] = $baseGame['android_game_id']; + } + if ($baseGame['ios_game_id'] > 0) { + $gameIds[] = $baseGame['ios_game_id']; + } + } + + if ($isMine) { + $applyGameIds = M('apply', 'tab_')->where(['offline_status' => 0, 'promote_id' => $promoteId])->getField('game_id', true); + $gameIds = (count($gameIds) == 0 ? $applyGameIds : array_intersect($applyGameIds, $gameIds)); + } + + $columns = ['id', 'icon', 'game_name', 'features', 'sdk_version', 'game_size', 'game_type_name']; + + $conditions = []; + if ($isMine) { + $conditions['offline_status'] = 0; + } + + $conditions['server_type'] = $serverType; + if (count($gameIds) > 0) { + $conditions['id'] = ['in', $gameIds]; + } + $query = M('game', 'tab_')->field($columns)->where($conditions)->order('relation_game_id desc'); + list($games, $pagination, $count) = $this->paginate($query); + + $gameSources = []; + if (count($games) > 0) { + $gameIds = array_column($games, 'id'); + $applys = M('apply', 'tab_')->field(['game_id', 'offline_status'])->where(['promote_id' => $promoteId, 'game_id' => ['in', $gameIds]])->select(); + $applys = index_by_column('game_id', $applys); + + $gameSources = M('game_source', 'tab_')->field(['game_id', 'version'])->where(['game_id' => ['in', $gameIds]])->select(); + $gameSources = index_by_column('game_id', $gameSources); + } + + $records = []; + foreach ($games as $game) { + $gameId = $game['id']; + $records[] = [ + 'id' => $game['id'], + 'offline_status' => isset($applys[$gameId]) ? $applys[$gameId]['offline_status'] : 1, + 'icon' => $game['icon'], + 'game_name' => $game['game_name'], + 'features' => $game['features'], + 'sdk_version' => $game['sdk_version'], + 'version' => isset($gameSources[$gameId]) ? $gameSources[$gameId]['version'] : '--', + 'game_size' => $game['game_size'], + 'game_type_name' => $game['game_type_name'], + ]; + } + + $this->assign('serverType', $serverType); + $this->assign('promoteId', $promoteId); + $this->assign('count', $count); + $this->assign('pagination', $pagination); + $this->assign('records', $records); + $this->display('index'); + } + + public function apply() + { + $gameId = I('game_id', 0); + $promoteId = I('promote_id', 0); + $loginPromote = $this->getLoginPromote(); + + if ($gameId == 0) { + return $this->ajaxReturn(['status' => 0, 'message' => '数据有误']); + } + + $promoteService = new PromoteService(); + if (!$promoteService->canPresidentApplyGame($loginPromote)) { + return $this->ajaxReturn(['status' => 0, 'message' => '请联系市场专员开启']); + } + + $promote = null; + if ($promoteId != 0) { + $promote = M('promote', 'tab_')->field(['id', 'chain', 'account'])->where(['id' => $promoteId])->find(); + if (!$promote || strpos($promote['chain'], '/'. $loginPromote['id'] . '/') === false) { + return $this->ajaxReturn(['status' => 0, 'message' => '推广员不存在']); + } + } else { + $promote = $loginPromote; + } + + $game = M('game', 'tab_')->field(['id', 'game_name', 'money', 'ratio', 'sdk_version'])->where(['id' => $gameId])->find(); + if (!$game) { + return $this->ajaxReturn(['status' => 0, 'message' => '游戏不存在']); + } + + $apply = M('apply', 'tab_')->where(['game_id' => $gameId, 'promote_id' => $promote['id']])->find(); + if ($apply && $apply['offline_status'] == 0) { + return $this->ajaxReturn(['status' => 0, 'message' => '该游戏已添加']); + } + + $data = []; + $data['ratio'] = $game['ratio']; + $data['money'] = $game['money']; + $data['promote_account'] = $promote['account']; + $data['apply_time'] = NOW_TIME; + $data['offline_status'] = 0; + + $status = false; + if (!$apply) { + $data['sdk_version'] = $game['sdk_version']; + $data['game_id'] = $game['id']; + $data['game_name'] = $game['game_name']; + $data['promote_id'] = $promote['id']; + $data['status'] = C('SET_AUTO_PACK'); + $status = M('apply', 'tab_')->add($data); + } else { + $status = M('apply', 'tab_')->where('id = ' . $apply['id'])->save($data); + } + if ($status) { + // recordPromoteLogs('游戏管理', '添加游戏'); + return $this->ajaxReturn(['status' => 1, 'message' => '添加成功']); + } else { + return $this->ajaxReturn(['status' => 0, 'message' => '系统异常']); + } + } + + public function batchApply() + { + $gameId = I('game_id', 0); + $promoteIds = I('promote_ids', []); + if ($gameId == 0) { + return $this->ajaxReturn(['status' => 0, 'message' => '数据有误']); + } + + if (count($promoteIds) == 0) { + return $this->ajaxReturn(['status' => 0, 'message' => '请选择要添加游戏的下级人员']); + } + + $loginPromote = $this->getLoginPromote(); + $promoteService = new PromoteService(); + if (!$promoteService->canPresidentApplyGame($loginPromote)) { + return $this->ajaxReturn(['status' => 0, 'message' => '请联系市场专员开启']); + } + + $game = M('game', 'tab_')->field(['id', 'game_name', 'money', 'ratio', 'sdk_version'])->where(['id' => $gameId])->find(); + if (!$game) { + return $this->ajaxReturn(['status' => 0, 'message' => '游戏不存在']); + } + + $applys = M('apply', 'tab_')->where(['game_id' => $gameId, 'promote_id' => ['in', $promoteIds]])->select(); + $appliedPromoteIds = array_column($applys, 'promote_id'); + + $newPromoteIds = array_diff($promoteIds, $appliedPromoteIds); + + // 添加申请表中还未含有记录的推广员 + if (count($newPromoteIds) > 0) { + $newApplys = []; + foreach ($newPromoteIds as $promoteId) { + $newApplys[] = [ + 'ratio' => $game['ratio'], + 'money' => $game['money'], + 'promote_account' => $loginPromote['account'], + 'apply_time' => NOW_TIME, + 'offline_status' => 0, + 'sdk_version' => $game['sdk_version'], + 'game_id' => $game['id'], + 'game_name' => $game['game_name'], + 'promote_id' => $promoteId, + 'status' => C('SET_AUTO_PACK'), + ]; + } + M('apply', 'tab_')->addAll($newApplys); + } + + // 更改表中含有记录的推广员申请状态 + if (count($appliedPromoteIds) > 0) { + $data = []; + $data['ratio'] = $game['ratio']; + $data['money'] = $game['money']; + $data['promote_account'] = $loginPromote['account']; + $data['apply_time'] = NOW_TIME; + $data['offline_status'] = 0; + M('apply', 'tab_')->where(['game_id' => $gameId, 'promote_id' => ['in', $appliedPromoteIds]])->save($data); + } + + // recordPromoteLogs('游戏管理', '批量添加游戏'); + return $this->ajaxReturn(['status' => 1, 'message' => '添加成功']); + } + + public function offline() + { + $gameId = I('game_id', 0); + $promoteId = I('promote_id', 0); + $loginPromote = $this->getLoginPromote(); + + if ($gameId == 0) { + return $this->ajaxReturn(['status' => 0, 'message' => '请选择游戏']); + } + + $game = M('game', 'tab_')->field(['id'])->where(['id' => $gameId])->find(); + if (!$game) { + return $this->ajaxReturn(['status' => 0, 'message' => '游戏不存在']); + } + + $promote = null; + if ($promtoeId > 0) { + $promote = M('promote', 'tab_')->where(['id' => $promoteId])->find(); + if (!$promote) { + return $this->ajaxReturn(['status' => 0, 'message' => '推广员不存在']); + } + } else { + $promote = $loginPromote; + } + + $applyService = new ApplyService(); + $applyService->offlineGame($game, $promote); + // recordPromoteLogs('游戏管理','下架游戏'); + $this->ajaxReturn(['status' => true, 'msg' => '下架成功']); + } + + public function getMineBaseGames() + { + $gameIds = M('apply', 'tab_')->where(['promote_id' => $promoteId])->getField('game_id', true); + $games = []; + if (count($gameIds) > 0) { + $games = M('base_game', 'tab_')->where(['_logic' => 'or', 'android_game_id' => ['in', $gameIds], 'ios_game_id' => ['in', $gameIds]])->select(); + } + + return $this->ajaxReturn([ + 'status' => true, + 'message' => '获取成功', + 'data' => [ + 'games' => $games + ] + ]); + } + + public function getUnApplyPromotes() + { + $gameId = I('game_id', 0); + $level = I('level', 0); + $loginPromote = $this->getLoginPromote(); + + $promoteService = new PromoteService(); + $promotes = $promoteService->getAllChildren($loginPromote, $level, ['id', 'account', 'real_name']); + $promoteIds = array_column($promotes, 'id'); + + $appliedPromoteIds = M('apply', 'tab_')->where(['offline_status' => 0, 'game_id' => $gameId, 'promote_id' => ['in', $promoteIds]])->getField('promote_id', true); + + $unApplyPromotes = []; + foreach ($promotes as $promote) { + if (!in_array($promote['id'], $appliedPromoteIds)) { + $unApplyPromotes[] = $promote; + } + } + + return $this->ajaxReturn([ + 'status' => true, + 'message' => '获取成功', + 'data' => [ + 'promotes' => $unApplyPromotes + ] + ]); + } + + public function jion_list($model = array(), $p, $map = array()) + { + + $page = intval($p); + $page = $page ? $page : 1; //默认显示第一页数据 + $name = $model['name']; + $row = empty($model['list_row']) ? 15 : $model['list_row']; + $data = M($name, 'tab_') + /* 查询指定字段,不指定则查询所有字段 */ + ->field(empty($fields) ? true : $fields) + ->join($model['jion']) + // 查询条件 + ->where($map) + /* 默认通过id逆序排列 */ + ->order($model['need_pk'] ? 'id DESC' : '') + /* 数据分页 */ + ->page($page, $row) + /* 执行查询 */ + ->select(); + + /* 查询记录总数 */ + $count = M($name, "tab_")->where($map)->count(); + + //分页 + if ($count > $row) { + $page = new \Think\Page($count, $row); + $page->setConfig('theme', '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%'); + $this->assign('_page', $page->show()); + } + + $this->assign('list_data', $data); + $this->meta_title = $model['title']; + $this->display($model['tem_list']); + } + + public function gameSpecialList() + { + $this->index(1); + } + + public function gameList() + { + $this->index(2); + } + + //首页 $type-查询的游戏平台类型 0-全部 10-安卓+ios 2-ios 1-安卓 + public function t($serverType = 1) + { + $loginPromote = $this->getLoginPromote(); + + $promoteId = empty(I('promote_id')) ? $loginPromote['id'] : I('promote_id'); //搜索的渠道ID + $promoteRole = empty(I('promote_role')) ? 1 : I('promote_role'); //渠道角色 + $parentPromoteId = getParentPromoteId($promoteId); //上级渠道ID + $grandPromoteId = getGrandPromoteId($promoteId); //本账号会长渠道ID + $childGameAddPermission = getChildGameAddPermission($grandPromoteId); //游戏添加权限 + + $map['tab_game.online_status'] = 1;//开发者游戏上线状态 + $map['tab_game.down_port'] = 1;//游戏端口 第三方接口不能申请 + $map['tab_game.game_status'] = 1;//游戏状态 + $map['tab_game.server_type'] = $serverType;//专服游戏 + + if (!empty(I('game_id'))) { + $thisRelationGameName = M('Game', 'tab_')->where(array('id' => I('game_id')))->getField('relation_game_name'); + + $map['tab_game.relation_game_name'] = ['like', $thisRelationGameName]; + } + + $type = I('get.type', 0); + $group = ''; + switch ($type) { + case 1: + case 2: + $gameIdList = M('Game', 'tab_')->group('relation_game_id')->having('count(id) = 1')->getField('id', true); + + $map['tab_game.sdk_version'] = $type; + + $applyService = new ApplyService(); + $tempIds = $applyService->getSociatyGameIds($loginPromote); + $gameIdList = array_intersect($gameIdList, $tempIds); + + if (count($gameIdList) > 0) { + $gameIds = implode(',', $gameIdList); + + $map['tab_game.id'] = ['in', $gameIds]; + } else { + $map = '1 = 2'; + } + break; + case 10: + $group = 'tab_game.relation_game_id'; + + if ($parentPromoteId > 0 && $childGameAddPermission == 0) { + $gameRelationGameIdList = M('Game', 'tab_')->group('relation_game_id')->having('count(id) = 2')->getField('relation_game_id', true); + if (count($gameRelationGameIdList) > 0) { + $gameRelationGameIdList = implode(',', $gameRelationGameIdList); + + $where['tab_game.relation_game_id'] = ['in', $gameRelationGameIdList]; + } else { + $where = '1 = 2'; + } + } else { + $gameIdList = M('Game', 'tab_')->group('relation_game_id')->having('count(id) = 2')->getField('id', true); + + $applyService = new ApplyService(); + $tempIds = $applyService->getSociatyGameIds($loginPromote); + $gameIdList = array_intersect($gameIdList, $tempIds); + + if (count($gameIdList) > 0) { + $gameIds = implode(',', $gameIdList); + $map['tab_game.id'] = ['in', $gameIds]; + } else { + $map = '1 = 2'; + } + } + break; + case 0: + $applyService = new ApplyService(); + $gameIdList = $applyService->getSociatyGameIds($loginPromote); + if (count($gameIdList) > 0) { + $gameIds = implode(',', $gameIdList); + $map['tab_game.id'] = ['in', $gameIds]; + } else { + $map = '1 = 2'; + } + } + + $page = intval(I('get.p', 0)); + $page = $page ? $page : 1; //默认显示第一页数据 + + if (isset($_REQUEST['row'])) { + $row = $_REQUEST['row']; + } else { + $row = 10; + } + + $join = ''; + if ($parentPromoteId > 0 && $childGameAddPermission == 0) { + $map['tab_apply.promote_id'] = $grandPromoteId; + if (!empty($where)) { + $map['_logic'] = 'and'; + $map['_complex'] = $where; + } + + $join = 'tab_apply on tab_game.id = tab_apply.game_id and tab_apply.offline_status = 0';//查询上级游戏 + } + + $data = M('Game', 'tab_') + ->field('tab_game.id,tab_game.icon,tab_game.game_name,tab_game.features,tab_game.sdk_version,tab_game.game_size,tab_game.game_type_name,tab_game.relation_game_name,ta_1.id as apply_id_1,ta_2.id as apply_id_2') + ->join($join) + ->join('left join tab_apply as ta_1 on tab_game.id = ta_1.game_id and ta_1.offline_status = 0 and ta_1.promote_id = ' . $promoteId)//查询是否拥有该游戏 + ->join('left join tab_apply as ta_2 on tab_game.relation_game_id = ta_2.game_id and ta_2.offline_status = 0 and tab_game.id != tab_game.relation_game_id and ta_2.promote_id = ' . $promoteId)//查询是否拥有关联游戏 + ->join('left join tab_game_source on tab_game.id = tab_game_source.game_id')//查询游戏版本 + ->where($map) + ->group($group) + ->order('tab_game.sort desc,tab_game.id desc') +// ->fetchSql(true) + ->page($page, $row) + ->select(); + +// var_dump($data); +// die; + + /* 查询记录总数 */ + $count = M("Game", "tab_") + ->field('tab_game.id') + ->join($join)//查询上级游戏 + ->where($map) + ->group($group) + ->select(); + $count = count($count); + + //分页 + $parameter['p'] = I('get.p', 1); + $parameter['row'] = I('get.row'); + $parameter['type'] = $type; + $parameter['promote_role'] = $promoteRole; + empty(I('promote_id')) || $parameter['promote_id'] = I('promote_id'); + + $page = set_pagination($count, $row, $parameter); + if ($page) { + $this->assign('_page', $page); + } + + $this->assign('list_data', $data); + $this->assign("count", $count); + $this->assign('loginPromote', $loginPromote); + $this->assign("promoteId", $promoteId); + $this->assign('promoteRole', $promoteRole); + $this->assign('promoteData', getAllPromoteListByType($promoteRole)); + $this->assign('type', $type); + $this->assign('myGame', ($serverType == 1) ? 'specialMyGameList' : 'myGameList'); + $this->assign('game', ($serverType == 1) ? 'gameSpecialList' : 'gameList'); + $this->assign('position', ($serverType == 1) ? '专服管理' : '混服管理'); + $this->meta_title = "申请游戏"; + $this->display('index'); + } + + //查看游戏资料专区 + public function feature($p = 0, $type = 0) + { + $promoteId = empty(I('promote_id')) ? PID : I('promote_id');//搜索的渠道ID + $promoteRole = empty(I('promote_role')) ? 1 : I('promote_role');//渠道角色 + //$parentPromoteId = getParentPromoteId($promoteId);//上级渠道ID + $thisParentPromoteId = getParentPromoteId(PID);//本账号上级渠道ID + +// $addPermission = 1;//是否有添加游戏权限 +// if ($thisParentPromoteId == 0 && $promoteRole == 3) { +// $addPermission = 0; +// } + + $map['tab_game.online_status'] = 1;//开发者游戏上线状态 + $map['tab_game.down_port'] = 1;//游戏端口 第三方接口不能申请 + $map['tab_game.game_status'] = 1;//游戏状态 + $map['tab_game.developers'] = 0; //平台游戏(官网游戏,非开发者游戏) + + $applyPromote = M('apply', 'tab_')->field('game_id')->where(['promote_id' => $promoteId])->select(); + $noDeveloperGameArr = array(); + + foreach ($applyPromote as $key => $value) { + $applyPromoteGameId = $value['game_id']; + $gameInfo = M('Game', 'tab_') + ->field('id,icon,game_name,features,sdk_version,game_size,game_type_name,relation_game_name,developers') + ->where(['id' => $applyPromoteGameId])->select(); + if ($gameInfo[0]['developers'] > 0) { + unset($gameInfo[0]['developers']); + $noDeveloperGameArr[] = $gameInfo[0]['id']; //非开发者游戏 + } + } + + + $page = intval($p); + $page = $page ? $page : 1; //默认显示第一页数据 + + if (isset($_REQUEST['row'])) { + $row = $_REQUEST['row']; + } else { + $row = 10; + } + $map['_logic'] = 'and'; + if (!empty(I('game_id'))) { + $thisRelationGameName = M('Game', 'tab_')->where(array('id' => I('game_id')))->getField('relation_game_name'); + + $map['tab_game.relation_game_name'] = ['like', $thisRelationGameName]; + $where['_complex'] = $map; + // $where['tab_game.id'] = ['in',$noDeveloperGameArr]; + // $where['_logic']='or'; + } else { + $where['_complex'] = $map; + if (empty($noDeveloperGameArr)) { + $where['tab_game.id'] = ['in', '-100']; + } else { + $where['tab_game.id'] = ['in', $noDeveloperGameArr]; + } + + $where['_logic'] = 'or'; + } + + $data = M('Game', 'tab_') + ->field('tab_game.id,tab_game.icon,tab_game.game_name,tab_game.features,tab_game.sdk_version,tab_game.game_size,tab_game.game_type_name,tab_game.relation_game_name,ta_1.id as apply_id_1') + ->join('left join tab_apply as ta_1 on tab_game.id = ta_1.game_id and ta_1.offline_status = 0 and ta_1.promote_id = ' . $promoteId)//查询是否拥有该游戏 + ->where($where) + ->order('tab_game.developers desc,tab_game.sort desc,tab_game.id desc') + ->page($page, $row) + ->select(); + //$AllData = array_merge($noDeveloperGameArr,$data); + + /* 查询记录总数 */ + $count = M("Game", "tab_") + ->field('tab_game.id') + ->where($map) + ->select(); + $count = count($count); + + //分页 + $parameter['p'] = I('get.p', 1); + $parameter['row'] = I('get.row'); + $parameter['type'] = $type; + $parameter['promote_role'] = $promoteRole; + empty(I('promote_id')) || $parameter['promote_id'] = I('promote_id'); + + $page = set_pagination($count, $row, $parameter); + if ($page) { + $this->assign('_page', $page); + } + + $this->assign('list_data', $data); + $this->assign("count", $count); + $this->assign("promoteId", $promoteId); + // $this->assign('parentPromoteId', $parentPromoteId); + $this->assign('thisParentPromoteId', $thisParentPromoteId); + // $this->assign('promoteRole', $promoteRole); + $this->assign('pID', PID); + //$this->assign('promoteData', getAllPromoteListByType($promoteRole)); +// $this->assign('addPermission', $addPermission); + // $this->assign('type', $type); + + $this->meta_title = "申请游戏"; + + $this->display(); + } + + //查看游戏详情 + public function getDetail() + { + $id = I('id', 0); + $gameData = []; + + if ($id > 0) { + $map['tab_game.id'] = $id; + + $gameData = M('Game', 'tab_') + ->join('left join tab_game_source on tab_game.id = tab_game_source.game_id') + ->where($map) + ->field('tab_game.*,tab_game_source.version,tab_game_source.create_time') + ->find(); + + if (!empty($gameData['create_time'])) { + $gameData['create_time'] = date('Y-m-d H:i:s', $gameData['create_time']); + } + + $gameData['icon'] = __ROOT__ . get_cover($gameData['icon'], 'path'); + $gameData['screenshot'] = explode(',', $gameData['screenshot']); + + foreach ($gameData['screenshot'] as $value) { + $gameData['screenshot_url'][] = get_cover($value, 'path'); + } + } + + $this->ajaxReturn($gameData); + } + + public function gapply() + { + $map1['relation_game_id'] = array('in', $_REQUEST['game_id']); + $res = M('game', 'tab_')->field('id')->where($map1)->select(); + $res = array_map('array_shift', $res); + $_REQUEST['game_id'] = implode(',', $res); + + $model = new ApplyModel(); //D('Apply'); + $map['game_id'] = array('in', $_REQUEST['game_id']); + $map['promote_id'] = session("promote_auth.pid"); + $c = $model->where($map)->select(); + $_REQUEST['game_id'] = explode(',', $_REQUEST['game_id']); + foreach ($c as $key => $value) { + $va[] = $value['game_id']; + } + if (!empty($va)) { + $game_id = array_diff($_REQUEST['game_id'], $va); + } else { + $game_id = $_REQUEST['game_id']; + } + + if (empty($game_id)) { + $this->ajaxReturn(array("status" => "0", "msg" => "游戏已申请过,请勿重复申请")); + exit; + } + $_REQUEST['game_id'] = implode(',', $game_id); + $data['game_id'] = array('in', $_REQUEST['game_id']); + $data['promote_id'] = session("promote_auth.pid"); + $data['promote_account'] = session("promote_auth.account"); + $data['apply_time'] = NOW_TIME; + $data['status'] = 0; + $game = M('Game', 'tab_'); + foreach ($game_id as $key => $value) { + $data['game_id'] = $value; + $gdata = $game->where(array('id' => $value))->find(); + $data['game_name'] = get_game_name($value); + $data['ratio'] = $gdata['ratio']; + $data['money'] = $gdata['money']; + $data['sdk_version'] = $gdata['sdk_version']; + // $data['pattern']=current($pattern); + // next($pattern); + $res = $model->add($data); + } + if ($res) { + $this->ajaxReturn(array("status" => "1", "msg" => "申请成功")); + } else { + $this->ajaxReturn(array("status" => "0", "msg" => "申请失败")); + } + } + + /** + * 批量添加投放申请 + * @author 鹿文学 + */ + public function batch_apply_game() + { + if (IS_POST) { + $relation_game_ids = $_POST['game_id']; + $platform_id = $_POST['platform_id']; + $platform_name = $_POST['platform_name']; + $remark = $_POST['remark']; + $promote_id = is_login_promote(); + + if ($promote_id < 1) { + $this->ajaxReturn(['status' => 0, 'msg' => '请登录后再操作'], 'json'); + } + + if (empty($relation_game_ids)) { + $this->ajaxReturn(['status' => 0, 'msg' => '你还没有选择任何内容!'], 'json'); + } + + if ((!is_numeric($platform_id) || $platform_id < 1) && empty($platform_name)) { + $this->ajaxReturn(['status' => 0, 'msg' => '投放平台不能为空'], 'json'); + } + + $gamemodel = M('Game', 'tab_'); + + $game = $gamemodel->field('id,game_name,sdk_version,ratio,money')->where(['relation_game_id' => ['in', $relation_game_ids]])->select(); + + if (!is_array($game) || empty($game[0])) { + $this->ajaxReturn(['status' => 0, 'msg' => '游戏不存在'], 'json'); + } + + $game_id = array_column($game, 'id'); + + + // 先查投放平台,如有渠道输入则先判断平台是否存在,不存在则添加,存在则获取信息;没有趣的输入,则判断选择平台是否存在,不存在返回 + + $platformmodel = M('launch_platform', 'tab_'); + + + if ($platform_name) { + $platform = $platformmodel->where(['name' => $platform_name])->find(); + + if (empty($platform)) { + $platform_id = $platformmodel->add(['create_time' => time(), 'update_time' => time(), 'name' => $platform_name, 'promote_id' => $promote_id, 'promote_account' => get_promote_account($promote_id), 'mark' => 1]); + } else { + $platform_id = $platform['id']; + } + + } else { + + $platform = $platformmodel->where(['id' => $platform_id])->find(); + if (empty($platform)) { + $this->ajaxReturn(['status' => 0, 'msg' => '投放平台选择有误,请重新选择'], 'json'); + } + + } + + // 再查申请表,数据是否存在,存在则不予理会,不存在则添加 + + $applymodel = M('Apply', 'tab_'); + + $apply = $applymodel->field('id,game_id,status')->where(['promote_id' => $promote_id, 'game_id' => ['in', $game_id]])->select(); + + $exist = 1; + + if (empty($apply)) { + + $apply = $this->add_apply($applymodel, $game, $promote_id, $game_id); + + $exist = C('SET_AUTO_PACK'); + + } + + foreach ($apply as $k => $v) { + foreach ($game as $m => $n) { + if ($v['game_id'] == $n['id']) { + unset($game[$m]); + } + } + } + + if (!empty($game)) { + $apply = $this->add_apply($applymodel, $game, $promote_id, $game_id); + } + + $apply_ids = array_column($apply, 'id'); + + if ($platform_id > 0 && is_array($apply_ids)) { + + $launchmodel = M('apply_launch', 'tab_'); + + $launch = $launchmodel->field('platform_id,apply_id,max(position) as position')->where(['platform_id' => $platform_id, 'apply_id' => ['in', $apply_ids]])->group('platform_id,apply_id')->order('launch_time desc')->select(); + + if (empty($launch)) { + + foreach ($apply as $k => $v) { + $data[] = array( + 'platform_id' => $platform_id, + 'apply_id' => $v['id'], + 'launch_game_id' => $v['game_id'], + 'launch_time' => time(), + 'position' => 1, + 'remark' => $remark, + ); + + } + + } else { + + foreach ($apply as $k => $v) { + $flag = true; + foreach ($launch as $m => $n) { + + if ($n['apply_id'] == $v['id']) { + if ($v['status'] == 1) { + $data[$k] = array( + 'platform_id' => $platform_id, + 'apply_id' => $v['id'], + 'launch_game_id' => $v['game_id'], + 'launch_time' => time(), + 'position' => $n['position'] > 0 ? (intval($n['position']) + 1) : 1, + 'remark' => $remark, + ); + break; + } else { + $flag = false; + } + } + + } + if (!$data[$k] && $flag) { + $data[$k] = array( + 'platform_id' => $platform_id, + 'apply_id' => $v['id'], + 'launch_game_id' => $v['game_id'], + 'launch_time' => time(), + 'position' => 1, + 'remark' => $remark, + ); + } + + } + + } + + $res = $launchmodel->addAll($data); + + if ($res > 0) { + $this->ajaxReturn(['status' => 1, 'msg' => '申请成功', 'exist' => $exist], 'json'); + } else { + $this->ajaxReturn(['status' => 0, 'msg' => '申请失败'], 'json'); + } + + } else { + $this->ajaxReturn(['status' => 0, 'msg' => '申请失败,请重新申请'], 'json'); + } + + } else { + + $this->ajaxReturn(['status' => 0, 'msg' => '请求有误'], 'json'); + + } + + } + + /** + * 批量添加申请并返回符合条件的申请信息 + * @param object $applymodel 申请表模型对象 + * @param array $game 游戏数组对象 + * @param integer $promote_id 渠道编号 + * @param array $game_id 要查找的游戏编号数组 + * @param string $fields 查询字段 + * @param array 根据条件获取的申请信息数组 + * @author 鹿文学 + */ + private function add_apply($applymodel, $game, $promote_id, $game_id, $fields = 'id,game_id,status') + { + + foreach ($game as $k => $v) { + $data[] = array( + 'game_id' => $v['id'], + 'game_name' => $v['game_name'], + 'promote_id' => $promote_id, + 'promote_account' => session("promote_auth.account"), + 'apply_time' => time(), + 'status' => C('SET_AUTO_PACK'), + 'dispose_time' => C('SET_AUTO_PACK') ? time() : '', + 'sdk_version' => $v['sdk_version'], + 'ratio' => $v['ratio'], + 'money' => $v['money'], + ); + + } + + + $applymodel->addAll($data); + + $apply = $applymodel->field($fields)->where(['promote_id' => $promote_id, 'game_id' => ['in', $game_id]])->select(); + + return $apply; + + } + + public function specialMyGameList() + { + $this->my_game(1); + } + + public function myGameList() + { + $this->my_game(2); + } + + public function my_game($serverType = 1) + { + $loginPromote = $this->getLoginPromote(); + + //渠道可申请游戏 + if (empty($_REQUEST['promote_id'])) { + $promoteId = $loginPromote['id']; + } else { + $promoteId = $_REQUEST['promote_id']; + } + + $applyService = new ApplyService(); + $gameIdList = $applyService->getSociatyGameIds($loginPromote); + + $applyMap['promote_id'] = $promoteId; + $applyMap['offline_status'] = 0; + $applyMap['game_id'] = ['in', $gameIdList]; + + $gameIds = M('Apply', 'tab_')->where($applyMap)->getField('game_id', true); + $gameIds = implode(',', $gameIds); + + if (empty($gameIds)) { + $map['_string'] = '1 = 2'; + } else { + $map['tab_game.id'] = ['in', $gameIds]; + } + + $map['tab_apply.promote_id'] = $promoteId; + $map['tab_game.online_status'] = 1;//开发者游戏上线状态 + $map['tab_game.down_port'] = 1;//游戏端口 第三方接口不能申请 + $map['tab_game.game_status'] = 1;//游戏状态 + $map['tab_game.server_type'] = $serverType;//游戏服务器类型 + + if ($_REQUEST['game_id'] != null) { + $relationGameName = M('Game', 'tab_')->where(array('id' => $_REQUEST['game_id']))->getField('relation_game_name'); + if ($relationGameName) { + $map['tab_game.relation_game_name'] = ['like', $relationGameName]; + } else { + $map['tab_apply.game_id'] = $_REQUEST['game_id']; + } + } + if ($_REQUEST['pattern'] != null) { + $map['tab_apply.pattern'] = $_REQUEST['pattern']; + } + + $page = intval(I('get.p', 0)); + $page = $page ? $page : 1; //默认显示第一页数据 + + if (isset($_REQUEST['row'])) { + $row = $_REQUEST['row']; + } else { + $row = 10; + } + + $data = M("game", "tab_") + /* 查询指定字段,不指定则查询所有字段 */ + ->field("tab_game.id,tab_game.game_size,tab_game.game_name,tab_game.features,tab_game.money,tab_game.sdk_version,tab_game.ratio,tab_game.icon,tab_game.game_type_name,tab_game.recommend_status,promote_id,status,tab_apply.dow_status,tab_apply.plist_url,tab_apply.id as applyid,tab_apply.enable_status,tab_game.sort,tab_game.relation_game_id,tab_game.relation_game_name,tab_game.material_url,dispose_time,tab_apply.promote_money as applymoney,tab_apply.promote_ratio as applyratio,apply_time,tab_apply.status as applystatus,tab_game.and_dow_address,tab_game.ios_dow_address,tab_game.add_game_address,tab_game.ios_game_address") + ->join("tab_apply ON tab_game.id = tab_apply.game_id and tab_apply.promote_id = " . $promoteId) +// ->join("left join tab_game as tg ON (tab_game.id = tg.relation_game_id and tg.game_status = 1 and tab_game.id!=tab_game.relation_game_id) or (tab_game.id = tg.relation_game_id and tab_game.id!=tg.id and tg.game_status = 1) or (tab_game.id!=tab_game.relation_game_id and tab_game.relation_game_id=tg.id and tab_game.game_status=1)") + // 查询条件 + ->where($map) + /* 默认通过id逆序排列 */ + ->order("apply_time desc,id desc") + /* 数据分页 */ + ->page($page, $row) + /* 执行查询 */ + ->select(); + + /* 查询记录总数 */ + $count = count(M("game", "tab_") + /* 查询指定字段,不指定则查询所有字段 */ + ->field("tab_game.*,tab_apply.promote_id,tab_apply.status") + ->join("tab_apply ON tab_game.id = tab_apply.game_id and tab_apply.promote_id = " . $promoteId) + // 查询条件 + ->where($map) + ->select()); + //分页 + + $parameter = array( + 'row' => I('get.row'), + 'sdk_version' => I('request.sdk_version'), + 'p' => I('p', 1), + 'type' => I('request.type'), + 'enable_status' => I('request.enable_status'), + 'game_id' => I('request.game_id'), + ); + + $page = set_pagination($count, $row, $parameter); + if ($page) { + $this->assign('_page', $page); + } + + $promoteRole = empty(I('promote_role')) ? 1 : I('promote_role'); + + $url = "http://" . $_SERVER['HTTP_HOST'] . __ROOT__ . "/media.php/member/preg/pid/" . session("promote_auth.pid"); + $this->assign("url", $url); + $this->assign("count", $count); + $this->assign("row", $row); + $this->assign('loginPromote', $loginPromote); + $this->assign('promoteId', $promoteId); + $this->assign('promoteRole', $promoteRole); + $this->assign('promoteData', getAllPromoteListByType($promoteRole)); + $this->assign('list_data', $data); + $this->assign('serverType', $serverType); + $this->assign('myGame', ($serverType == 1) ? 'specialMyGameList' : 'myGameList'); + $this->assign('game', ($serverType == 1) ? 'gameSpecialList' : 'gameList'); + $this->assign('position', ($serverType == 1) ? '专服管理' : '混服管理'); + $this->meta_title = "我的游戏"; + $this->display('my_game'); + } + + + public function my_game_ch($type = -1, $p = 0) + { + //渠道可申请游戏 + $game_ids = M('promote', 'tab_')->where(['id' => get_pid()])->getField('game_ids'); + if (!empty($game_ids) || $game_ids === '0') { + $game_ids = explode(',', $game_ids); + $map['tab_game.id'] = ['in', $game_ids]; + } + $map['promote_id'] = session("promote_auth.pid"); + $map['tab_game.game_status'] = 1;//游戏状态 + + if ($_REQUEST['game_id'] != null) { + $map['tab_game.relation_game_id'] = $_REQUEST['game_id']; + } + $res = M('game', 'tab_')->where(['relation_game_id' => $_REQUEST['game_id']])->find(); + if (empty($res) && $_REQUEST['game_id']) { + $res_ = M('game', 'tab_')->find($_REQUEST['game_id']); + $map['tab_game.relation_game_id'] = $res_['relation_game_id']; + } + $map['tab_apply.status'] = 0; + + $page = intval($p); + $page = $page ? $page : 1; //默认显示第一页数据 + + $row = 6; + + if (isset($_REQUEST['row'])) { + $row = $_REQUEST['row']; + } else { + $row = 10; + } + + $data = M("game", "tab_") + /* 查询指定字段,不指定则查询所有字段 */ + ->field("tab_game.id,tab_game.game_size,tab_game.game_name,tab_game.money,tab_game.sdk_version,tab_game.ratio,tab_game.icon,tab_game.game_type_name,tab_game.recommend_status,promote_id,status,tab_apply.dow_status,tab_apply.plist_url,tab_apply.id as applyid,enable_status,tab_game.sort,tab_game.relation_game_id,tab_game.relation_game_name,tab_game.material_url,tg.relation_game_id as trelation_game_id,tg.id as tid,tg.sdk_version as tsdk_version,tg.game_size as tgame_size,tg.money as tmoney,tg.ratio as tratio,tg.material_url as tmaterial_url,dispose_time,apply_time,tab_apply.promote_money as applymoney,tab_apply.promote_ratio as applyratio,tab_apply.status as applystatus") + ->join("tab_apply ON tab_game.id = tab_apply.game_id and tab_apply.promote_id = " . session('promote_auth.pid')) + ->join("left join tab_game as tg ON (tab_game.id = tg.relation_game_id and tg.game_status = 1 and tab_game.id!=tab_game.relation_game_id) or (tab_game.id = tg.relation_game_id and tab_game.id!=tg.id and tg.game_status = 1) or (tab_game.id!=tab_game.relation_game_id and tab_game.relation_game_id=tg.id and tab_game.game_status=1)") + // 查询条件 + ->where($map) + /* 默认通过id逆序排列 */ + ->order("id desc") + ->group("relation_game_id") + /* 数据分页 */ + ->page($page, $row) + /* 执行查询 */ + ->select(); + $applymodel = M('apply', 'tab_'); + $launchmodel = M('apply_launch', 'tab_'); + foreach ($data as $key => $value) { + + if ($value['sdk_version'] == 2 && $value['tsdk_version'] == 1) { + $game_ios = get_game_info($value['id']); + $game_and = get_game_info($value['tid']); + $data[$key] = $game_and; + $data[$key]['tid'] = $game_ios['id']; + $data[$key]['tsdk_version'] = $game_ios['sdk_version']; + $data[$key]['tgame_size'] = $game_ios['game_size']; + $data[$key]['tmoney'] = $game_ios['money']; + $data[$key]['tratio'] = $game_ios['ratio']; + $data[$key]['dispose_time'] = $game_ios['dispose_time']; + $data[$key]['tapplymoney'] = $apply_info['promote_money']; + $data[$key]['tapplyratio'] = $apply_info['promote_ratio']; + } + } + + foreach ($data as $key => $value) { + $apply = $applymodel->field('id,status')->where(['promote_id' => get_pid(), 'game_id' => $value['tid']])->find(); + + if ($value['applyid']) { + $platform = $launchmodel->field('platform_id')->where(['apply_id' => $value['applyid']])->find(); + $data[$key]['platform_id'] = $platform['platform_id']; + } else { + $data[$key]['applyid'] = 0; + } + + if ($apply['id']) { + $data[$key]['tapplyid'] = $apply['id']; + $tplatform = $launchmodel->field('platform_id')->where(['apply_id' => $apply['id']])->find(); + $data[$key]['tplatform_id'] = $tplatform['platform_id']; + $data[$key]['tapplystatus'] = $apply['status']; + } else { + $data[$key]['tapplyid'] = 0; + $data[$key]['tapplystatus'] = 0; + } + } + + /* 查询记录总数 */ + $count = count(M("game", "tab_") + /* 查询指定字段,不指定则查询所有字段 */ + ->field("tab_game.*,tab_apply.promote_id,tab_apply.status") + ->join("tab_apply ON tab_game.id = tab_apply.game_id and tab_apply.promote_id = " . session('promote_auth.pid')) + // 查询条件 + ->where($map) + ->group("relation_game_id") + ->select()); + + //分页 + + $parameter = array( + 'row' => I('get.row'), + 'sdk_version' => I('request.sdk_version'), + 'p' => I('p', 1), + 'type' => I('request.type'), + 'enable_status' => I('request.enable_status'), + 'game_id' => I('request.game_id'), + ); + + $page = set_pagination($count, $row, $parameter); + if ($page) { + $this->assign('_page', $page); + } + + + $url = "http://" . $_SERVER['HTTP_HOST'] . __ROOT__ . "/media.php/member/preg/pid/" . session("promote_auth.pid"); + $this->assign("url", $url); + $this->assign("count", $count); + $this->assign('model', $model); + $this->assign('list_data', $data); + $this->meta_title = "我的游戏"; + $this->display(); + } + + + public function child_game($p = 0) + { + $loginPromote = $this->getLoginPromote(); + if ($loginPromote['level'] > 3) { + echo ''; + exit; + } + + if (!empty($_REQUEST['game_id'])) { + $map['tab_apply.game_id'] = $_REQUEST['game_id']; + } + if (!empty($_REQUEST['promote_id'])) { + $map['tab_apply.promote_id'] = $_REQUEST['promote_id']; + } else { + $sid = M('Promote', 'tab_')->field('id')->where(array('parent_id' => PID, 'status' => 1))->select(); + if ($sid) { + $map['tab_apply.promote_id'] = array('in', array_column($sid, 'id')); + } else { + $map['tab_apply.promote_id'] = -1; + } + } + $map['tab_game.game_status'] = 1;//游戏状态 + $start_time = strtotime(I('time_start')); + $end_time = strtotime(I('time_end')); + if (!empty($start_time) && !empty($end_time)) { + $map['tab_apply.dispose_time'] = ['BETWEEN', [$start_time, $end_time + 24 * 60 * 60 - 1]]; + unset($_REQUEST['time_start']); + unset($_REQUEST['time_end']); + } else if (!empty($start_time)) { + $map['tab_apply.dispose_time'] = array('gt', $start_time); + } else if (!empty($end_time)) { + $map['tab_apply.dispose_time'] = array('lt', $end_time + 24 * 60 * 60 - 1); + } + $map['tab_apply.status'] = 1; + + $page = intval($p); + $page = $page ? $page : 1; //默认显示第一页数据 + + + if (isset($_REQUEST['row'])) { + $row = $_REQUEST['row']; + } else { + $row = 10; + } + + $data = M("game", "tab_") + /* 查询指定字段,不指定则查询所有字段 */ + ->field("tab_game.id,tab_game.game_size,tab_game.game_name,tab_game.money,tab_game.sdk_version,tab_game.ratio,tab_game.icon,tab_game.game_type_name,tab_game.recommend_status,promote_id,promote_account,status,tab_apply.dow_status,tab_apply.plist_url,tab_apply.id as applyid,enable_status,tab_game.sort,tab_game.relation_game_id,tab_game.relation_game_name,tab_game.material_url,tg.relation_game_id as trelation_game_id,tg.id as tid,tg.game_name as tgame_name,tg.sdk_version as tsdk_version,tg.game_size as tgame_size,tg.money as tmoney,tg.ratio as tratio,tg.material_url as tmaterial_url,dispose_time,apply_time,promote_account,tab_apply.promote_money as applymoney,tab_apply.promote_ratio as applyratio,tab_apply.status as applystatus") + ->join("tab_apply ON tab_game.id = tab_apply.game_id ") + ->join("left join tab_game as tg ON (tab_game.id = tg.relation_game_id and tg.game_status = 1 and tab_game.id!=tab_game.relation_game_id) or (tab_game.id = tg.relation_game_id and tab_game.id!=tg.id and tg.game_status = 1) or (tab_game.id!=tab_game.relation_game_id and tab_game.relation_game_id=tg.id and tab_game.game_status=1)") + // 查询条件 + ->where($map) + /* 默认通过id逆序排列 */ + ->order("id desc") + ->group("tab_apply.promote_id,relation_game_id") + /* 数据分页 */ + ->page($page, $row) + /* 执行查询 */ + ->select(); + $count = count(M("game", "tab_") + /* 查询指定字段,不指定则查询所有字段 */ + ->field("tab_game.*,tab_apply.promote_id,tab_apply.status") + ->join("tab_apply ON tab_game.id = tab_apply.game_id ") + // 查询条件 + ->where($map) + ->group("tab_apply.promote_id,relation_game_id") + ->select()); + $applymodel = M('apply', 'tab_'); + $launchmodel = M('apply_launch', 'tab_'); + foreach ($data as $key => $value) { + if ($value['sdk_version'] == 2 && $value['tsdk_version'] == 1) { + $game_ios = get_game_info($value['id']); + $game_and = get_game_info($value['tid']); + $apply_info = M('apply', 'tab_')->where(['game_id' => $value['id'], 'promote_account' => $value['promote_account']])->find(); + $data[$key] = $game_and; + $data[$key]['tid'] = $game_ios['id']; + $data[$key]['tsdk_version'] = $game_ios['sdk_version']; + $data[$key]['tgame_size'] = $game_ios['game_size']; + $data[$key]['tmoney'] = $game_ios['money']; + $data[$key]['tratio'] = $game_ios['ratio']; + $data[$key]['applyid'] = $apply_info['id']; + $data[$key]['enable_status'] = $apply_info['enable_status']; + $data[$key]['promote_id'] = $apply_info['promote_id']; + $data[$key]['promote_account'] = $apply_info['promote_account']; + $data[$key]['applymoney'] = $apply_info['promote_money']; + $data[$key]['tapplyratio'] = $apply_info['promote_ratio']; + $data[$key]['tapply_time'] = $apply_info['apply_time']; + $data[$key]['dispose_time'] = $apply_info['apply_time']; + } + } + + foreach ($data as $key => $value) { + $apply = $applymodel->field('id,status')->where(['promote_id' => $value['promote_id'], 'game_id' => $value['tid']])->find(); + + if ($value['applyid']) { + $data[$key]['launch_count'] = $launchmodel->where(['apply_id' => $value['applyid']])->count(); + } else { + $data[$key]['applyid'] = 0; + } + + if ($apply['id']) { + $data[$key]['tapplyid'] = $apply['id']; + $data[$key]['tlaunch_count'] = $launchmodel->where(['apply_id' => $apply['id']])->count(); + $data[$key]['tapplystatus'] = $apply['status']; + } else { + $data[$key]['tapplyid'] = 0; + $data[$key]['tapplystatus'] = 0; + } + } + + //分页 + + + $parameter = $_POST; + $parameter['p'] = I('get.p', 1); + $parameter['row'] = I('get.row'); + + + $page = set_pagination($count, $row, $parameter); + if ($page) { + $this->assign('_page', $page); + } + + + $this->assign("count", $count); + $this->assign('model', $model); + $this->assign('list_data', $data); + $this->meta_title = "子渠道游戏"; + $this->display(); + } + + + public function changevalue() + { + if (IS_POST) { + if (!is_numeric($_REQUEST['id']) || $_REQUEST['id'] <= 0) { + echo json_encode(array('status' => 0, 'info' => '数据有误')); + exit; + } + if (!is_numeric($_REQUEST['value']) || $_REQUEST['value'] < 0) { + echo json_encode(array('status' => 0, 'info' => '数据有误')); + exit; + } + $apply = M('apply', 'tab_'); + if ($_REQUEST['type'] == 1) { + $res = $apply->where(array('id' => $_REQUEST['id']))->setField(array('promote_money' => $_REQUEST['value'])); + if ($res) { + echo json_encode(array('status' => 1, 'info' => '注册单价修改成功')); + exit; + } else { + echo json_encode(array('status' => 0, 'info' => '注册单价修改失败')); + exit; + } + } elseif ($_REQUEST['type'] == 2) { + $res = $apply->where(array('id' => $_REQUEST['id']))->setField(array('promote_ratio' => $_REQUEST['value'])); + if ($res) { + echo json_encode(array('status' => 1, 'info' => '分成比例修改成功')); + exit; + } else { + echo json_encode(array('status' => 0, 'info' => '分成比例修改失败')); + exit; + } + } else { + echo json_encode(array('status' => 0, 'info' => '数据有误')); + exit; + } + } else { + echo json_encode(array('status' => 0, 'info' => '数据有误')); + exit; + } + } + + public function apply_game() + { + if (IS_POST) { + $relation_game_id = $_POST['game_id']; + $sdk_version = $_POST['sdk_version']; + $platform_id = $_POST['platform_id']; + $platform_name = $_POST['platform_name']; + $remark = $_POST['remark']; + $promote_id = is_login_promote(); + if ($promote_id < 1) { + $this->ajaxReturn(['status' => 0, 'msg' => '请登录后再操作'], 'json'); + } + + if (!is_numeric($relation_game_id) || $relation_game_id < 1) { + $this->ajaxReturn(['status' => 0, 'msg' => '缺少游戏'], 'json'); + } + if (!is_numeric($sdk_version) || $sdk_version < 1 || $sdk_version > 2) { + $this->ajaxReturn(['status' => 0, 'msg' => '缺少版本'], 'json'); + } + if ((!is_numeric($platform_id) || $platform_id < 1) && empty($platform_name)) { + $this->ajaxReturn(['status' => 0, 'msg' => '投放平台不能为空'], 'json'); + } + + + $gamemodel = M('Game', 'tab_'); + + $game = $gamemodel->where(['relation_game_id' => $relation_game_id, 'sdk_version' => $sdk_version])->find(); + + if (!is_array($game)) { + $this->ajaxReturn(['status' => 0, 'msg' => '此游戏不存在'], 'json'); + } + + $game_id = $game['id']; + + // 先查投放平台,如有渠道输入则先判断平台是否存在,不存在则添加,存在则获取信息;没有趣的输入,则判断选择平台是否存在,不存在返回 + + $platformmodel = M('launch_platform', 'tab_'); + + + if ($platform_name) { + $platform = $platformmodel->where(['name' => $platform_name])->find(); + + if (empty($platform)) { + $platform_id = $platformmodel->add(['create_time' => time(), 'update_time' => time(), 'name' => $platform_name, 'promote_id' => $promote_id, 'promote_account' => get_promote_account($promote_id), 'mark' => 1]); + } else { + $platform_id = $platform['id']; + } + + } else { + + $platform = $platformmodel->where(['id' => $platform_id])->find(); + if (empty($platform)) { + $this->ajaxReturn(['status' => 0, 'msg' => '投放平台选择有误,请重新选择'], 'json'); + } + + } + + + // 再查申请表,数据是否存在,存在则不予理会,不存在则添加 + + $applymodel = M('Apply', 'tab_'); + + $apply = $applymodel->field('id')->where(['promote_id' => $promote_id, 'game_id' => $game_id])->find(); + if (empty($apply)) { + $data = array( + 'game_id' => $game_id, + 'game_name' => $game['game_name'], + 'promote_id' => $promote_id, + 'promote_account' => session("promote_auth.account"), + 'apply_time' => time(), + 'status' => C('SET_AUTO_PACK'), + 'dispose_time' => C('SET_AUTO_PACK') ? time() : '', + 'sdk_version' => $sdk_version, + 'ratio' => $game['ratio'], + 'money' => $game['money'], + ); + + $exist = C('SET_AUTO_PACK'); + + $apply_id = $applymodel->add($data); + } else { + $apply_id = $apply['id']; + $exist = 1; + } + + if ($platform_id > 0 && $apply_id > 0) { + + $launchmodel = M('apply_launch', 'tab_'); + + $launch = $launchmodel->field('position')->where(['platform_id' => $platform_id, 'apply_id' => $apply_id])->order('launch_time desc')->find(); + + + $data = array( + 'platform_id' => $platform_id, + 'apply_id' => $apply_id, + 'launch_game_id' => $game_id, + 'launch_time' => time(), + 'position' => $launch['position'] > 0 ? (intval($launch['position']) + 1) : 1, + 'remark' => $remark, + ); + + $res = $launchmodel->add($data); + + if ($res > 0) { + $this->ajaxReturn(['status' => 1, 'msg' => '申请成功', 'exist' => $exist], 'json'); + } else { + $this->ajaxReturn(['status' => 0, 'msg' => '申请失败'], 'json'); + } + + + } else { + $this->ajaxReturn(['status' => 0, 'msg' => '申请失败,请重新申请'], 'json'); + } + } else { + $this->ajaxReturn(['status' => 0, 'msg' => '请求有误'], 'json'); + } + } + + /* + * APP申请 + */ + public function app_index() + { + + $map['tab_app.type'] = 1; + empty(I('version')) || $map['tab_app.version'] = I('version'); + $promote_id = PID; + $data = M('app', 'tab_') + ->field('tab_app.*,p.status as apply_status,p.dow_url,p.enable_status,p.promote_id') + ->join("left join tab_app_apply p on p.app_id = tab_app.id and p.promote_id = {$promote_id}") + ->where($map) + ->select(); + $this->assign('data', $data); + $this->meta_title = "APP申请"; + $this->display(); + } + + //app申请 + public function apply_app($app_id) + { + $app = M('app', 'tab_')->find($app_id); + $map['app_id'] = $app_id; + $map['promote_id'] = PID; + $data = M('app_apply', 'tab_')->where($map)->find(); + if (!empty($data)) { + $res['status'] = 2; + $res['msg'] = '该渠道已经申请过此APP!'; + } else { + $data['promote_id'] = PID; + $data['app_id'] = $app_id; + $data['app_name'] = $app['name']; + $data['app_version'] = $app['version']; + $data['apply_time'] = time(); + $data['status'] = 0; + + $result = M('app_apply', 'tab_')->add($data); + if ($result !== false) { + $res['status'] = 1; + $res['msg'] = '申请成功'; + } else { + $res['status'] = 2; + $res['msg'] = '申请失败'; + } + } + $this->ajaxReturn($res); + } + + //打包 + public function allpackage($ids = null, $game_id = 0) + { + if (empty($ids)) { + $gameData = M('Game', 'tab_')->find($game_id); + $model = new ApplyModel(); //D('Apply'); + $data['game_id'] = $_POST['game_id']; + $data['game_name'] = get_game_name($game_id); + $data['promote_id'] = session("promote_auth.pid"); + $data['promote_account'] = session("promote_auth.account"); + $data['apply_time'] = NOW_TIME; + $data['status'] = 1; + $data['enable_status'] = 2; + $data['dispose_id'] = 0; + $data['dispose_time'] = NOW_TIME; + $data['sdk_version'] = $gameData['sdk_version']; + $data['ratio'] = $gameData['ratio']; + $data['money'] = $gameData['money']; + $result = $model->add($data); + if ($result > 0) { + $this->success("已加入打包队列,刷新此页面可查看当前打包状态"); + } else { + $this->error('打包失败'); + } + } else { + $map['id'] = $ids; + $data = array('status' => 1, 'enable_status' => 2); + M('apply', 'tab_')->where($map)->setField($data); + $this->success("已加入打包队列,刷新此页面可查看当前打包状态"); + exit; + } + } + + /** + *APP打包 + */ + public function app_package($appid = null) + { + $appData = M('app', 'tab_')->find($appid); + $map['app_id'] = $appid; + $map['promote_id'] = PID; + $ids = 0; + $data = M('app_apply', 'tab_')->where($map)->find(); + if (empty($data)) { + $data['promote_id'] = PID; + $data['app_id'] = $appid; + $data['app_name'] = $appData['name']; + $data['app_version'] = $appData['version']; + $data['apply_time'] = time(); + $data['status'] = 1; + $data['enable_status'] = 1; + $data['dispose_id'] = 0; + $data['dispose_time'] = NOW_TIME; + $result = M('app_apply', 'tab_')->add($data); + $ids = $result; + } else { + $ids = $data['id']; + } + try { + $apply_data = M('app_apply', 'tab_')->find($ids); + #获取原包数据 + $source_file = M('app', 'tab_')->find($apply_data['app_id']); + + if ($apply_data['app_version'] == 1) { + $app_type = ".apk"; + $url_ver = "META-INF/mch.properties"; + } else { + $app_type = ".ipa"; + $url_ver = "Payload/XiGuMobileGame.app/_CodeSignature/mch.txt"; + } + $newname = "app_package" . $apply_data["app_id"] . "-" . $apply_data['promote_id'] . $app_type; + $to = "./Uploads/GamePack/" . $newname; + copy($source_file['file_url'], $to); + #打包新路径 + $zip = new \ZipArchive; + $res = $zip->open($to, \ZipArchive::CREATE); + if ($res == TRUE) { + #打包数据 + $pack_data = array( + "promote_id" => $apply_data['promote_id'], + "promote_account" => get_promote_name($apply_data["promote_id"]), + ); + $zip->addFromString($url_ver, json_encode($pack_data)); + $zip->close(); + if (get_tool_status("oss_storage") == 1) { + $to = "http://" . C("oss_storage.bucket") . "." . C("oss_storage.domain") . "/GamePack/" . $newname; + $to = str_replace('-internal', '', $to); + $new_to = "./Uploads/GamePack/" . $newname; + $updata['savename'] = $newname; + $updata['path'] = $new_to; + + $this->upload_game_pak_oss($updata); + @unlink($new_to); + } elseif (get_tool_status("qiniu_storage") == 1) { + $this->dleteQiNiuFile($newname); + $url = $this->upQiNiuFile($newname, $to); + @unlink($to); + $to = "http://" . $url; + } elseif (get_tool_status("cos_storage") == 1) { + $cos = A('Cos'); + $cos->cosupload("", "/App/" . $newname, 2); + $cos_res = $cos->cosupload($to, "/App/" . $newname); + if (strlen($cos_res) > 10) { + @unlink($to); + $to = $cos_res; + + } else { + $this->error("Cos参数错误"); + } + } + + if ($apply_data['app_version'] == 2) { + $plist_url = A('Plist')->create_plist_app('1', $apply_data['promote_id'], 'app', $to); + $apply_data['plist_url'] = $plist_url; + } + $apply_data['dow_url'] = $to; + $apply_data['enable_status'] = 1; + $apply_data['status'] = 1; + $res = M('app_apply', 'tab_')->save($apply_data); + } else { + $this->error('解压文件失败'); + } + $this->success('打包成功'); + } catch (\Exception $e) { + $this->error($e->getMessage()); + } + } + + public function promitionofregestion() + { + $map['relation_game_id'] = $_GET['gid']; + $data = M('game', 'tab_')->field('id,sdk_version,icon,screenshot,relation_game_id,relation_game_name')->where($map)->select(); + $this->assign('data', $data); + $this->display(); + } + + public function qrcode($url = '', $logo = '', $level = 3, $size = 4) + { + $url = base64_decode(base64_decode($url)); + $logo = base64_decode(base64_decode($logo)); + Vendor('phpqrcode.phpqrcode'); + $errorCorrectionLevel = intval($level);//容错级别 + $matrixPointSize = intval($size);//生成图片大小 + //生成二维码图片 +// echo $_SERVER['REQUEST_URI']; + ob_clean(); + echo \QRcode::png($url, false, $errorCorrectionLevel, $matrixPointSize, 2, false, $logo); + } + + /** + *上传到OSS + */ + public function upload_game_pak_oss($return_data = null) + { + /** + * 根据Config配置,得到一个OssClient实例 + */ + try { + Vendor('OSS.autoload'); + $ossClient = new \OSS\OssClient(C("oss_storage.accesskeyid"), C("oss_storage.accesskeysecr"), C("oss_storage.domain")); + } catch (OssException $e) { + $this->error($e->getMessage()); + } + + $bucket = C('oss_storage.bucket'); + + // if(preg_match('/.apk/',$return_data['savename']) ){ + $oss_name = "GamePack"; + // }else{ + // $oss_name="IosGamePack"; + // } + $oss_file_path = $oss_name . "/" . $return_data["savename"]; + + + $avatar = $return_data["path"]; + try { + + $this->multiuploadFile($ossClient, $bucket, $oss_file_path, $avatar); + return true; + } catch (OssException $e) { + /* 返回JSON数据 */ + $this->error($e->getMessage()); + } + } + + public function multiuploadFile($ossClient, $bucket, $url, $file) + { + //$file = __FILE__; + $options = array(); + try { + #初始化分片上传文件 + $uploadId = $ossClient->initiateMultipartUpload($bucket, $url); + //$ossClient->multiuploadFile($bucket, $url, $file, $options); + } catch (OssException $e) { + printf(__FUNCTION__ . ": initiateMultipartUpload FAILED\n"); + printf($e->getMessage() . "\n"); + return; + } + /* + * step 2. 上传分片 + */ + $partSize = 5 * 1000 * 1024; + $uploadFile = $file; + $uploadFileSize = filesize($uploadFile); + $pieces = $ossClient->generateMultiuploadParts($uploadFileSize, $partSize); + $responseUploadPart = array(); + $uploadPosition = 0; + $isCheckMd5 = true; + foreach ($pieces as $i => $piece) { + $fromPos = $uploadPosition + (integer)$piece[$ossClient::OSS_SEEK_TO]; + $toPos = (integer)$piece[$ossClient::OSS_LENGTH] + $fromPos - 1; + $upOptions = array( + $ossClient::OSS_FILE_UPLOAD => $uploadFile, + $ossClient::OSS_PART_NUM => ($i + 1), + $ossClient::OSS_SEEK_TO => $fromPos, + $ossClient::OSS_LENGTH => $toPos - $fromPos + 1, + $ossClient::OSS_CHECK_MD5 => $isCheckMd5, + ); + if ($isCheckMd5) { + $contentMd5 = \OSS\Core\OssUtil::getMd5SumForFile($uploadFile, $fromPos, $toPos); + $upOptions[$ossClient::OSS_CONTENT_MD5] = $contentMd5; + } + //2. 将每一分片上传到OSS + try { + $responseUploadPart[] = $ossClient->uploadPart($bucket, $url, $uploadId, $upOptions); + } catch (OssException $e) { + printf(__FUNCTION__ . ": initiateMultipartUpload, uploadPart - part#{$i} FAILED\n"); + printf($e->getMessage() . "\n"); + return; + } + } + $uploadParts = array(); + foreach ($responseUploadPart as $i => $eTag) { + $uploadParts[] = array( + 'PartNumber' => ($i + 1), + 'ETag' => $eTag, + ); + } + /** + * step 3. 完成上传 + */ + try { + $ossClient->completeMultipartUpload($bucket, $url, $uploadId, $uploadParts); + } catch (OssException $e) { + printf(__FUNCTION__ . ": completeMultipartUpload FAILED\n"); + printf($e->getMessage() . "\n"); + return; + } + } + + + /** + * 投放平台列表 + * @param integer $applyid 申请表编号 + * @author 鹿文学 + */ + public function launch($applyid = 0, $p = 1) + { + + if (is_numeric($applyid) && $applyid > 0) { + $launchmodel = M('apply_launch', 'tab_'); + $page = intval($p); + $page = $page ? $page : 1; //默认显示第一页数据 + $map = ['apply_id' => $applyid]; + $count = $launchmodel->alias('l') + ->join('tab_apply as a on(a.id=l.apply_id) ') + ->where($map)->count(); + if ($count > 0) { + if (isset($_REQUEST['row'])) { + $row = $_REQUEST['row']; + } else { + $row = 10; + } + + $list = $launchmodel->alias('l')->field('l.*,a.game_id,a.promote_id,a.promote_id,a.sdk_version,a.enable_status') + ->join('tab_apply as a on(a.id=l.apply_id) ') + ->where($map)->page($page, $row)->select(); + $game = M('game', 'tab_')->where(['id' => $list[0]['launch_game_id']])->field('game_status,dow_status')->find(); + if ($game['dow_status'] == 0 || $game['game_status'] == 0) { + foreach ($list as $key => $v) { + unset($list[$key]['launch_down_url']); + unset($list[$key]['launch_plist_url']); + } + } + $page = set_pagination($count, $row); + if ($page) { + $this->assign('_page', $page); + } + $this->assign('list_data', $list); + $this->assign('is_launch', 1); + } else { + $list = M('apply', 'tab_')->where(['id' => $applyid])->find(); + $game = M('game', 'tab_')->where(['id' => $list['game_id']])->field('game_status,dow_status')->find(); + if ($game['dow_status'] == 0 || $game['game_status'] == 0) { + unset($list['pack_url']); + unset($list['plist_url']); + } + $this->assign('list_data', [$list]); + $this->assign('is_launch', 0); + } + } + $this->assign('relation_game_id', I('get.rgid', '')); + $this->assign('notchild', stripos($_SERVER['HTTP_REFERER'], 'child_game') ? 0 : 1); + $this->display(); + + } + + function getPromoteListByRole() + { + $promoteRole = I('promote_role'); + $data = array(); + + switch ($promoteRole) { + case 2: + case 3: + case 4: + $data = getAllPromoteListByType($promoteRole); + break; + } + + $this->ajaxReturn($data); + } + + public function getGameInfo() + { + $promote = $this->getLoginPromote(); + $promoteService = new PromoteService(); + if (!$promoteService->canPresidentApplyGame($promote)) { + $this->ajaxReturn([ + 'status' => 0, + 'message' => '请联系市场专员开启', + 'data' => [ + ] + ]); + } + + $gameId = I('game_id'); + $promoteType = I('promote_type'); + $gameData = array(); + + if ($gameId > 0) { + $map['id'] = $gameId; + + $gameData = M('Game', 'tab_') + ->where($map) + ->find(); + } + + $gameData['sdk_name'] = getSDKTypeName($gameData['sdk_version']); + + $promotes = getAllPromoteListByType($promoteType); + + $newPromoteData = []; + if (count($promotes) > 0) { + + $promoteIds = array_column($promotes, 'id'); + $oldIds = M('apply', 'tab_')->where(['game_id' => $gameId, 'promote_id' => ['in', $promoteIds], 'offline_status' => 0])->getField('id', true); + $newPromoteIds = array_diff($promoteIds, $oldIds); + foreach ($promotes as $promote) { + if (in_array($promote['id'], $newPromoteIds)) { + $newPromoteData[] = $promote; + } + } + } + + $data['game_data'] = $gameData; + $data['promote_data'] = $newPromoteData; + + $this->ajaxReturn([ + 'status' => 1, + 'message' => '获取成功', + 'data' => $data + ]); + } + + function addGameToPromote() + { + $loginPromote = $this->getLoginPromote(); + $gameId = I('game_id'); + $promoteIds = I('promote_ids'); + + if (empty($gameId)) { + $data['status'] = -1; + $data['msg'] = '游戏id错误'; + + $this->ajaxReturn($data); + } + + if (empty($promoteIds)) { + $data['status'] = -1; + $data['msg'] = '未选择渠道'; + + $this->ajaxReturn($data); + } + + $gameData = M('Game', 'tab_')->where(array('id' => $gameId))->find(); + + foreach ($promoteIds as $value) { + $thisPromoteData = D('Promote')->where(array('id' => $value))->find(); + + if (empty($thisPromoteData) || !hasPromotePermission($loginPromote['id'], $value)) { + $data['status'] = -1; + $data['msg'] = '渠道权限异常'; + + $this->ajaxReturn($data); + } + + $map['game_id'] = $gameId; + $map['promote_id'] = $value; + $applyData = M('apply', 'tab_')->field('id,offline_status')->where($map)->find(); + + $updateStatus = 0; + if (!empty($applyData)) { + if ($applyData['offline_status'] == 0) { + continue; + } else { + $updateStatus = 1; + } + } + + $save['promote_account'] = $thisPromoteData['account']; + $save['apply_time'] = NOW_TIME; + $save['ratio'] = $gameData['ratio']; + $save['money'] = $gameData['money']; + $save['offline_status'] = 0; + + $gameSource = M('Game_source', 'tab_')->field('id,source_version')->where(['game_id' => $gameId])->find(); + if (!file_exists(get_game_source_file_url($gameId)) || null == $gameSource) { + $save['enable_status'] = -1; + } else { + $save['enable_status'] = 2; + } + + if ($updateStatus == 0) { + $save['sdk_version'] = $gameData['sdk_version']; + $save['game_id'] = $gameId; + $save['game_name'] = get_game_name($gameId); + $save['promote_id'] = $value; + $save['status'] = C('SET_AUTO_PACK'); + + $res = M('Apply', 'tab_')->add($save); + } else { + $res = M('Apply', 'tab_')->where('id = ' . $applyData['id'])->save($save); + } + + if (!$res) { + $this->ajaxReturn(array("status" => -1, "msg" => "添加失败", 'ret' => $res)); + } + } + + $this->ajaxReturn(array("status" => 0, "msg" => "添加成功")); + } + + public function getEnableStatus() + { + $applyId = I('post.apply_id'); + + if (empty($applyId)) { + $this->ajaxReturn(['status' => 0, 'msg' => '数据异常']); + } + + $map['id'] = $applyId; + $enableStatus = M('Apply', 'tab_')->where($map)->getField('enable_status'); + + $this->ajaxReturn(['status' => 1, 'data' => $enableStatus]); + } + + public function backDetailData() + { //返回详情数据 + $result = ['code' => 10001, 'msg' => "该游戏信息不存在,请确认!", 'error' => 1, 'info' => '']; + $id = $_POST['id']; + if (empty($id)) { + $this->ajaxReturn($result); + } + $gameInfo = M('Game', 'tab_')->where(['id' => $id])->getField('detail_content'); + if (!$gameInfo) { + $this->ajaxReturn($result); + } else { + $result['code'] = 10000; + $result['msg'] = "获取信息成功"; + $result['error'] = -1; + $result['info'] = $gameInfo; + $this->ajaxReturn($result); + + } + } + + public function getDownloadUrl() + { + $gameId = I('game_id', 0); + $promoteId = I('promote_id', 0); + $promote = $this->getLoginPromote(); + if ($promoteId == 0) { + $promoteId = $promote['id']; + } + $apply = M('apply', 'tab_')->where(['promote_id' => $promoteId, 'game_id' => $gameId])->find(); + $game = M('game', 'tab_')->field(['id', 'icon', 'apply_auth'])->where(['id' => $gameId])->find(); + if ($apply == null) { + $this->ajaxReturn([ + 'status' => 0, + 'message' => '游戏不存在', + 'data' => [ + ] + ]); + } + + $applyService = new ApplyService(); + if (!$applyService->checkSociatyPerm($promote, $game)) { + $this->ajaxReturn([ + 'status' => 0, + 'message' => '该游戏未授权', + 'data' => [ + ] + ]); + } + + $promoteService = new PromoteService(); + if (!$promoteService->canPresidentApplyGame($promote)) { + $this->ajaxReturn([ + 'status' => 0, + 'message' => '请联系市场专员开启', + 'data' => [ + ] + ]); + } + + $icon = Request::getHost() . '/' . get_cover($game['icon'], 'path'); + + $result = $applyService->checkApplyStatus($apply); + if (!$result['status']) { + $this->ajaxReturn([ + 'status' => 0, + 'message' => $result['message'], + 'data' => [ + ] + ]); + } + $url = $applyService->getDownloadUrl($apply); + $this->ajaxReturn([ + 'status' => 1, + 'message' => '获取成功', + 'data' => [ + 'url' => $url, + ] + ]); + } + + public function getLandingPageUrl() + { + $gameId = I('game_id', 0); + $promoteId = I('promote_id', 0); + $promote = $this->getLoginPromote(); + if ($promoteId == 0) { + $promoteId = $promote['id']; + } + + $apply = M('apply', 'tab_')->where(['promote_id' => $promoteId, 'game_id' => $gameId])->find(); + $game = M('game', 'tab_')->field(['icon', 'apply_auth', 'id'])->where(['id' => $gameId])->find(); + + if ($apply == null) { + $this->ajaxReturn([ + 'status' => 0, + 'message' => '游戏不存在', + 'data' => [ + ] + ]); + } + + $applyService = new ApplyService(); + if (!$applyService->checkSociatyPerm($promote, $game)) { + $this->ajaxReturn([ + 'status' => 0, + 'message' => '该游戏未授权', + 'data' => [ + ] + ]); + } + + $promoteService = new PromoteService(); + if (!$promoteService->canPresidentApplyGame($promote)) { + $this->ajaxReturn([ + 'status' => 0, + 'message' => '请联系市场专员开启', + 'data' => [ + ] + ]); + } + + $icon = Request::getHost() . '/' . get_cover($game['icon'], 'path'); + + $result = $applyService->checkApplyStatus($apply); + if (!$result['status']) { + $this->ajaxReturn([ + 'status' => 0, + 'message' => $result['message'], + 'data' => [ + ] + ]); + } + + $url = $applyService->getLandingPageUrl($apply); + $this->ajaxReturn([ + 'status' => 1, + 'message' => '获取成功', + 'data' => [ + 'url' => $url, + ] + ]); + } +} diff --git a/Application/Home/Controller/PromoteController.class.php b/Application/Home/Controller/PromoteController.class.php index c6ecc94fa..552a20130 100644 --- a/Application/Home/Controller/PromoteController.class.php +++ b/Application/Home/Controller/PromoteController.class.php @@ -2043,7 +2043,7 @@ class PromoteController extends BaseController $gameId = $_POST['game_id']; $promoteId = $_POST['promote_id']; $applyService = new ApplyService(); - $applyService->cancelGame($gameId, $promoteId); + $applyService->offlineGame($gameId, $promoteId); recordPromoteLogs('游戏管理','专服管理下架游戏'); $this->ajaxReturn(['status' => true, 'msg' => '下架成功']); } diff --git a/Application/Home/View/default/Game/index.html b/Application/Home/View/default/Game/index.html new file mode 100644 index 000000000..b58688ec1 --- /dev/null +++ b/Application/Home/View/default/Game/index.html @@ -0,0 +1,815 @@ + + + + + + + + + + + + + + + + +
+
+
+
当前位置:游戏管理>{$position}
+
+ 游戏列表 +
+
+ +
+
+
    + +
      +
    • + +

      + + 请选择渠道搜索 + + 暂无数据 + +

      +
    • +
    + + +
  • +
    +
    + +
    +
    +
    + {$game.game_name} +
    +

    {$game.features}详情

    +

    + 平台:{:getSDKTypeName($game['sdk_version'])} + 版本:{$game.version} + 大小:{$game.game_size} + 游戏类型:{$game.game_type_name} +

    +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    +
    +
  • +
    +
    +
+
+
+ {$pagination} +
+
+
+
+ + + + + + +
+ + +
+ + + + + + + + + + diff --git a/Application/Home/View/default/Promote/children.html b/Application/Home/View/default/Promote/children.html index 25894b64b..951a786e5 100644 --- a/Application/Home/View/default/Promote/children.html +++ b/Application/Home/View/default/Promote/children.html @@ -282,6 +282,7 @@ $(function(){ click: function () { if ($(this).val() == 2) { $('#shift-transfer').show() + $('#shift-transfer').css({display: 'block'}) } else { $('#shift-transfer').hide() } @@ -458,7 +459,7 @@ $(function(){ title: shiftTypeName, type: 1, content: box, - area: ['600px', '600px'], + area: ['600px', '650px'], zIndex: 250, }) } diff --git a/Application/Home/View/default/Public/bases.html b/Application/Home/View/default/Public/bases.html index 7270884b5..31b92fb10 100644 --- a/Application/Home/View/default/Public/bases.html +++ b/Application/Home/View/default/Public/bases.html @@ -40,39 +40,41 @@ -
-
-