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.
132 lines
4.6 KiB
PHTML
132 lines
4.6 KiB
PHTML
2 years ago
|
<?php
|
||
|
namespace Mobile\Controller;
|
||
|
use Think\Controller;
|
||
|
|
||
|
/**
|
||
|
* 首页
|
||
|
*/
|
||
|
class RankController extends BaseController {
|
||
|
|
||
|
public function index(){
|
||
|
$page = $page ? $page : 1; //默认显示第一页数据
|
||
|
$row = C('LIST_ROWS');
|
||
|
$rank = I('get.rank') ? I('get.rank') : 'new';
|
||
|
|
||
|
$model = M('Game','tab_');
|
||
|
$devices = get_devices_type();
|
||
|
|
||
|
$promote_id = empty(PROMOTE_ID) ? 0 : PROMOTE_ID;
|
||
|
|
||
|
$rebate_join = "and (r.promote_id = {$promote_id} or r.promote_id = -1)";
|
||
|
$time = NOW_TIME;
|
||
|
|
||
|
$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($rank == 'new'){ //最新榜
|
||
|
$where['g.recommend_status'] = 3;
|
||
|
$order = 'g.sort desc,g.id desc';
|
||
|
}elseif($rank == 'rec'){ //推荐榜
|
||
|
$where['g.recommend_status'] = 1;
|
||
|
$order = 'g.sort desc,g.id desc';
|
||
|
}elseif($rank == 'hot'){ //热门榜
|
||
|
$where['g.recommend_status'] = 2;
|
||
|
$order = 'g.sort desc,g.id desc';
|
||
|
}elseif($rank == 'dow'){ //热门榜
|
||
|
$order = 'g.dow_num desc,g.id desc';
|
||
|
}else{
|
||
|
$order = 'g.sort desc,g.id desc';
|
||
|
}
|
||
|
//去除排行榜重复项
|
||
|
$data = $model
|
||
|
->alias('g')
|
||
|
->field('g.*,g.id as game_id,IFNULL(r.ratio,0) as ratio,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")
|
||
|
//返利
|
||
|
->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($where)
|
||
|
->page($page, $row)
|
||
|
->order($order)
|
||
|
|
||
|
->select();
|
||
|
foreach ($data as $key => $val){
|
||
|
$data[$key]['icon'] = get_cover($val['icon'],'path');
|
||
|
$data[$key]['game_score'] = $val['game_score'];
|
||
|
if(!is_mobile_request()){
|
||
|
$data[$key]['relation_game_name'] = $val['game_name'];
|
||
|
}
|
||
|
}
|
||
|
$title = '排行榜';
|
||
|
$this->assign('data',$data);
|
||
|
$this->assign('page',$page);
|
||
|
$this->assign('name',$name);
|
||
|
$this->assign('rank',$rank);
|
||
|
$this->assign('mate_title', $title);
|
||
|
$this->display();
|
||
|
}
|
||
|
|
||
|
|
||
|
public function ajaxlists() {
|
||
|
$rank = I('request.rank') ? I('request.rank') : 'new';
|
||
|
$p = I('post.p');
|
||
|
$status = 0;
|
||
|
$row = C('LIST_ROWS');
|
||
|
$model = M('Game','tab_');
|
||
|
$devices = get_devices_type();
|
||
|
|
||
|
$promote_id = empty(PROMOTE_ID) ? 0 : PROMOTE_ID;
|
||
|
$rebate_join = "and (r.promote_id = {$promote_id} or r.promote_id = -1)";
|
||
|
$time = NOW_TIME;
|
||
|
|
||
|
$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($rank == 'new'){ //最新榜
|
||
|
$where['g.recommend_status'] = 3;
|
||
|
$order = 'g.sort desc,g.id desc';
|
||
|
}elseif($rank == 'rec'){ //推荐榜
|
||
|
$where['g.recommend_status'] = 1;
|
||
|
$order = 'g.sort desc,g.id desc';
|
||
|
}elseif($rank == 'hot'){ //热门榜
|
||
|
$where['g.recommend_status'] = 2;
|
||
|
$order = 'g.sort desc,g.id desc';
|
||
|
}elseif($rank == 'dow'){ //热门榜
|
||
|
$order = 'g.dow_num desc,g.id desc';
|
||
|
}else{
|
||
|
$order = 'g.sort desc,g.id desc';
|
||
|
}
|
||
|
$data = $model
|
||
|
->alias('g')
|
||
|
->field('g.*,g.id as game_id,IFNULL(r.ratio,0) as ratio,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")
|
||
|
//返利
|
||
|
->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($where)
|
||
|
->page($p, $row)
|
||
|
->order($order)
|
||
|
->group("g.relation_game_id")
|
||
|
->select();
|
||
|
foreach ($data as $key => $val){
|
||
|
$data[$key]['icon'] = get_cover($val['icon'],'path');
|
||
|
$data[$key]['game_score'] = round($val['game_score'] / 2);
|
||
|
if(!is_mobile_request()){
|
||
|
$data[$key]['relation_game_name'] = $val['game_name'];
|
||
|
}
|
||
|
if($val['game_size'] == 0){
|
||
|
$data[$key]['game_size'] = "0MB";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (!empty($data) && is_array($data)) {$status=1;}
|
||
|
|
||
|
echo json_encode(array('status'=>$status,'page'=>$p,'data'=>$data));
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|