/** * * 获取时间段内流失率数据 * * @Member public * @author jerry * @copyright rockhippo * @param - * @return - * */ public function getLossrate($miketime) { $PSys_MemberRule = new PSys_MemberRule(); $sweek1 = $miketime - 7 * 86400; $eweek1 = $miketime - 1; $sweek2 = $miketime - 14 * 86400; $eweek2 = $miketime - 7 * 86400 - 1; $smonth1 = $miketime - 30 * 86400; $emonth1 = $miketime - 1; $smonth2 = $miketime - 60 * 86400; $emonth2 = $miketime - 30 * 86400 - 1; $weeksql1 = "SELECT DISTINCT client FROM rhc_game_platform WHERE create_time BETWEEN {$sweek1} AND {$eweek1} AND type = 1"; $weeksql2 = "SELECT DISTINCT client FROM rhc_game_platform WHERE create_time BETWEEN {$sweek2} AND {$eweek2} AND type = 1"; $monthsql1 = "SELECT DISTINCT client FROM rhc_game_platform WHERE create_time BETWEEN {$smonth1} AND {$emonth1} AND type = 1"; $monthsql2 = "SELECT DISTINCT client FROM rhc_game_platform WHERE create_time BETWEEN {$smonth2} AND {$emonth2} AND type = 1"; $rtArr = $week1 = $week2 = $month1 = $month2 = array(); $wkRs1 = $PSys_MemberRule->rateQuery($weeksql1); $wkRs2 = $PSys_MemberRule->rateQuery($weeksql2); $monRs1 = $PSys_MemberRule->rateQuery($monthsql1); $monRs2 = $PSys_MemberRule->rateQuery($monthsql2); foreach ($wkRs1 as $k => $v) { $week1[$k] = strtoupper($v['client']); } foreach ($wkRs2 as $k => $v) { $week2[$k] = strtoupper($v['client']); } foreach ($monRs1 as $k => $v) { $month1[$k] = strtoupper($v['client']); } foreach ($monRs2 as $k => $v) { $month2[$k] = strtoupper($v['client']); } $rtnWeek = $rtnMonth = 0; foreach ($week2 as $v) { if (in_array($v, $week1)) { $rtnWeek++; } } foreach ($month2 as $v) { if (in_array($v, $month1)) { $rtnMonth++; } } $rtArr['weeknums'] = count($week2); $rtArr['weekloss'] = count($week2) - $rtnWeek; $rtArr['wklossrate'] = $rtArr['weeknums'] ? round($rtArr['weekloss'] / $rtArr['weeknums'] * 100, 2) : 0; $rtArr['monthnums'] = count($month2); $rtArr['monthloss'] = count($month2) - $rtnMonth; $rtArr['monlossrate'] = $rtArr['monthnums'] ? round($rtArr['monthloss'] / $rtArr['monthnums'] * 100, 2) : 0; return $rtArr; }
/** * * @do ajax 获取浏览数据 * * @pageview public * @author jerry * @copyright rockhippo * @param - * @return html * */ public function ajaxOtherHtmlAction() { $start = reqstr("start", ""); $end = reqstr("end", ""); $PSys_PageviewModel = new PSys_PageviewModel(); $PSys_PageviewRule = new PSys_PageviewRule(); $PSys_GameRule = new PSys_GameRule(); $PSys_MemberRule = new PSys_MemberRule(); $where["day_>="] = $start; $where["day_<="] = $end; $order = "day ASC"; $result = $PSys_PageviewModel->GetList($where, $order, 0, 0, "*"); $total_start_times = $total_wifi = $total_nowifi = $total_download = $total_reg = $total_page_views = 0; foreach ($result["allrow"] as $k => $v) { $total_start_times += intval($v["start_times"]); $sql = 'SELECT count(client) AS "wifi" FROM rhc_game_platform WHERE type = 1 AND station_id > 0 AND cday = ' . date('Ymd', strtotime($v['day'])); $rs = $PSys_PageviewRule->tempQuery($sql); $result["allrow"][$k]['wifi'] = $rs[0]['wifi']; $result["allrow"][$k]['nowifi'] = $v['start_times'] - $rs[0]['wifi']; $total_wifi += intval($result["allrow"][$k]['wifi']); $total_nowifi += intval($result["allrow"][$k]['nowifi']); $gameSql = 'SELECT count(id) as "dl_total" FROM rhc_game_platform WHERE type = 206 AND cday BETWEEN ' . date('Ymd', strtotime($v['day'])) . ' AND ' . date('Ymd', strtotime($v['day'])); $gameRs = $PSys_GameRule->gameQuery($gameSql); $result["allrow"][$k]['download'] = $gameRs[0]['dl_total']; $total_download += intval($result["allrow"][$k]['download']); $regSql = 'SELECT count(id) as "reg" FROM rhi_account WHERE regfrom = 2 AND regtime BETWEEN ' . strtotime($v['day']) . ' AND ' . (strtotime($v['day']) + 86400 - 1); $regRs = $PSys_MemberRule->regQuery($regSql); $result["allrow"][$k]['reg'] = $regRs[0]['reg']; $total_reg += intval($result["allrow"][$k]['reg']); $total_page_views += intval($v["page_views"]); } $this->smarty->assign("total_start_times", $total_start_times); $this->smarty->assign("total_page_views", $total_page_views); $this->smarty->assign("total_wifi", $total_wifi); $this->smarty->assign("total_nowifi", $total_nowifi); $this->smarty->assign("total_download", $total_download); $this->smarty->assign("total_reg", $total_reg); $this->smarty->assign("data", $result["allrow"]); $this->forward = "ajaxOther"; }