'预告', '2' => '开服', '3' => '删档内测', '4' => '不删档内测', '5' => '公测', ]; /** * 找游戏 */ public function index() { $gameModel = new GameModel; $where = []; if(input('type')){ $where['game.type'] = intval(input('type')); } if(input('subject')){ $where['game.subject'] = intval(input('subject')); } //获取游戏分类列表 $gameTypeList = Db::connect(config('database_slave'))->table('cy_gametype')->cache(Config::get('QUERY_RESULT_CACHE_TIME'))->select(); //游戏题材表 $gameSubjectList = Db::connect(config('database_slave'))->table('cy_gamesubject')->cache(Config::get('QUERY_RESULT_CACHE_TIME'))->select(); //查询参数 $param = input('get.'); $list = $gameModel->cache(Config::get('QUERY_RESULT_CACHE_TIME')) ->alias('game') ->join('cy_gameinfo info', 'game.id = info.game_id','left') ->join('cy_sdkgamelist sdk', 'game.id=sdk.gameid and sdk.package_type=0 and sdk.upload_status=1 and sdk.channel_id='.MEMBER_DEFAULT_CHANNEL_ID,'left') ->field('game.id,game.nickname,game.power,info.androidurl,info.platform,game.pinyin,info.mobileicon,game.type,game.subject,sdk.filename') ->where(['game.cooperation_status' => ['in','1,2'],'game.is_show' => 1]) ->where($where) ->order('game.create_time desc') ->paginate(25, false, array('query' => $param)) ->each(function ($item, $key){ $item['icon'] = STATIC_DOMAIN.$item['mobileicon']; $item['size'] = getSize($item); $item['download'] = getDownload($item); $item['url'] = getGameUrl($item['id']); return $item; }); //游戏分类一维数组 $gameType = arrayColumnByObject($gameTypeList,'name','id'); //游戏题材一维数组 $gameSubject = arrayColumnByObject($gameSubjectList,'name','id'); //文章内页广告推荐 $adList = Db::connect(config('database_slave'))->table('cy_ad')->cache(Config::get('QUERY_RESULT_CACHE_TIME'))->field('id,title,url,image')->where(['type'=>8])->order('sort asc,create_time asc')->limit(0,2)->select(); // var_dump($adList); //顶部推荐 $topBannerList = Db::connect(config('database_slave'))->table('cy_ad')->cache(Config::get('QUERY_RESULT_CACHE_TIME'))->field('id,title,url,image')->where(['type'=>1])->order('sort asc,create_time asc')->limit(0,5)->select(); foreach ($topBannerList as &$ad) { $ad['url'] = preg_match("/^http(s)?:\\/\\/.+/",$ad['url']) ? $ad['url'] : 'http://' . $ad['url']; } $this->assign('gameTypeList',$gameTypeList); $this->assign('gameSubjectList',$gameSubjectList); $this->assign('gameType',$gameType); $this->assign('gameSubject',$gameSubject); $this->assign('topBannerList',$topBannerList); $this->assign('adList',$adList); $this->assign('list',$list); $this->assign('page', $list->render()); $title = '手机游戏_祈盟文化'; if(intval(input('type')) || intval(input('subject'))){ if(intval(input('type')) && intval(input('subject'))){ $title = $gameSubject[intval(input('subject'))].'_'.$gameType[intval(input('type'))].$title; } else if(intval(input('type'))){ $title = $gameType[intval(input('type'))].$title; } else if(intval(input('subject'))){ $title = $gameSubject[intval(input('subject'))].$title; } } $seo['title'] = $title; $seo['keywords'] = '找手机游戏,手机游戏大全,手机游戏排行榜,好玩的手机游戏'; $seo['description'] = '祈盟文化找游戏频道免费为玩家提供最新最好玩的手机游戏下载,同时也提供最热门的手机游戏排行榜和各种手机游戏分类筛选服务。'; $this->assign('seo',$seo); return $this->fetch(); } public function detail() { $gameModel = new GameModel; $gameid = intval(input('id')); $type = trim(input('type')); if(in_array($type,['index','news','gift','kfkc'])){ if($type=='index'){ return $this->info(); } else if($type=='news'){ return $this->news(); } else if($type=='gift'){ return $this->gift(); } else{ return $this->server(); } } else{ return $this->info(); } } public function info() { $gameModel = new GameModel; $gameid = intval(input('id')); if(!$gameid) { // throw new Exception("游戏不存在"); $this->_abort404(); } $this->gameDetail('info'); return $this->fetch(); } private function news() { $gameModel = new GameModel; $gameid = intval(input('id')); if(!$gameid) { // throw new Exception("游戏不存在"); $this->_abort404(); } $this->gameDetail('news'); $newsModel = new NewsModel; $list = $newsModel->cache(Config::get('QUERY_RESULT_CACHE_TIME')) ->alias('a') ->join('cy_content b', 'a.id = b.id','left') ->field('a.id,a.title,a.image,a.jlink,a.create_time,a.total,a.zhiding,a.type,a.gameid,b.content') ->where(['a.gameid'=>$gameid,'a.isdelete' => 0,'a.type'=>['in','1,2,3,4,5']]) ->order('a.create_time DESC') ->paginate(10, false) ->each(function ($item, $key){ $item['image'] = STATIC_DOMAIN.$item['image']; $item['url'] = getNewsUrl($item['id'],$item['jlink']); $item['createdate'] = date('Y-m-d',$item['create_time']); $item['createtime'] = date('H:i:s',$item['create_time']); $item['cutcontent'] = getCutcontent($item['content']); return $item; }); $this->assign('list',$list); $this->assign('page', $list->render()); return $this->fetch('info-news'); } private function gift() { $gameModel = new GameModel; $gameid = intval(input('id')); if(!$gameid) { // throw new Exception("游戏不存在"); $this->_abort404(); } $this->gameDetail('gift'); $where = [ 'a.gameid' => $gameid, 'a.isdelete' => 0, 'a.endtime' => ['gt',NOW_TIMESTAMP], 'b.is_show' => 1, 'b.cooperation_status' => ['in',[0,1,2]] ]; $list = Db::connect(config('database_slave'))->table('cy_libaoinfo')->cache(Config::get('QUERY_RESULT_CACHE_TIME'))->alias('a') ->join('cy_game b','a.gameid = b.id') ->join('cy_gameinfo info', 'b.id=info.game_id', 'left') ->field('a.id,a.gameid,a.title,a.content,a.total,a.used,a.starttime,a.endtime,info.mobileicon') ->where($where) ->where('a.total > a.used') ->order('a.create_time DESC') ->paginate(10, false) ->each(function ($item, $key){ $used = $item['used']; $total = $item['total']; $item['percent'] = '100%'; if ( $used >= $total ) { $item['percent'] = '0%'; } else if ( $used && $total ) { $item['percent'] = (bcsub( 1, bcdiv($used, $total, 2), 2 ) * 100) . '%'; } $item['mobileicon'] = STATIC_DOMAIN.$item['mobileicon']; $item['starttime'] = date('Y-m-d H:i',$item['starttime']); $item['endtime'] = date('Y-m-d H:i',$item['endtime']); return $item; }); $this->assign('list',$list); $this->assign('page', $list->render()); return $this->fetch('info-gift'); } private function server() { $gameModel = new GameModel; $gameid = intval(input('id')); if(!$gameid) { // throw new Exception("游戏不存在"); $this->_abort404(); } $this->gameDetail('server'); $kcServers = $this->getGameServer($gameid,1); // var_dump($kcServers); $kfServers = $this->getGameServer($gameid,0); // var_dump($kfServers); $this->assign('kcServers',$kcServers['list']); $this->assign('kcPage',$kcServers['page']); $this->assign('kfServers',$kfServers['list']); $this->assign('kfPage',$kfServers['page']); return $this->fetch('info-server'); } private function gameDetail($p_type='info') { $gameModel = new GameModel; $gameid = intval(input('id')); if(!$gameid) { // throw new Exception("游戏不存在"); $this->_abort404(); } $detail = $gameModel->cache(Config::get('QUERY_RESULT_CACHE_TIME')) ->alias('game') ->join('cy_gameinfo info', 'game.id = info.game_id','left') ->join('cy_gametype t', 'game.type = t.id','left') ->join('cy_gamesubject s', 'game.subject = s.id','left') ->join('cy_sdkgamelist sdk', 'game.id=sdk.gameid and sdk.package_type=0 and sdk.upload_status=1 and sdk.channel_id='.MEMBER_DEFAULT_CHANNEL_ID,'left') ->field('game.id,game.nickname,game.power,info.androidurl,info.platform,game.pinyin,info.mobileicon,game.type,game.subject,info.developer,info.bigimage,t.name as typename,s.name as subjectname,info.description,sdk.filename') ->where(['game.id'=>$gameid,'game.cooperation_status' => ['in','0,1,2'],'game.is_show' => 1]) ->find(); // var_dump($detail); if ( empty($detail)) { // throw new Exception("游戏不存在或无效"); $this->_abort404(); } else{ $detail['icon'] = STATIC_DOMAIN.$detail['mobileicon']; $detail['size'] = getSize($detail); $detail['version'] = getVersion($detail); $detail['updatetime'] = getUpdateTime($detail); $detail['download'] = getDownload($detail); $detail['screenShot'] = getScreenShot($detail['bigimage']); $detail['typename'] = getTypename($detail['typename']); $detail['subjectname'] = getSubjectname($detail['subjectname']); $detail['developer'] = getDeveloper($detail['developer']); } // var_dump($detail); //获取最新上线游戏列表 $newGameList = $gameModel->cache(Config::get('QUERY_RESULT_CACHE_TIME')) ->alias('game') ->join('cy_gameinfo info', 'game.id = info.game_id') ->join('cy_gametype t', 'game.type = t.id','left') ->join('cy_gamesubject s', 'game.subject = s.id','left') ->field('game.id,game.nickname,game.power,info.androidurl,info.platform,game.pinyin,info.mobileicon,game.type,game.subject,t.name as typename,s.name as subjectname') ->where(['game.cooperation_status' => ['in','1,2'],'game.is_show' => 1]) ->order('game.create_time desc,game.xulie desc') ->limit(9) ->select(); foreach ( $newGameList as &$game ) { $game['icon'] = STATIC_DOMAIN.$game['mobileicon']; $game['size'] = getSize($game); $game['typename'] = getTypename($game['typename']); $game['subjectname'] = getSubjectname($game['subjectname']); $game['url'] = getGameUrl($game['id']); } //猜你喜欢游戏列表(读取和当前详情页的游戏相同类型 或者 题材的游戏,不重复显示同一款游戏而且不包括当前详情页的这款游戏) $relGameList = array(); $whereSql = ''; if(intval($detail['type']) || intval($detail['subject'])){ if(intval($detail['type']) && intval($detail['subject'])){ $whereSql = '(game.type='.intval($detail['type']).') or (game.subject='.intval($detail['subject']).')'; } else if(intval($detail['type'])){ $whereSql = '(game.type='.intval($detail['type']).')'; } else if(intval($detail['subject'])){ $whereSql = '(game.subject='.intval($detail['subject']).')'; } } if($whereSql){ $relGameList = $gameModel->cache(Config::get('QUERY_RESULT_CACHE_TIME')) ->alias('game') ->join('cy_gameinfo info', 'game.id = info.game_id') ->join('cy_gametype t', 'game.type = t.id','left') ->join('cy_gamesubject s', 'game.subject = s.id','left') ->field('game.id,game.nickname,game.power,info.androidurl,game.pinyin,info.mobileicon,game.type,game.subject,t.name as typename,s.name as subjectname') ->where(['game.cooperation_status' => ['in','1,2'],'game.is_show' => 1,'game.id' => ['neq',$gameid]]) ->where($whereSql) ->orderRaw('rand()') ->limit(14) ->select(); foreach ( $relGameList as &$game ) { $game['icon'] = STATIC_DOMAIN.$game['mobileicon']; $game['size'] = getSize($game); $game['typename'] = getTypename($game['typename']); $game['subjectname'] = getSubjectname($game['subjectname']); $game['url'] = getGameUrl($game['id']); } } // var_dump($relGameList); //文章内页广告推荐 $adList = Db::connect(config('database_slave'))->table('cy_ad')->cache(Config::get('QUERY_RESULT_CACHE_TIME'))->field('id,title,url,image')->where(['type'=>99])->order('sort asc,create_time asc')->limit(0,1)->select(); foreach ( $adList as &$ad ) { $ad['image'] = getNewsImage($ad['image']); } // var_dump($adList); if($p_type=='info'){ $title = $detail['nickname'].'下载_祈盟文化'; } else if($p_type=='news'){ $title = $detail['nickname'].'资讯攻略_祈盟文化'; } else if($p_type=='gift'){ $title = $detail['nickname'].'礼包_祈盟文化'; } else if($p_type=='server'){ $title = $detail['nickname'].'开服开测_祈盟文化'; } else{ $title = $detail['nickname'].'下载_祈盟文化'; } $seo['title'] = $title; $seo['keywords'] = $detail['nickname'].','.$detail['nickname'].'下载,'.$detail['nickname'].'安卓版,'.$detail['nickname'].'攻略,'.$detail['nickname'].'资讯,'.$detail['nickname'].'礼包,'.$detail['nickname'].'开服,'.$detail['nickname'].'开测'; $seo['description'] = '祈盟文化'.$detail['nickname'].'手游专区,为您免费提供'.$detail['nickname'].'安卓版游戏下载,最实用的'.$detail['nickname'].'手游攻略资讯,还有'.$detail['nickname'].'礼包激活码等你拿,欢迎来祈盟文化下载'.$detail['nickname'].'。'; $this->assign('seo',$seo); $this->assign('detail',$detail); $this->assign('newGameList',$newGameList); $this->assign('adList',$adList); $this->assign('relGameList',$relGameList); } /** * 开服、开测--列表 */ public function getGameServer($game_id,$type) { /*$type = $this->request->param('t',1,'intval');*/ if (!in_array($type,[0,1])) $type = 0; $game_id = intval($game_id); $where = [ 'gameid'=>intval($game_id), 'type'=>$type, 'isdelete'=>0, ]; $nowtime = NOW_TIMESTAMP; if($type==1){ $list = Db::connect(config('database_slave'))->table('cy_serverinfo')->cache(Config::get('QUERY_RESULT_CACHE_TIME')) ->field('id,gameid,sername,sertime,serstatus,type,sercertype') ->where($where) ->where("( ( sertime > {$nowtime} and sercertype = 1 ) or sercertype = 2 )") ->order('sercertype asc,sertime asc') ->paginate(10, false, array('path'=>'javascript:AjaxTestPage([PAGE]);',)) ->each(function ($item, $key){ $td = date("Y-m-d"); $tm = date("Y-m-d",strtotime("+1 day")); $item['subscribe'] = 1; // 预约游戏 $item['serverName'] = ''; if ($item['sercertype'] == 1){ if(date("Y-m-d",$item['sertime']) == $td){ $item['serverDate'] = '今日'; $item['serverTime'] = date('H:i',$item['sertime']); } else if(date("Y-m-d",$item['sertime']) == $tm){ $item['serverDate'] = '明日'; $item['serverTime'] = date('H:i',$item['sertime']); } else{ $item['serverDate'] = date('m',$item['sertime']).'月'.date('d',$item['sertime']).'日'; $item['serverTime'] = date('H:i',$item['sertime']); } if( $item['sertime'] <= NOW_TIMESTAMP + 60*60){ $item['subscribe'] = 0; } } else{ $item['serverDate'] = '长期有效'; $item['serverTime'] = '长期有效'; $item['subscribe'] = 0; } if($item['type'] == 1){ $item['serverName'] = $this->_serstatus[$item['serstatus']]; } else{ $item['serverName'] = $item['sername']; } return $item; }); } else{ $list = Db::connect(config('database_slave'))->table('cy_serverinfo')->cache(Config::get('QUERY_RESULT_CACHE_TIME')) ->field('id,gameid,sername,sertime,serstatus,type,sercertype') ->where($where) ->where("( ( sertime > {$nowtime} and sercertype = 1 ) or sercertype = 2 )") ->order('sercertype asc,sertime asc') ->paginate(10, false, array('path'=>'javascript:AjaxServicePage([PAGE]);',)) ->each(function ($item, $key){ $td = date("Y-m-d"); $tm = date("Y-m-d",strtotime("+1 day")); $item['subscribe'] = 1; // 预约游戏 $item['serverName'] = ''; if ($item['sercertype'] == 1){ if(date("Y-m-d",$item['sertime']) == $td){ $item['serverDate'] = '今日'; $item['serverTime'] = date('H:i',$item['sertime']); } else if(date("Y-m-d",$item['sertime']) == $tm){ $item['serverDate'] = '明日'; $item['serverTime'] = date('H:i',$item['sertime']); } else{ $item['serverDate'] = date('m',$item['sertime']).'月'.date('d',$item['sertime']).'日'; $item['serverTime'] = date('H:i',$item['sertime']); } if( $item['sertime'] <= NOW_TIMESTAMP + 60*60){ $item['subscribe'] = 0; } } else{ $item['serverDate'] = '长期有效'; $item['serverTime'] = '长期有效'; $item['subscribe'] = 0; } if($item['type'] == 1){ $item['serverName'] = $this->_serstatus[$item['serstatus']]; } else{ $item['serverName'] = $item['sername']; } return $item; }); } $TempDate = ''; foreach ( $list as &$item ) { if($item['serverDate'] == $TempDate){ $item['serverDate'] = ''; } else{ $TempDate = $item['serverDate']; } } return ['list'=>$list,'page'=>$list->render()]; } // 搜索游戏关键字 public function ajaxGameList() { $keyword = input('keyword'); $list = (new GameModel())->cache(Config::get('QUERY_RESULT_CACHE_TIME'))->alias('game') ->join('cy_gameinfo info', 'game.id = info.game_id') ->join('cy_sdkgamelist sdk', 'game.id=sdk.gameid and sdk.package_type=0 and sdk.upload_status=1 and sdk.channel_id='.MEMBER_DEFAULT_CHANNEL_ID,'left') ->where(['game.cooperation_status' => ['in','1,2'],'game.is_show' => 1]) ->where('game.nickname|game.pinyin','like','%'. $keyword .'%') ->field('LENGTH(game.nickname) as tLen,LOCATE("'.$keyword.'",game.nickname) as tIndex,LOCATE("'.$keyword.'",game.pinyin) as cIndex,game.id,game.nickname') ->order('tIndex,cIndex,tLen,game.create_time desc') ->limit(10) ->select(); foreach ($list as $key => &$value) { $value['nickname'] = preg_replace("/($keyword)/i","\\1",$value['nickname']); } return $list; } public function download() { $gameModel = new GameModel; $gameid = intval(input('id')); if(!$gameid) { $this->_abort404(); } $this->gameDetail('info'); return $this->fetch(); } /** * 获取 我的游戏 */ public function _getMyGame($where,$equipment=1){ $list = model('MemberChannelGame') ->cache(Config::get('QUERY_RESULT_CACHE_TIME')) ->alias('a') ->join('cy_members b','a.member_id = b.id') ->join('cy_game c','a.game_id = c.id') ->join('cy_gameinfo info', 'c.id = info.game_id') ->join('cy_sdkgamelist sdk', 'c.id=sdk.gameid and sdk.package_type=0 and sdk.upload_status=1 and sdk.channel_id='.MEMBER_DEFAULT_CHANNEL_ID,'left') ->field('c.id,c.nickname,c.is_show,c.cooperation_status,c.subject,c.type,info.mobileicon,sdk.filename,c.pinyin') ->where($where) /*->orderRaw("field(c.is_show,1) and field(c.cooperation_status,0,1,2) desc, field(c.is_show,0) and field(c.cooperation_status,0,1,2) desc, c.nickname asc")*/ ->orderRaw("field(c.is_show,1) and field(c.cooperation_status,0,1,2) desc, field(c.is_show,0) and field(c.cooperation_status,0,1,2) desc, convert(c.nickname using gbk) asc") /*->orderRaw("c.nickname asc")*/ ->paginate(10, false, array('path'=>'javascript:AjaxGamePage([PAGE]);')) ->each(function ($item, $key)use($equipment){ $item['download'] = ''; $item['gstatus'] = '已下架'; if ($item['is_show']){ if ($item['cooperation_status'] != 3) $item['gstatus'] = '正常'; $item['download'] = getDownload($item); }else{ if ($item['cooperation_status'] != 3) $item['gstatus'] = '非运营状态'; } $item['icon'] = STATIC_DOMAIN.$item['mobileicon']; /*$item['size'] = getSize($item);*/ $item['subject_name'] = Db::connect(config('database_slave'))->cache(Config::get('QUERY_RESULT_CACHE_TIME'))->table('cy_gamesubject')->where('id',$item['subject'])->value('name') ? : '未知'; $item['type_name'] = Db::connect(config('database_slave'))->cache(Config::get('QUERY_RESULT_CACHE_TIME'))->table('cy_gametype')->where('id',$item['type'])->value('name') ? : '未知'; $item['gameUrl'] = getGameUrl($item['id'],$equipment); return $item; }); return ['list'=>$list,'page'=>$list->render()]; } /** * 猜你喜欢 * @param int $isRand 是否在最新游戏前100条中随机挑n款出来 1是,0否 * @param array $condition 附加搜索条件 * @param int $num 挑n款出来 * @param int $equipment 1pc端,2手机端 */ public function _guessLikeGame($isRand=0,$condition=[],$num=10,$equipment=1){ $gameModel = (new GameModel); $where = [ 'game.is_show' => 1 , 'game.cooperation_status' => ['in' , [1 , 2]] , 'game.nickname' => ['neq' , ''] , ]; $notinId = []; if (!empty($condition['game.id'])) { $notinId['game.id'] = $condition['game.id']; unset($condition['game.id']); } $sqlStr = ''; foreach ($condition as $k=>$v){ if (isset($v[1]) && count($v[1])) { $itemStr = '('.implode(',',$v[1]).')'; $sqlStr .= $k.' '.$v[0] . ' '. $itemStr . ' or '; } } if (strlen($sqlStr) > 3)$sqlStr = substr($sqlStr,0,-3); if ($isRand) { $idArr = $gameModel->cache(Config::get('QUERY_RESULT_CACHE_TIME'))->alias('game')->where($where)->order('game.xulie desc')->limit(0 , 100)->column('game.id,game.name'); if(count($idArr) < $num){ $num = count($idArr); } $keyArr = array_rand($idArr , $num); $where['game.id'] = ['in' , $keyArr]; } $guessLike = $gameModel->cache(Config::get('QUERY_RESULT_CACHE_TIME'))->alias('game') ->join('cy_gameinfo info' , 'game.id = info.game_id') ->join('cy_gametype t' , 'game.type = t.id' , 'left') ->join('cy_gamesubject s' , 'game.subject = s.id' , 'left') ->join('cy_sdkgamelist sdk' , 'game.id=sdk.gameid and sdk.package_type=0 and sdk.upload_status=1 ' , 'left') ->field('game.id,game.nickname,game.power,info.androidurl,game.pinyin,info.mobileicon,game.type,game.subject,t.name as type_name,s.name as subject_name,sdk.filename') /*->fetchSql(true)*/ ->where($where) ->where($sqlStr) ->where($notinId) ->group('game.id') ->orderRaw("rand()") ->limit($num) ->select(); /*dump($guessLike);exit;*/ foreach ($guessLike as &$game) { $game['icon'] = STATIC_DOMAIN.$game['mobileicon']; $game['size'] = getSize($game); $game['type_name'] = getTypename($game['type_name']); $game['subject_name'] = getSubjectname($game['subject_name']); $game['gameUrl'] = getGameUrl($game['id'],$equipment); $game['download'] = getDownload($game); } return empty($guessLike) ? [] : $guessLike; } }