123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- <?php
- namespace Home\Controller;
- use Common\Cache\RedisCache;
- use Common\Controller\HomeBaseController as Base;
- /**
- * 比赛实况
- * @author: huangch
- * @package Home\Controller
- */
- class RacingLiveController extends Base
- {
- public function index() {
- $type = (int)I('get.type', 1); //1单圈 2总时间
- $server_id = (int)I('get.server_id', 0);
- $session = (int)I('get.session', 0);
- $this->assign('server_id', $server_id);
- $this->assign('session', $session);
- if ($type == 1) {
- $this->display('single_lap');
- } else {
- $this->display('all_lap');
- }
- }
- /**
- * 最快单圈排行
- * @author: huangch
- */
- public function fastest_lap() {
- $server_id = I('get.server_id');
- $page_size = I('get.page_size') ? I('get.page_size') : 2;
- $page_num = I('get.page_num') ? I('get.page_num') : 1;
- $racing_result_mod = M('racing_result');
- $racing_sign_mod = M('racing_sign');
- $racing_server_mod = M('racing_server');
- $user_mod = M('user');
- $event_id = $racing_server_mod->where(['id' => $server_id])->getfield('event_id');
- //最快单圈
- $redis = new RedisCache();
- $zset_key = 'r_server_'.$server_id;
- $count = $redis->zCard($zset_key);
- $start = $page_size * ($page_num - 1) ;
- $end = $page_size * $page_num - 1;
- $rank_list = $redis->zRange($zset_key,$start,$end);
- //dump($rank_list);exit;
- foreach ($rank_list as $key => $val) {
- $ms = $redis->zScore($zset_key,$val);
- $sort = $redis->zRank($zset_key,$val) + 1;
- $fastest_res['pos'] = $sort;
- $fastest_res['time'] = $this->ms2time($ms);
- $res = $racing_result_mod->where(['uid' => $val,'mark' => 4,'server_id' => $server_id])->field('racer,car_name')->find();
- $name = $racing_sign_mod->where(['event_id' => $event_id,'uid' => $val,'status' => 1])->getfield('name');
- $icon = $user_mod->where(['id' => $val])->getfield('icon');
- $fastest_res['racer'] = $res['racer'];
- $fastest_res['icon'] = $icon;
- $fastest_res['name'] = $name ? $name : $res['racer'];
- $fastest_res['car_name'] = $res['car_name'];
- $fastest_list[] = $fastest_res;
- unset($res);
- unset($fastest_res);
- unset($ms);
- unset($icon);
- }
- $this->apiListSuccess($fastest_list);
- }
- public function ms2time($ms) {
- $str1 = "." . sprintf("%03d", $ms % 1000);
- $seconds = intval($ms / 1000);
- $str = ":" . sprintf("%02d", $seconds % 60);//"%02d" 格式化为整数,2位,不足2位,左边补0
- $minutes = intval($seconds / 60);
- $str = sprintf("%02d", $minutes % 60) . $str;
- $hours = intval($minutes / 60);
- if ($hours) {
- $str = $hours.':'.$str.$str1;
- } else {
- $str = $str.$str1;
- }
- return $str;
- }
- /**
- * 总圈速排行
- * @author: huangch
- */
- public function total_fastest_lap() {
- $server_id = I('get.server_id');
- $session = I('get.session');
- $page_size = I('get.page_size') ? I('get.page_size') : 2;
- $page_num = I('get.page_num') ? I('get.page_num') : 1;
- $racing_result_mod = M('racing_result');
- $racing_sign_mod = M('racing_sign');
- $racing_server_mod = M('racing_server');
- $user_mod = M('user');
- $event_id = $racing_server_mod->where(['id' => $server_id])->getfield('event_id');
- //总成绩
- $server = M('racing_server')->where(['id' => $server_id,'session' => $session])->field('qualify_laps,race_laps')->find();
- if ($session == 1) $laps = $server['qualify_laps'];
- if ($session == 2) $laps = $server['race_laps'];
- $map['server_id'] = $server_id;
- $map['session'] = $session;
- if($laps) $map['laps'] = ['elt',$laps];
- $total_time_list = M('racing_result')->where($map)->order('laps desc,time asc')->page($page_num,$page_size)->select();
- foreach ($total_time_list as $key => $val) {
- $name = $racing_sign_mod->where(['event_id' => $event_id,'uid' => $val['uid'],'status' => 1])->getfield('name');
- $icon = $user_mod->where(['id' => $val['uid']])->getfield('icon');
- $sort = $page_size * ($page_num - 1) + $key + 1;
- $total_time['pos'] = $sort;
- $total_time['laps'] = (int)$val['laps'];
- $total_time['time'] = $this->ms2time($val['time']);
- $total_time['racer'] = $val['racer'] ? $val['racer'] : '';
- $total_time['icon'] = $icon ? $icon :'';
- $total_time['name'] = $name ? $name : $val['racer'];
- $total_time['car_name'] = $val['car_name'] ? $val['car_name'] : '';
- $total_time_res[] = $total_time;
- unset($name);
- unset($icon);
- }
- $this->apiListSuccess($total_time_res);
- }
- /**
- * api数据列表成功返回
- * @param type $param 返回值
- * @return string
- */
- public function apiListSuccess($param) {
- $ret['code'] = SUCCESS;
- $ret['data']['count'] = count($param);
- $ret['data']['items'] = $param ? $param : array();
- die(json_encode($ret));
- }
- }
|