/** * 点击率统计 */ public function actionRatio() { $gameTypes = $this->_getGlobalData('game_type'); $gameTypes = Model::getTtwoArrConvertOneArr($gameTypes, 'Id', 'name'); $sources = $this->_getGlobalData('workorder_source'); $lang = $this->_getGlobalData('lang'); $statsType = array('day' => '按天', 'hour' => '按小时'); $selected = array(); //统计数组 $selected['stats_type'] = $_POST['stats_type'] ? $_POST['stats_type'] : 'day'; //统计类型默认天 $selected['game_type_id'] = $_POST['game_type_id']; $selected['source'] = $_POST['source']; $selected['start_time'] = $_POST['start_time']; $selected['end_time'] = $_POST['end_time']; $selected['lang_id'] = $_POST['lang_id']; if ($this->_isPost()) { $this->_modelPlayerKindFaq = $this->_getGlobalData('Model_PlayerKindFaq', 'object'); $kindList = $this->_modelPlayerKindFaq->findListAll($_POST['game_type_id'], $_POST['lang_id']); $this->_modelStatsFaq = $this->_getGlobalData('Model_StatsFaq', 'object'); if (empty($_POST['start_time']) || empty($_POST['end_time'])) { $this->_utilMsg->showMsg('请选择开始时间与结束时间', -1, 2); } if ($_POST['stats_type'] == 'day') { //按天 $this->_view->assign('allDay', Tools::getdateArr($_POST['start_time'], $_POST['end_time'])); $stats = $this->_modelStatsFaq->statsDay(array('start_time' => $_POST['start_time'], 'end_time' => $_POST['end_time']), $_POST['game_type_id'], $_POST['source'], $_POST['lang_id']); } else { //按小时 $this->_view->assign('allHour', range(0, 23)); $stats = $this->_modelStatsFaq->statsHour(array('start_time' => $_POST['start_time'], 'end_time' => $_POST['end_time']), $_POST['game_type_id'], $_POST['source'], $_POST['lang_id']); } } else { $selected["start_time"] = date("Y-m-d", time()) . " 00:00:00"; $selected["end_time"] = date("Y-m-d", time()) . " 23:59:59"; } $this->_view->assign('kindList', $kindList); $this->_view->assign('dataList', $stats); $gameTypes[''] = '所有'; $sources[''] = '所有'; $lang[''] = '所有'; $this->_view->assign('selected', $selected); $this->_view->assign('statsType', $statsType); $this->_view->assign('gameTypes', $gameTypes); $this->_view->assign('sources', $sources); $this->_view->assign('lang', $lang); $this->_utilMsg->createPackageNavBar(); if ($_POST['xls']) { //导出excel Tools::import('Util_ExportExcel'); $this->_utilExportExcel = new Util_ExportExcel('faq统计', 'Excel/StatsFaq', $stats); $this->_utilExportExcel->outPutExcel(); } else { $this->_view->display(); } }
/** * 统计(按小时) * @param array $date * @param int $gameTypeId * @param int $source * @param int $lang */ public function statsHour($date, $gameTypeId = NULL, $source = NULL, $lang = NULL) { $sql = "select kind_id,time from {$this->tName()} where 1"; $startTime = strtotime(date('Y-m-d 00:00:00', strtotime($date['start_time']))); $endTime = strtotime(date('Y-m-d 23:59:59', strtotime($date['end_time']))); $sql .= " and time between {$startTime} and {$endTime}"; if ($gameTypeId) { $sql .= " and game_type_id={$gameTypeId}"; } if ($source) { $sql .= " and source={$source}"; } if ($lang) { $sql .= " and lang_id={$lang}"; } $dataList = $this->select($sql); if (!$dataList) { return false; } $stats = array(); foreach ($dataList as $list) { $stats['total']['total']++; $stats['total'][$list['kind_id']]++; $stats[intval(date('H', $list['time']))]['total']++; $stats[intval(date('H', $list['time']))][$list['kind_id']]++; } $this->_modelPlayerKindFaq = $this->_getGlobalData('Model_PlayerKindFaq', 'object'); $kindFaq = $this->_modelPlayerKindFaq->findListAll($gameTypeId); for ($i = 0; $i < 24; $i++) { if (!$stats[$i]) { $stats[$i]['total'] = 0; } foreach ($kindFaq as $key => $value) { $stats[$i][$key] = intval($stats[$i][$key]); } } ksort($stats); return $stats; }