You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

656 lines
27 KiB
PHTML

5 years ago
<?php
namespace Mobile\Controller;
use Think\Controller;
use App\Model\AdvModel;
/**
* 首页
*/
class IndexController extends BaseController {
protected function _initialize(){
$config = api('Config/lists');
C($config);
}
public function index(){
$adv = get_adv_data(['in','wap_index,and_wap_index_gift,ios_wap_index_gift,wap_index_gg,wap_index_zx,wap_index_activity']);
foreach ($adv as $key => $value) {
if($value['name']=='wap_index'){
$wap_index[]=$value;
unset($adv[$key]);
}
if($value['name']=='and_wap_index_gift'){
$and_wap_index_gift=$value;
unset($adv[$key]);
if($and_wap_index_gift['game_id'] != 0){
if(is_mobile_request()){
$gmap['giftbag_version'] = get_devices_type();
}
$gmap['status'] = 1;
$gmap['display_site'] = ['like','%'. DISPLAY_SITE .'%'];
$gmap['novice'] = array('neq','');
$time = NOW_TIME;
$gmap['game_id'] = $and_wap_index_gift['game_id'];
$gmap['start_time'] = ['elt',$time];
$gmap['_string'] = "end_time > {$time} or end_time = 0";
$gdata = M('giftbag','tab_')->where($gmap)->find();
if(empty($gdata)){
$and_wap_index_gift['game_id'] = 0;
}
}
}
if($value['name']=='ios_wap_index_gift'){
$ios_wap_index_gift=$value;
unset($adv[$key]);
if($ios_wap_index_gift['game_id'] != 0){
if(is_mobile_request()){
$gmap['giftbag_version'] = get_devices_type();
}
$gmap['status'] = 1;
$gmap['display_site'] = ['like','%'. DISPLAY_SITE .'%'];
$gmap['novice'] = array('neq','');
$time = NOW_TIME;
$gmap['game_id'] = $ios_wap_index_gift['game_id'];
$gmap['start_time'] = ['elt',$time];
$gmap['_string'] = "end_time > {$time} or end_time = 0";
$gdata = M('giftbag','tab_')->where($gmap)->find();
if(empty($gdata)){
$ios_wap_index_gift['game_id'] = 0;
}
}
}
if($value['name']=='wap_index_gg'){
$wap_index_gg=$value;
unset($adv[$key]);
}
if($value['name']=='wap_index_zx'){
$wap_index_zx=$value;
unset($adv[$key]);
}
if($value['name']=='wap_index_activity'){
$wap_index_activity=$value;
unset($adv[$key]);
}
}
foreach ($wap_index as $k1 => $v1) {
if(strpos($v1['url'],'http')===false){
$wap_index[$k1]['url'] = U('Game/detail',array('id'=>$v1['url']));
}
}
$this->assign('wap_index',$wap_index);
if(get_devices_type()==1){
$this->assign('wap_index_gift',$and_wap_index_gift);
}elseif(get_devices_type()==2){
$this->assign('wap_index_gift',$ios_wap_index_gift);
}else{
$this->assign('wap_index_gift',$and_wap_index_gift['id']>$ios_wap_index_gift['id']?$and_wap_index_gift:$ios_wap_index_gift);
}
if(strpos($wap_index_gg['url'],'http')===false){
$wap_index_gg['url'] = U('Game/detail',array('id'=>$wap_index_gg['url']));
}
if(strpos($wap_index_zx['url'],'http')===false){
$wap_index_zx['url'] = U('Game/detail',array('id'=>$wap_index_zx['url']));
}
if(strpos($wap_index_activity['url'],'http')===false){
$wap_index_activity['url'] = U('Game/detail',array('id'=>$wap_index_activity['url']));
}
$this->assign('wap_index_gg',$wap_index_gg);
$this->assign('wap_index_zx',$wap_index_zx);
$this->assign('wap_index_activity',$wap_index_activity);
$promote_id = empty(PROMOTE_ID) ? 0 : PROMOTE_ID;
$rebate_join = "and (r.promote_id = {$promote_id} or r.promote_id = -1)";
$time = NOW_TIME;
$model = M('Game','tab_');
//热门游戏
$devices = get_devices_type();
$game_h['g.recommend_status'] = 2;
$game_h['g.game_status'] = 1;
$game_h['g.display_site'] = ['like','%'. DISPLAY_SITE .'%'];
$game_h['g.sdk_version'] = array('like','%'.$devices.'%');
if(is_cache() && S('moblie_index_hot')){
$hot=S('moblie_index_hot');
}else{
$hot = $model
->alias('g')
->field('g.id,g.relation_game_id,g.relation_game_name,g.sdk_version,g.down_port,g.id as game_id,g.game_name,g.icon,g.dow_num,g.marking,IF(g.down_port=1,s.file_size,g.game_address_size) as game_size,g.game_score,g.dow_status,g.features,g.and_dow_address,g.ios_dow_address,g.add_game_address,g.ios_game_address,g.game_address_size,g.bind_recharge_discount as discount,s.pack_name,IFNULL(r.ratio,0) as ratio')
//游戏原包
->join("left join tab_game_source as s on s.game_id = g.id")
//返利
->join("left join tab_rebate r on r.game_id = g.id {$rebate_join} and r.starttime < {$time} and (endtime = 0 or endtime > {$time})")
->where($game_h)
->page(0,7)
->order('g.sort desc,g.id desc')
->select();
if(is_cache()){
S('moblie_index_hot',$hot);
}
foreach ($hot as $key => $value) {
if(!is_mobile_request()){
$hot[$key]['relation_game_name'] = $value['game_name'];
}
}
}
$this->assign('hot',$hot);
$media_gg = $this->newzixun('notice_wap');
$media_activity = $this->newzixun('activity_wap');
$media_zx = $this->newzixun('news_wap');
$this->assign('media_gg',$media_gg);
$this->assign('media_activity',$media_activity);
$this->assign('media_zx',$media_zx);
$where['g.game_status'] = 1;
$where['g.display_site'] = ['like','%'. DISPLAY_SITE .'%'];
$where['g.apply_status'] = 1;
$where['g.online_status'] = 1;
$where['g.sdk_version'] = array('like','%'.$devices.'%');
if(is_cache() && S('moblie_rank_new')){
$ranknew=S('moblie_rank_new');
}else{
$where['g.recommend_status'] = 3;
$order = 'g.sort desc,g.id desc';
$ranknew = $this->rank($where,$order);
if(is_cache()){
S('moblie_rank_new',$ranknew);
}
}
$this->assign('ranknew',$ranknew);
if(is_cache() && S('moblie_rank_rec')){
$rankrec=S('moblie_rank_rec');
}else{
$where['g.recommend_status'] = 1;
$order = 'g.sort desc,g.id desc';
$rankrec = $this->rank($where,$order);
if(is_cache()){
S('moblie_rank_rec',$rankrec);
}
}
$this->assign('rankrec',$rankrec);
if(is_cache() && S('moblie_rank_hot')){
$rankhot=S('moblie_rank_hot');
}else{
$where['g.recommend_status'] = 2;
$order = 'g.sort desc,g.id desc';
$rankhot = $this->rank($where,$order);
if(is_cache()){
S('moblie_rank_hot',$rankhot);
}
}
$this->assign('rankhot',$rankhot);
if(is_cache() && S('moblie_rank_dow')){
$rankdow=S('moblie_rank_dow');
}else{
$order = 'g.dow_num desc,g.id desc';
unset($where['g.recommend_status']);
$rankdow = $this->rank($where,$order);
if(is_cache()){
S('moblie_rank_dow',$rankdow);
}
}
$this->assign('rankdow',$rankdow);
//礼包
$this->gift();
//开服
$this->server();
//热门游戏(实质为推荐游戏)
$this->recommend();
$this->display();
}
private function recommend(){
$devices = get_devices_type();
$model = array(
'm_name'=>'Game',
'prefix'=>'tab_',
'map' =>array('game_status'=>1,'recommend_status'=>1,'sdk_version'=>$devices,'display_site'=>['like','%' . DISPLAY_SITE . '%']),
'field' =>'*,min(id) as id',
'order' =>'sort desc,id desc',
'group' =>'relation_game_id',
'limit' =>'0,4',
);
if(is_cache() && S('index_reco')){
$reco=S('index_reco');
}else{
$reco = self::list_data($model);
if(is_cache() ){
S('index_reco',$reco);
}
}
$reco=game_merge($reco,$model['map']);
// var_dump($reco);die;
$this->assign('recommend',$reco);
}
protected function list_data($model){
$game = M($model['m_name'],$model['prefix']);
$map = $model['map'];
$data = $game
->field($model['field'])
->limit($model['limit'])
->where($map)
->group($model['group'])
->order($model['order'])
->select();
return $data;
}
private function server(){
$devices = get_devices_type();
$time = time();
$where['start_time'] = ['lt',$time];
$order = 'start_time desc';
$where['show_status'] = 1;
$where['g.sdk_version'] = array('like','%'.$devices.'%');
$lists = D("Server")
->alias('ser')
->field('server_name,start_time,ser.game_name,sor.pack_name,ser.game_id,sor.file_url,g.sdk_version,g.icon,g.down_port,g.and_dow_address,g.dow_status,g.ios_dow_address,g.add_game_address,g.ios_game_address,g.relation_game_name')
->join('tab_game g on g.id = ser.game_id and g.game_status = 1 and g.display_site like "%'.DISPLAY_SITE.'%" ')
->join("left join tab_game_source as sor on sor.game_id = ser.game_id")
->where($where)
->order($order)
->limit(0,12)
->select();
foreach ($lists as $key => $value) {
$lists[$key]['icon_path'] = get_cover($value['icon'],'path');
if($value['dow_status']!=1){
$lists[$key]['status'] = 0;
}elseif($value["down_port"] == 1 && $value["sdk_version"] == 1 && empty($value["and_dow_address"]) || $value["down_port"] == 1 && $value["sdk_version"] == 2 && empty($value["ios_dow_address"]) || $value["down_port"] == 2 && $value["sdk_version"] == 1 && empty($value["add_game_address"]) || $value["down_port"] == 2 && $value["sdk_version"] == 2 && empty($value["ios_game_address"])){
$lists[$key]['status'] = 0;
}else{
if($value["down_port"] == 1){
if($value["sdk_version"] == 2){
$lists[$key]['down_url'] = $value["ios_dow_address"];
}else{
$lists[$key]['down_url'] = U('AjaxDown/down_file',['game_id'=>$value['game_id'],'sdk_version'=>$value['sdk_version']]);
}
}else{
if($value["sdk_version"] == 2){
$lists[$key]['down_url'] = $value["ios_game_address"];
}else{
$lists[$key]['down_url'] = U('AjaxDown/down_file',['game_id'=>$value['game_id'],'sdk_version'=>$value['sdk_version']]);
}
}
$lists[$key]['status'] = 1;
}
$lists[$key]['time'] = date('Y-m-d H:i',$value['start_time']);
if(!is_mobile_request()){
$lists[$key]['relation_game_name'] = $value['game_name'];
}
}
// var_dump($lists);die;
$this->assign('rankrec',$lists);
}
private function gift(){
$map['game_status']=1;
$map['display_site'] = ['like','%'. DISPLAY_SITE .'%'];
$map['end_time']=array(array('gt',time()),array('eq',0),'or');
$map['giftbag_type']=2;
$map['status'] = 1;
if(is_mobile_request()){
$map['giftbag_version'] = get_devices_type();
}
$map['novice'] = array('neq','');
$model = array(
'm_name'=>'Giftbag',
'prefix'=>'tab_',
'field' =>'tab_giftbag.id as gift_id,relation_game_name,game_id,tab_giftbag.game_name,giftbag_name,giftbag_type,tab_game.icon,tab_giftbag.create_time',
'join' =>'tab_game on tab_giftbag.game_id = tab_game.id',
'map' =>$map,
'order' =>'create_time desc',
'limit' =>4,
);
if(is_cache() && S('index_gift')){
$gift=S('index_gift');
}else{
$gift = parent::join_data($model);
if(is_cache() ){
S('index_gift',$gift);
}
}
foreach ($gift as $key => $value) {
$gift[$key]['gift_num']=gift_recorded($value['game_id'],$value['gift_id']);
if(!is_mobile_request()){
$gift[$key]['relation_game_name'] = $value['game_name'];
}
}
$this->assign('gift',$gift);
}
private function rank($where,$order,$limit=7){
$model = M('Game','tab_');
$promote_id = empty(PROMOTE_ID) ? 0 : PROMOTE_ID;
$rebate_join = "and (r.promote_id = {$promote_id} or r.promote_id = -1)";
$time = NOW_TIME;
$data = $model
->alias('g')
->field('g.id as game_id,g.game_name,g.sort,g.game_type_id,g.game_type_name,g.game_score,g.features,g.icon,g.relation_game_id,g.relation_game_name,g.game_address_size,IF(g.down_port=1,s.file_size,g.game_address_size) as game_size')
//游戏原包
->join("left join tab_game_source as s on s.game_id = g.id")
->where($where)
->order($order)
->limit($limit)
->select();
foreach ($data as $key => $val){
$data[$key]['icon'] = get_cover($val['icon'],'path');
$data[$key]['game_score'] = round($val['game_score'] / 2);
if(empty($data[$key]['game_type_name'])){
$data[$key]['game_type_name'] = '全部';
}
if($data[$key]['game_size']==0){
$data[$key]['game_size'] = '0MB';
}
if(!is_mobile_request()){
$data[$key]['relation_game_name'] = $val['game_name'];
}
}
return $data;
}
public function asd(){
$Yan =M('Game','tab_');
$page = intval($_GET['page']); //获取请求的页数
$start = $page*10;
$data = $Yan->field('game_name,create_time')->order('id desc')->limit($start,10)->select();
echo json_encode($data); //转换为json数据输出
}
public function newzixun($category_name="media_gg",$limit=5){
$map['sys_category.name']=array('eq',$category_name);//显示公告和资讯
$map['sys_document.status']=1;
$map['sys_document.display']=1;
$map['deadline']=array(array('gt',time()),array('eq',0),'or');
$data=M('document')
->field('sys_category.name,cover_id,category_id,sys_document.description,sys_document.title,sys_document.update_time,sys_document.id')
->join('sys_category on sys_document.category_id = sys_category.id and sys_category.pid = 46')
->where($map)
->order('level desc,id desc')
->limit($limit)
->select();
return $data;
}
//生成二维码
public function qrcode($url='pc.vlcms.com',$level=3,$size=4){
$url = base64_decode(base64_decode($url));
Vendor('phpqrcode.phpqrcode');
$errorCorrectionLevel =intval($level) ;//容错级别
$matrixPointSize = intval($size);//生成图片大小
//生成二维码图片
//echo $_SERVER['REQUEST_URI'];
ob_clean();
$object = new \QRcode();
echo $object->png($url, false, $errorCorrectionLevel, $matrixPointSize, 2);
}
public function join(){
$this->display();
}
public function product(){
$adv = get_adv_data(['in','wap_index,and_wap_index_gift,ios_wap_index_gift,wap_index_gg,wap_index_zx,wap_index_activity']);
foreach ($adv as $key => $value) {
if($value['name']=='wap_index'){
$wap_index[]=$value;
unset($adv[$key]);
}
if($value['name']=='and_wap_index_gift'){
$and_wap_index_gift=$value;
unset($adv[$key]);
if($and_wap_index_gift['game_id'] != 0){
if(is_mobile_request()){
$gmap['giftbag_version'] = get_devices_type();
}
$gmap['status'] = 1;
$gmap['display_site'] = ['like','%'. DISPLAY_SITE .'%'];
$gmap['novice'] = array('neq','');
$time = NOW_TIME;
$gmap['game_id'] = $and_wap_index_gift['game_id'];
$gmap['start_time'] = ['elt',$time];
$gmap['_string'] = "end_time > {$time} or end_time = 0";
$gdata = M('giftbag','tab_')->where($gmap)->find();
if(empty($gdata)){
$and_wap_index_gift['game_id'] = 0;
}
}
}
if($value['name']=='ios_wap_index_gift'){
$ios_wap_index_gift=$value;
unset($adv[$key]);
if($ios_wap_index_gift['game_id'] != 0){
if(is_mobile_request()){
$gmap['giftbag_version'] = get_devices_type();
}
$gmap['status'] = 1;
$gmap['display_site'] = ['like','%'. DISPLAY_SITE .'%'];
$gmap['novice'] = array('neq','');
$time = NOW_TIME;
$gmap['game_id'] = $ios_wap_index_gift['game_id'];
$gmap['start_time'] = ['elt',$time];
$gmap['_string'] = "end_time > {$time} or end_time = 0";
$gdata = M('giftbag','tab_')->where($gmap)->find();
if(empty($gdata)){
$ios_wap_index_gift['game_id'] = 0;
}
}
}
if($value['name']=='wap_index_gg'){
$wap_index_gg=$value;
unset($adv[$key]);
}
if($value['name']=='wap_index_zx'){
$wap_index_zx=$value;
unset($adv[$key]);
}
if($value['name']=='wap_index_activity'){
$wap_index_activity=$value;
unset($adv[$key]);
}
}
foreach ($wap_index as $k1 => $v1) {
if(strpos($v1['url'],'http')===false){
$wap_index[$k1]['url'] = U('Game/detail',array('id'=>$v1['url']));
}
}
$this->assign('wap_index',$wap_index);
if(get_devices_type()==1){
$this->assign('wap_index_gift',$and_wap_index_gift);
}elseif(get_devices_type()==2){
$this->assign('wap_index_gift',$ios_wap_index_gift);
}else{
$this->assign('wap_index_gift',$and_wap_index_gift['id']>$ios_wap_index_gift['id']?$and_wap_index_gift:$ios_wap_index_gift);
}
if(strpos($wap_index_gg['url'],'http')===false){
$wap_index_gg['url'] = U('Game/detail',array('id'=>$wap_index_gg['url']));
}
if(strpos($wap_index_zx['url'],'http')===false){
$wap_index_zx['url'] = U('Game/detail',array('id'=>$wap_index_zx['url']));
}
if(strpos($wap_index_activity['url'],'http')===false){
$wap_index_activity['url'] = U('Game/detail',array('id'=>$wap_index_activity['url']));
}
$this->assign('wap_index_gg',$wap_index_gg);
$this->assign('wap_index_zx',$wap_index_zx);
$this->assign('wap_index_activity',$wap_index_activity);
$promote_id = empty(PROMOTE_ID) ? 0 : PROMOTE_ID;
$rebate_join = "and (r.promote_id = {$promote_id} or r.promote_id = -1)";
$time = NOW_TIME;
$model = M('Game','tab_');
//热门游戏
$devices = get_devices_type();
$game_h['g.recommend_status'] = 2;
$game_h['g.game_status'] = 1;
$game_h['g.display_site'] = ['like','%'. DISPLAY_SITE .'%'];
$game_h['g.sdk_version'] = array('like','%'.$devices.'%');
if(is_cache() && S('moblie_index_hot')){
$hot=S('moblie_index_hot');
}else{
$hot = $model
->alias('g')
->field('g.id,g.relation_game_id,g.relation_game_name,g.sdk_version,g.down_port,g.id as game_id,g.game_name,g.icon,g.dow_num,g.marking,IF(g.down_port=1,s.file_size,g.game_address_size) as game_size,g.game_score,g.dow_status,g.features,g.and_dow_address,g.ios_dow_address,g.add_game_address,g.ios_game_address,g.game_address_size,g.bind_recharge_discount as discount,s.pack_name,IFNULL(r.ratio,0) as ratio')
//游戏原包
->join("left join tab_game_source as s on s.game_id = g.id")
//返利
->join("left join tab_rebate r on r.game_id = g.id {$rebate_join} and r.starttime < {$time} and (endtime = 0 or endtime > {$time})")
->where($game_h)
->page(0,7)
->order('g.sort desc,g.id desc')
->select();
if(is_cache()){
S('moblie_index_hot',$hot);
}
foreach ($hot as $key => $value) {
if(!is_mobile_request()){
$hot[$key]['relation_game_name'] = $value['game_name'];
}
}
}
$this->assign('hot',$hot);
$media_gg = $this->newzixun('notice_wap');
$media_activity = $this->newzixun('activity_wap');
$media_zx = $this->newzixun('news_wap');
$this->assign('media_gg',$media_gg);
$this->assign('media_activity',$media_activity);
$this->assign('media_zx',$media_zx);
$where['g.game_status'] = 1;
$where['g.display_site'] = ['like','%'. DISPLAY_SITE .'%'];
$where['g.apply_status'] = 1;
$where['g.online_status'] = 1;
$where['g.sdk_version'] = array('like','%'.$devices.'%');
if(is_cache() && S('moblie_rank_new')){
$ranknew=S('moblie_rank_new');
}else{
$where['g.recommend_status'] = 3;
$order = 'g.sort desc,g.id desc';
$ranknew = $this->rank($where,$order);
if(is_cache()){
S('moblie_rank_new',$ranknew);
}
}
$this->assign('ranknew',$ranknew);
if(is_cache() && S('moblie_rank_rec')){
$rankrec=S('moblie_rank_rec');
}else{
$where['g.recommend_status'] = 1;
$order = 'g.sort desc,g.id desc';
$rankrec = $this->rank($where,$order);
if(is_cache()){
S('moblie_rank_rec',$rankrec);
}
}
$this->assign('rankrec',$rankrec);
if(is_cache() && S('moblie_rank_hot')){
$rankhot=S('moblie_rank_hot');
}else{
$where['g.recommend_status'] = 2;
$order = 'g.sort desc,g.id desc';
$rankhot = $this->rank($where,$order);
if(is_cache()){
S('moblie_rank_hot',$rankhot);
}
}
$this->assign('rankhot',$rankhot);
if(is_cache() && S('moblie_rank_dow')){
$rankdow=S('moblie_rank_dow');
}else{
$order = 'g.dow_num desc,g.id desc';
unset($where['g.recommend_status']);
$rankdow = $this->rank($where,$order);
if(is_cache()){
S('moblie_rank_dow',$rankdow);
}
}
$this->assign('rankdow',$rankdow);
//礼包
$this->gift();
//开服
$this->server();
//热门游戏(实质为推荐游戏)
$this->recommend();
$this->display();
}
public function business(){
$adv = get_adv_data(['in','wap_index,and_wap_index_gift,ios_wap_index_gift,wap_index_gg,wap_index_zx,wap_index_activity']);
foreach ($adv as $key => $value) {
if($value['name']=='wap_index'){
$wap_index[]=$value;
unset($adv[$key]);
}
if($value['name']=='and_wap_index_gift'){
$and_wap_index_gift=$value;
unset($adv[$key]);
if($and_wap_index_gift['game_id'] != 0){
if(is_mobile_request()){
$gmap['giftbag_version'] = get_devices_type();
}
$gmap['status'] = 1;
$gmap['display_site'] = ['like','%'. DISPLAY_SITE .'%'];
$gmap['novice'] = array('neq','');
$time = NOW_TIME;
$gmap['game_id'] = $and_wap_index_gift['game_id'];
$gmap['start_time'] = ['elt',$time];
$gmap['_string'] = "end_time > {$time} or end_time = 0";
$gdata = M('giftbag','tab_')->where($gmap)->find();
if(empty($gdata)){
$and_wap_index_gift['game_id'] = 0;
}
}
}
if($value['name']=='ios_wap_index_gift'){
$ios_wap_index_gift=$value;
unset($adv[$key]);
if($ios_wap_index_gift['game_id'] != 0){
if(is_mobile_request()){
$gmap['giftbag_version'] = get_devices_type();
}
$gmap['status'] = 1;
$gmap['display_site'] = ['like','%'. DISPLAY_SITE .'%'];
$gmap['novice'] = array('neq','');
$time = NOW_TIME;
$gmap['game_id'] = $ios_wap_index_gift['game_id'];
$gmap['start_time'] = ['elt',$time];
$gmap['_string'] = "end_time > {$time} or end_time = 0";
$gdata = M('giftbag','tab_')->where($gmap)->find();
if(empty($gdata)){
$ios_wap_index_gift['game_id'] = 0;
}
}
}
if($value['name']=='wap_index_gg'){
$wap_index_gg=$value;
unset($adv[$key]);
}
if($value['name']=='wap_index_zx'){
$wap_index_zx=$value;
unset($adv[$key]);
}
if($value['name']=='wap_index_activity'){
$wap_index_activity=$value;
unset($adv[$key]);
}
}
foreach ($wap_index as $k1 => $v1) {
if(strpos($v1['url'],'http')===false){
$wap_index[$k1]['url'] = U('Game/detail',array('id'=>$v1['url']));
}
}
$this->assign('wap_index',$wap_index);
$this->display();
}
}