diff --git a/Application/Admin/Controller/GameController.class.php b/Application/Admin/Controller/GameController.class.php index 993f7b4b1..111b5fa45 100644 --- a/Application/Admin/Controller/GameController.class.php +++ b/Application/Admin/Controller/GameController.class.php @@ -17,6 +17,8 @@ use BaiduBce\Services\Bos\CannedAcl; use BaiduBce\Services\Bos\BosOptions; use BaiduBce\Auth\SignOptions; use BaiduBce\Log\LogFactory; +use Admin\Model\AuthRuleModel; +use Admin\Model\AuthGroupModel; use Base\Service\GameService; /** @@ -301,9 +303,46 @@ class GameController extends ThinkController } } + public function delSociatyGames() { + $res = ['code' => 10000]; + $id = $_REQUEST['id']; + $delRest = M('sociaty_games','tab_')->where(['id'=>$id])->delete(); + if($delRest) { + $res['code'] = 10001; + $this->ajaxReturn($res); + } + } + public function edit($id = null) { if (IS_POST) { + if(!empty($_REQUEST['apply_auth'])) { + $gameData['apply_auth'] = $_REQUEST['apply_auth']; + $game_appid = $_REQUEST['game_appid']; + $gameId = M('game','tab_')->where(['game_appid' => $game_appid])->getField('id'); + M('game','tab_')->where(['id'=>$gameId])->save($gameData); + if($_REQUEST['apply_auth'] == 1) { + M('sociaty_games','tab_')->where(['game_id'=>$gameId])->delete(); + } + if(!empty($_REQUEST['promote_data'])) { + $promote_data = json_decode($_REQUEST['promote_data'],TRUE); + $game_appid = $_REQUEST['game_appid']; + $gameId = M('game','tab_')->where(['game_appid' => $game_appid])->getField('id'); + $gameInfo = M('game','tab_')->field('game_name,game_status')->where(['id'=>$gameId])->select(); + $dataList = array(); + foreach($promote_data as $key => $promoteInfo) { + $isSociaty = M('sociaty_games','tab_')->where(['promote_id'=>intval($promoteInfo['value']),'game_id'=>intval($gameId)])->getField('id'); + if(!empty($isSociaty)) { + // $this->error("选择会长中有已存在会长"); + }else { + $dataList[] = ['promote_id' => intval($promoteInfo['value']),'game_id' => intval($gameId),'status'=>$gameInfo[0]['game_status'],'create_time'=>time()]; + } + + } + M('sociaty_games','tab_')->addAll($dataList); + } + // $_REQUEST['apply_auth'] == 1 ? $this->success('开放全部会长权限成功') : $this->success('设置会长权限成功'); + } if ($_POST['game_score'] < 0 || $_POST['game_score'] > 5) { $this->error('游戏评分只能为0-5之间的数字!'); exit; @@ -419,7 +458,30 @@ class GameController extends ThinkController $data['icon_data'] = explode(',', $data['icon']); } - + $apply_auth = M('game','tab_')->where(['id'=>$id])->getField('apply_auth'); + $this->assign('apply_auth',$apply_auth); + $sociatyGames = M('sociaty_games','tab_')->where(['game_id'=>$id])->select(); + $sociatyGamesData = []; + if(!empty($sociatyGames)) { + foreach($sociatyGames as $key => $value) { + $sociatyGamesData[$key]['id'] = $value['id']; + if($value['promote_id'] == -1) { + $sociatyGamesData[$key]['promoteAccount'] = "官方渠道"; + }else { + $promoteAccount = M('promote','tab_')->where(['id'=>$value['promote_id']])->getField('account'); + $sociatyGamesData[$key]['promoteAccount'] = $promoteAccount; + } + $sociatyGamesData[$key]['create_time'] = date('Y-m-d H:i:s',$value['create_time']); + $applyStatus = M('apply','tab_')->field('id')->where(['game_id'=>$value['game_id'],'status'=>1])->select(); + if(empty($applyStatus)) { + $sociatyGamesData[$key]['isPromote'] = "否"; + }else { + $sociatyGamesData[$key]['isPromote'] = "是"; + } + } + } + $this->assign('sociatygames',$sociatyGamesData); + $data['introduction'] = str_replace("~~", "\r\n", $data['introduction']); $this->assign('data', $data); $this->assign('game_id', $id); @@ -430,6 +492,11 @@ class GameController extends ThinkController $this->m_title = '游戏列表'; $this->assign('commonset', M('Kuaijieicon')->where(['url' => 'Game/lists', 'status' => 1])->find()); $this->assign('game_ratio',$game_ratio); + $auth_group = M('AuthGroup')->where( array('status'=>array('egt','0'),'module'=>'admin','type'=>AuthGroupModel::TYPE_ADMIN) ) + ->getfield('id,id,title,rules'); + $empower_type = M('AuthGroup')->field('data_empower_type')->where(array('id'=>1))->find(); + $this->assign('data_empower_type', $empower_type['data_empower_type']); + $this->assign('auth_group', $auth_group); $this->display(); } } @@ -906,4 +973,92 @@ class GameController extends ThinkController //M('cp_game_ratio', 'tab_')->where("id=".$_POST['data_id'])->data(array("is_del"=>"1","update_time"=>time()))->save(); echo(json_encode(array("result"=>"1","desc"=>"删除成功"))); } + + + public function uploadExcel1() { + Vendor("PHPExcel.PHPExcel"); + $gid = $_REQUEST['game_id']; + if(@is_uploaded_file($_FILES['file']['tmp_name'])){ + $upfile = $_FILES["file"]; + $name = $upfile["name"]; + $type = $upfile["type"]; + $size = $upfile["size"]; + $tmp_name = $upfile["tmp_name"]; + $savePath = $_SERVER['DOCUMENT_ROOT'].__ROOT__.'/Uploads/Excel/'; + move_uploaded_file($tmp_name,$savePath.$name); + $file_name = $savePath.$name; + $error=$upfile["error"];//上传后系统返回的值 + $extension = strtolower( pathinfo($file_name, PATHINFO_EXTENSION) ); + if($extension == 'xlsx') { + $objReader = \PHPExcel_IOFactory::createReader('excel2007'); + }elseif($extension == 'csv') { + $objReader = \PHPExcel_IOFactory::createReader('csv'); + }else { + $objReader = \PHPExcel_IOFactory::createReader('Excel5');//创建读取实例 + } + $objPHPExcel = $objReader->load($file_name,$encode='utf-8');//加载文件 + $sheet = $objPHPExcel->getSheet(0); + $highestRow = $sheet->getHighestRow(); + $highestColumn = $sheet->getHighestColumn(); + $dataList = []; + $outPromote = []; //录入出错的会长 + $outGame = []; //录入出错的游戏 + $successAccount = []; + $keyPro = 0; + $keyGame = 0; + $keyData = 0; + for($i=2;$i<=$highestRow;$i++) + { + $promoteAccount = $objPHPExcel->getActiveSheet()->getCell("A".$i)->getValue(); + $promoteInfo = M('promote','tab_')->field('id')->where(['account' => $promoteAccount ])->find(); + if($promote_id == -1) {$promoteInfo['account'] = "官方渠道"; } + if(empty($promoteInfo)) { + $outPromote[$keyPro]['promote_account'] = $promoteAccount; + $keyPro += 1; + }else { + $promote_id = $promoteInfo['id']; + } + $gameInfo = M('game','tab_')->field('game_name,game_status')->where(['id'=>$gid])->select(); + $time = time(); + $isSociaty = M('sociaty_games','tab_')->where(['promote_id'=>$promote_id,'game_id'=>$gid])->getField('id'); + if(empty($isSociaty) && !empty($gameInfo) && !empty($promoteInfo)) { + $dataList[$keyData] = ['promote_id'=>$promote_id,'game_id'=>$gid,'status'=>$gameInfo[0]['game_status'],'create_time'=>$time]; + $successAccount[$keyData] = ['account'=>$promoteAccount]; + $keyData += 1; + } + + } + $backData['outPromote'] = $outPromote; + $backData['datalist'] = $successAccount; + M('sociaty_games','tab_')->addAll($dataList); + $gameData['apply_auth'] = 2; + M('game','tab_')->where(['id'=>$gid])->save($gameData); + $this->ajaxReturn(json_encode($backData,TRUE)); + + } + } + + function getRootPromote() { + $promoteData = M('promote','tab_')->field('id as value,account as title')->where(array('level'=>1,'chain'=>'/'))->select(); + $data_president = M('AuthGroup')->field('data_president')->where(array('id'=>1))->find(); + + $promoteData = array_merge([0=>['value'=>'-1','title'=>'官方渠道']],$promoteData); + + $returnData = array('data_president'=>$data_president['data_president'],'list'=>$promoteData); + $this->ajaxReturn(json_encode($returnData)); + } + + //下载模板 + public function downloadDemo() { + $game_id = $_REQUEST['game_id']; + $game_name = M('game','tab_')->where(['id'=>$game_id])->getField('game_name'); + $data[] = [ + 'promoteid' => "官方渠道", + ]; + $field = array( + "promoteid"=>"会长账号", + ); + data2csv($data,'【'.$game_name.'】'.'模板',$field); + } + } diff --git a/Application/Admin/View/Game/edit.html b/Application/Admin/View/Game/edit.html index 714f470e7..fc6163e8f 100644 --- a/Application/Admin/View/Game/edit.html +++ b/Application/Admin/View/Game/edit.html @@ -44,6 +44,7 @@
  • 参数配置
  • H5分享页面
  • 用户等级设置
  • +
  • 推广配置
  • 编辑游戏【{$data.relation_game_name}】

    说明:查看和编辑游戏的基础信息、下载设置、参数信息等。

    @@ -923,7 +924,92 @@ + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    会长账号添加时间是否已进行推广操作
    aOh! 暂时还没有内容!
    {$data['promoteAccount']}{$data['create_time']}{$data['isPromote']}移除
    该游戏未设置会长权限,现面对所有会长开放!
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    @@ -952,7 +1038,198 @@ + + + + diff --git a/Application/Base/Service/ApplyService.class.php b/Application/Base/Service/ApplyService.class.php index 5590f5924..fc5fb7926 100644 --- a/Application/Base/Service/ApplyService.class.php +++ b/Application/Base/Service/ApplyService.class.php @@ -197,4 +197,30 @@ class ApplyService { parse_str($items['query'], $params); return $params; } + + public function checkSociatyPerm($promote, $game) + { + if ($game['apply_auth'] == 1) { + return true; + } + $promoteService = new PromoteService(); + $topPromote = $promoteService->getTopPromote($promote); + $record = M('sociaty_games', 'tab_')->where(['game_id' => $game['id'], 'promote_id' => $topPromote['id']])->find(); + if ($record['status'] == 1) { + return true; + } else { + return false; + } + } + + public function getSociatyGameIds($promote) + { + $promoteService = new PromoteService(); + $topPromote = $promoteService->getTopPromote($promote); + $tempIds = M('sociaty_games', 'tab_')->where(['promote_id' => $topPromote['id']])->getField('game_id', true); + $tempIds = $tempIds ?? []; + $ids = M('game', 'tab_')->where(['apply_auth' => 1])->getField('id', true); + $ids = $ids ?? []; + return array_merge($tempIds, $ids); + } } \ No newline at end of file diff --git a/Application/Home/Controller/ApplyController.class.php b/Application/Home/Controller/ApplyController.class.php index 60ded3316..a50f68bb1 100644 --- a/Application/Home/Controller/ApplyController.class.php +++ b/Application/Home/Controller/ApplyController.class.php @@ -66,11 +66,11 @@ class ApplyController extends BaseController { $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);//游戏添加权限 + $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;//游戏端口 第三方接口不能申请 @@ -92,6 +92,10 @@ class ApplyController extends BaseController $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); @@ -115,9 +119,12 @@ class ApplyController extends BaseController } 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'; diff --git a/Application/Home/Controller/HomeController.class.php b/Application/Home/Controller/HomeController.class.php index eea52d404..4dd36a07b 100644 --- a/Application/Home/Controller/HomeController.class.php +++ b/Application/Home/Controller/HomeController.class.php @@ -154,8 +154,8 @@ class HomeController extends Controller $this->error('该链接已被禁'); } + $applyService = new ApplyService(); if ($code != '') { - $applyService = new ApplyService(); $data = $applyService->decodeApplyCode($code); $result = $applyService->checkApplyCode($data, ApplyService::ENCRYPT_TYPE_LANDING_PAGE); if (!$result['status']) { @@ -173,6 +173,7 @@ class HomeController extends Controller $columns = [ 'id', 'sdk_version', + 'apply_auth', 'icon', 'screenshot', 'relation_game_id', @@ -193,6 +194,11 @@ class HomeController extends Controller $map = ['id' => intval($gameId)]; $game = M('game', 'tab_')->field($columns)->where($map)->find(); + $promote = M('promote', 'tab_')->field(['id', 'parent_id', 'chain', 'level'])->where(['id' => $promoteId])->find(); + if (!$applyService->checkSociatyPerm($promote, $game)) { + $this->error('该链接已经停止使用'); + } + if ($game['sdk_version'] == 1 && $isIOS) { $map = []; $map['relation_game_id'] = $game['relation_game_id']; @@ -207,6 +213,9 @@ class HomeController extends Controller $apply = M('apply', 'tab_')->field(['game_id', 'enable_status', 'promote_id']) ->where(['promote_id' => $promoteId, 'game_id' => $game['id']]) ->find(); + if (!$apply) { + $this->error('该链接已经停止使用'); + } $game['icon'] = get_cover($game['icon'], 'path'); $gameSource = M('GameSource', 'tab_')->field(['create_time', 'org_plist_url', 'is_new_sdk'])->where(array('game_id' => $game['id']))->find(); diff --git a/Application/Home/Controller/PackageController.class.php b/Application/Home/Controller/PackageController.class.php index f881c67a7..b7c4160a5 100644 --- a/Application/Home/Controller/PackageController.class.php +++ b/Application/Home/Controller/PackageController.class.php @@ -40,8 +40,9 @@ class PackageController extends Controller if ($isBlack) { $this->redirect("package/downloadError", ['message' => '该链接已被禁']); } + + $applyService = new ApplyService(); if ($code != '') { - $applyService = new ApplyService(); $data = $applyService->decodeApplyCode($code); $result = $applyService->checkApplyCode($data, ApplyService::ENCRYPT_TYPE_DOWNLOAD); if (!$result['status']) { @@ -59,7 +60,16 @@ class PackageController extends Controller $map['promote_id'] = $promoteId; $columns = ['game_id', 'promote_id', 'promote_account', 'pack_url', 'plist_url', 'status', 'enable_status']; $apply = M('apply','tab_')->field($columns)->where($map)->find(); - $game = M('game','tab_')->field(['id', 'game_name', 'sdk_version'])->where(['id' => $apply['game_id']])->find(); + if (!$apply) { + $this->redirect("package/downloadError", ['message' => '该链接已经停止使用']); + } + + $promote = M('promote', 'tab_')->field(['id', 'parent_id', 'chain', 'level'])->where(['id' => $promoteId])->find(); + $game = M('game','tab_')->field(['id', 'game_name', 'sdk_version', 'apply_auth'])->where(['id' => $apply['game_id']])->find(); + if (!$applyService->checkSociatyPerm($promote, $game)) { + $this->redirect("package/downloadError", ['message' => '该链接已经停止使用']); + } + if (Request::isMobile()) { if (!Request::isAndroid() && $game['sdk_version'] == 1) { diff --git a/Data/update.sql b/Data/update.sql index 36e91ea72..9c55299df 100644 --- a/Data/update.sql +++ b/Data/update.sql @@ -1074,6 +1074,22 @@ CREATE TABLE `sys_document_pop_rules` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +--会长设置推广配置-- + +CREATE TABLE `tab_sociaty_games` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `promote_id` int(11) NOT NULL COMMENT '会长ID', + `game_id` int(11) NOT NULL COMMENT '游戏ID', + `status` tinyint(1) NOT null DEFAULT '0' COMMENT '状态 0 禁用 1 启用', + `create_time` int(10) NOT NULL DEFAULT '0' COMMENT '创建时间', + `update_time` int(10) NOT NULL DEFAULT '0' COMMENT '更新时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT '工会授权游戏'; + +--游戏会长申请权限-- +ALTER TABLE `tab_game` + ADD COLUMN `apply_auth` INT(11) NULL DEFAULT '1' COMMENT '申请权限(1为全部可申请2为部分会长可申请)' AFTER `game_detail_cover`; + -- 2020-01-14 -- cxj ALTER TABLE `tab_promote_game_ratio`