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)); } }