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.

397 lines
14 KiB
PHP

<?php
namespace Media\Controller;
use OT\DataDictionary;
use User\Api\MemberApi;
/**
* 前台首页控制器
* 主要获取首页聚合数据
*/
class IndexController extends BaseController {
//系统首页
public function index(){
$this->slide();//轮播图
$this->recommend();
$this->hot();
$this->area();
$this->slide(2);//中部广告
$this->newzixun();
$this->slide(4);//资讯广告
$this->gift();
$user_id=session('member_auth.mid');
$user=get_user_entity($user_id)==false?session('member_auth'):get_user_entity($user_id);
C(api('Config/lists'));
if (C('UC_SET') == 1 && session('member_auth.nickname') == 'Uc用户') {
$user_play = null;
$sqltype = 2;
$ucuser = M('User','tab_',C('DB_CONFIG2'))->where(array('account'=>session('member_auth.account')))->find();
if($ucuser==''){
$sqltype = 3;
$ucuser = M('User','tab_',C('DB_CONFIG3'))->where(array('account'=>session('member_auth.account')))->find();
}
$this->assign('uc_balance', $ucuser['balance']);
} else{
$user_play=M('User_play as u','tab_')
->field('g.relation_game_id,g.relation_game_name,u.server_name,icon')
->join('tab_game g on u.game_id = g.id ')
->where(array('user_id'=>$user['id']))
->group('g.relation_game_id')
->limit(2)
->select();
}
$this->assign('user_play',$user_play);
$this->assign('user',$user);
$this->display();
}
public function slide($pos_id=1){
$adv = M("Adv","tab_");
$map['status'] = 1;
$map['pos_id'] = $pos_id; #首页轮播图广告id
$map['start_time']=array(array('lt',time()),array('eq',0), 'or') ;
$map['end_time']=array(array('gt',time()),array('eq',0), 'or') ;
$carousel = $adv->where($map)->order('sort desc,id desc')->select();
if($pos_id==2){
// 设置媒体中部广告为一张 随机显示
$carousel = $adv->where($map)->limit(1)->select();
$this->assign("midcarousel",$carousel);
}elseif($pos_id==4){
$data[0] = array('url'=>'javascript:','title'=>'暂无广告','data'=>'0');
$carousel = empty($carousel)?$data:$carousel;
$this->assign("zixuncarousel",$carousel);
}else{
$this->assign("carousel",$carousel);
}
}
/***
*推荐游戏
*/
public function recommend(){
$model = array(
'm_name'=>'Game',
'prefix'=>'tab_',
'map' =>array('game_status'=>1,'recommend_status'=>1,'display_site'=>['like','%' . DISPLAY_SITE . '%']),
'field' =>'*,min(id) as id',
'order' =>'sort desc,id desc',
'group' =>'relation_game_id',
'limit' =>'0,9',
);
if(is_cache() && S('index_reco')){
$reco=S('index_reco');
}else{
$reco = parent::list_data($model);
if(is_cache() ){
S('index_reco',$reco);
}
}
$reco=game_merge($reco,$model['map']);
// var_dump($reco);die;
$this->assign('recommend',$reco);
}
/***
*推荐游戏
*/
public function recommend1(){
$shunxu = I('shunxu');
$shuzu = M('Game','tab_')->where(array('game_status'=>1,'recommend_status'=>1))->field('relation_game_id')->group('relation_game_id')->select();
$count = count($shuzu);
if ($count <= 4){
$this->ajaxReturn(array('status'=>0,'data'=>"没有更多了~"));
}
$arr = array();
foreach ($shuzu as $k => $v){
$arr[] = $shuzu[$k]['relation_game_id'];
}
$shunxu1 = $shunxu*4;
$shunxu2 = $shunxu*4+4;
if (floor($shunxu1/$count) == floor($shunxu2/$count) && floor($shunxu1/$count) == 0){
$shunxu_x = $shunxu1.",".($shunxu2-$shunxu1);
}elseif(floor($shunxu1/$count) == floor($shunxu2/$count) && floor($shunxu1/$count) != 0){
$floor = floor($shunxu1/$count);
$shunxu_x = ($shunxu1-$floor*$count).",".(($shunxu2-$floor*$count)-($shunxu1-$floor*$count));
}elseif (floor($shunxu1/$count) == 0 && floor($shunxu2/$count)!=0){
$floor = floor($shunxu2/$count);
$shunxu_x1 = $shunxu1.",".($count-$shunxu1);
$shunxu_x2 = '0'.",".($shunxu2-$floor*$count);
}elseif(floor($shunxu1/$count) != 0 && floor($shunxu2/$count)!=0 && floor($shunxu1/$count) != floor($shunxu2/$count)){
$floor1 = floor($shunxu1/$count);
$floor2 = floor($shunxu2/$count);
$shunxu_x1 = ($shunxu1-$floor1*$count).",".($count-($shunxu1-$floor1*$count));
$shunxu_x2 = '0'.",".($shunxu2-$floor2*$count);
}
if ($shunxu_x){
$model = array(
'm_name'=>'Game',
'prefix'=>'tab_',
'map' =>array('game_status'=>1,'recommend_status'=>1),
'field' =>'*,min(id) as id',
'order' =>'id desc',
'group' =>'relation_game_id',
'limit' =>$shunxu_x,
);
$reco = parent::list_data($model);
}else{
$model1 = array(
'm_name'=>'Game',
'prefix'=>'tab_',
'map' =>array('game_status'=>1,'recommend_status'=>1),
'field' =>'*,min(id) as id',
'order' =>'id desc',
'group' =>'relation_game_id',
'limit' =>$shunxu_x1,
);
$reco1 = parent::list_data($model1);
if ($shunxu_x2 != '0,0'){
$model2 = array(
'm_name'=>'Game',
'prefix'=>'tab_',
'map' =>array('game_status'=>1,'recommend_status'=>1),
'field' =>'*,min(id) as id',
'order' =>'id desc',
'group' =>'relation_game_id',
'limit' =>$shunxu_x2,
);
$reco2 = parent::list_data($model2);
$reco = array_merge($reco1,$reco2);
}else{
$reco = $reco1;
}
}
$reco=game_merge($reco,$model['map']);
foreach ($reco as $key=>$value){
$reco[$key]['game_detail']=U('Game/game_detail',array('id'=>$value['relation_game_id']));
$reco[$key]['dow_url_generate_and']=U('Game/dow_url_generate',array('id'=>$value['relation_game_id'],'type'=>1));
$reco[$key]['dow_url_generate_ios']=U('Game/dow_url_generate',array('id'=>$value['relation_game_id'],'type'=>2));
$reco[$key]['relation_game_id']=U('Game/game_detail',array('id'=>$value['relation_game_id']));
$reco[$key]['cover']=get_cover($value['cover'],'path');
$reco[$key]['percent']=$value['game_score']*10;
$reco[$key]['down_total']=$value['anddow']+$value['iosdow'];
$reco[$key]['game_type_name'] = msubstr2($reco[$key]['game_type_name'],0,10);
$reco[$key]['relation_game_name'] = msubstr2($reco[$key]['relation_game_name'],0,10);
}
if($reco){
$this->ajaxReturn(array('status'=>1,'data'=>$reco));
}else{
$this->ajaxReturn(array('status'=>0,'data'=>"没有更多了~"));
}
}
/***
*热门游戏
*/
public function hot($limit=8){
$model = array(
'm_name'=>'Game',
'prefix'=>'tab_',
'map' =>array('game_status'=>1,'recommend_status'=>2,'display_site'=>['like','%' . DISPLAY_SITE . '%']),
'field' =>'*,min(id) as id',
'order' =>'sort desc,id desc',
'group' =>'relation_game_id',
'limit' =>8,
);
if(is_cache() && S('index_hot')){
$hot=S('index_hot');
}else{
$hot = parent::list_data($model);
if(is_cache() ){
S('index_hot',$hot);
}
}
$hot = game_merge($hot,$model['map']);
$this->assign('hot',$hot);
}
/***
*最新游戏
*/
public function newgame($recommend_status=3,$order='sort desc,id desc'){
$model = array(
'm_name'=>'Game',
'prefix'=>'tab_',
'map' =>array('game_status'=>1,'recommend_status'=>$recommend_status,'display_site'=>['like','%' . DISPLAY_SITE . '%']),
'field' =>'*,min(id) as id,@counter:=@counter+1 AS Rank',
'order' =>$order,
'group' =>'relation_game_id',
'limit' =>9,
);
$newgame = parent::list_data($model);
$newgame = array_order(game_merge($newgame,$model['map']));
$this->assign('new',$newgame);
}
/***
*游戏礼包
*/
public function gift(){
$map['game_status']=1;
$map['end_time']=array(array('gt',time()),array('eq',0),'or');
//$map['giftbag_type']=2;
$map['status'] = 1;
$map['display_site'] = ['like','%'. DISPLAY_SITE .'%'];
$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' =>10,
);
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']);
}
$this->assign('gift',$gift);
}
/***
*游戏区服
*/
public function area(){
$model = array(
'm_name'=>'server',
'prefix'=>'tab_',
'field' =>'tab_server.*,tab_game.relation_game_name,tab_game.relation_game_id,tab_game.icon,tab_game.cover,tab_giftbag.id as gift_id',
'join' =>' left join tab_game on tab_server.game_id = tab_game.id left join tab_giftbag on tab_server.game_id = tab_giftbag.game_id',
'map' =>array('game_status'=>1,'show_status'=>1,'tab_server.start_time'=>array('lt',time()),'display_site'=>['like','%' . DISPLAY_SITE . '%']),
'group' =>'tab_server.id',
'order' =>'start_time desc',
'limit'=>10000,
);
$area = parent::join_data($model);
$this->assign('area',$area);
}
public function newzixun($limit=''){
$map['sys_category.name']=array('in','media_gg,media_activity,media_zx');//显示公告和资讯
$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 = 84')
->where($map)
->limit($limit)
->limit(0,20)
->order('level desc,id desc')
->select();
foreach ($data as $key => $value) {
if($value['name']=='media_activity'){
$huodong[]=$value;
unset($data[$key]);
}
if($value['name']=='media_gg'){
$media_gg[]=$value;
unset($data[$key]);
}
if($value['name']=='media_zx'){
$media_zx[]=$value;
unset($data[$key]);
}
}
$this->assign('firhuodong',$huodong[0]);
unset($huodong[0]);
$this->assign('huodong',$huodong);
$this->assign('media_gg',$media_gg);
$this->assign('media_zx',$media_zx);
$this->assign('newzixun',$data);
}
public function download(){
$app_map['name'] = ['like','%游戏盒子%'];
$app_map['version'] = 1;
$android = M('app', 'tab_')->where($app_map)->find();
$android_url = file_exists($android['file_url'])?$android['file_url']:"javascript:";
$this->assign('android',$android_url);
$app_map['version'] = 2;
$ios = M('app', 'tab_')->where($app_map)->find();
$ios['url'] = file_exists($ios['file_url'])?$ios['file_url']:"javascript:";
$ios['plist_url'] = "https://".$_SERVER['HTTP_HOST'].substr($ios['plist_url'],1);
if(is_mobile_request()){
$devices = get_devices_type();
$this->assign("devices",$devices);
}
$this->assign('ios',$ios);
$this->display();
}
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 down_app(){
}
public function business(){
$model = array(
'm_name'=>'Game',
'prefix'=>'tab_',
'map' =>array('game_status'=>1,'recommend_status'=>1,'display_site'=>['like','%' . DISPLAY_SITE . '%']),
'field' =>'*,min(id) as id',
'order' =>'sort desc,id desc',
'group' =>'relation_game_id',
'limit' =>'0,9',
);
if(is_cache() && S('index_reco')){
$reco=S('index_reco');
}else{
$reco = parent::list_data($model);
if(is_cache() ){
S('index_reco',$reco);
}
}
$reco = game_merge($reco,$model['map']);
$this->assign('recommend',$reco);
$this->display();
}
public function join(){
$this->display();
}
public function hezuo(){
$this->display();
}
}