/** * 比较截止日期与当前日期 * * @param string $datetime * @return string */ public function deadline($datetime) { if (!empty($datetime)) { $padDatetime = ZtChart_Model_Assemble_Datetime::padDatetime($datetime, Zend_Date::SECOND); switch (strcmp($padDatetime, $this->_deadline)) { case -1: case 0: return $datetime; case 1: return substr($this->_deadline, 0, strlen($datetime)); } } }
/** * 取得获取数据的Select对象 * * @see ZtChart_Model_Assemble_Backend_Abstract::select() * @param string $start 起始时间 * @param string $end 结束时间 * @param integer $pos 时间位置 * @return Zend_Db_Select */ public function select($start, $end, $pos) { $select = $this->columns(self::ROW_LABEL, self::ROW_DATA); $select->where('usertrade_datetime >= ?', ZtChart_Model_Assemble_Datetime::padDatetime($start, $pos))->where('usertrade_datetime < ?', ZtChart_Model_Assemble_Datetime::padDatetime($end, $pos)); if (null !== $this->_opType) { $select->where('usertrade_optype = ?', $this->_opType); } if (null !== $this->_netbank) { // $this->clearGameTypes(); $select->where('usertrade_netbank = ?', $this->_netbank); } return $select; }
/** * 产生时间选择表单 * * @param string $name * @param string $name1 * @param string $name2 * @param array $options * @return string */ public function radioDate($name, $name1, $name2, $options = array(ZtChart_Model_Assemble_Datetime::RECENT_24HOUR, ZtChart_Model_Assemble_Datetime::RECENT_48HOUR, ZtChart_Model_Assemble_Datetime::RECENT_1WEEK, ZtChart_Model_Assemble_Datetime::RECENT_1MONTH, ZtChart_Model_Assemble_Datetime::CUSTOM)) { $request = Zend_Controller_Front::getInstance()->getRequest(); $value = $request->getQuery($name, $options[0]); $options = array_map(function ($str) { return ' ' . $str; }, ZtChart_Model_Assemble_Datetime::getPredefinedDatetimes($options)); $html = $this->formRadio($name, $value, null, $options, PHP_EOL); $params = array('maxDate' => date('Y-m-d')); $attribs = array('class' => 'dateInput', 'readonly' => 'readonly'); if (!empty($value)) { $attribs['disabled'] = 'disabled'; } if (array_key_exists(ZtChart_Model_Assemble_Datetime::CUSTOM, $options)) { $html .= '<span class="spanInput">' . PHP_EOL . $this->view->datePicker($name1, $request->getQuery($name1), $params, $attribs) . PHP_EOL . '-' . $this->view->datePicker($name2, $request->getQuery($name2), $params, $attribs) . PHP_EOL . '</span>' . PHP_EOL; $html .= '<button class="btn6" type="submit">确定</button>'; } return $html; }
/** * 在线人数曲线 */ public function chartAction() { $data = array(); // 当前时间戳 $nowOffsetTimestamp = Zend_Date::now()->subMinute(abs($this->_getParam('offset')))->getTimestamp(); foreach ($this->_getParam('allowedGameTypes') as $gameType) { if (ZtChart_Model_GameType::isQule($gameType)) { // 取Qule游戏的数据 $qule = new ZtChart_Model_Qule(); // 取当前偏移量的数据 $nowData = $qule->getGamedata(array('gametype' => $gameType, 'zoneid' => $this->_getParam('zoneid'), 'loadnumber' => $this->_getParam('range'), 'querydate' => $nowOffsetTimestamp)); if (array_key_exists('data', $nowData) && !empty($nowData['data'])) { foreach ($nowData['data'] as $item) { $data['datetime'][] = $item[0]; $data['data'][0][] = $item[1]; } } // 取同比偏移量的数据 if ($this->_hasParam('pdate')) { foreach (explode(',', $this->_getParam('pdate')) as $pdate) { $sameOffsetTimestamp = ZtChart_Model_Assemble_Datetime::getPredefinedStartTimestamp($pdate, $nowOffsetTimestamp); $sameData = $qule->getGamedata(array('gametype' => $gameType, 'zoneid' => $this->_getParam('zoneid'), 'loadnumber' => $this->_getParam('range'), 'querydate' => $sameOffsetTimestamp)); if (array_key_exists('data', $sameData) && !empty($sameData['data'])) { foreach ($sameData['data'] as $item) { $data['data'][$pdate][] = $item[1]; } } } } } else { // 取InfoServer中的数据 try { if (ZtChart_Model_DbTable_Infoserver::isSingleAdapter($gameType)) { // 游戏只有一个数据库的情况 $infoserver = ZtChart_Model_DbTable_Infoserver::factory($gameType); // 取当前偏移量的数据 $nowOffsetDate = new Zend_Date($nowOffsetTimestamp); $startNowOffsetTimestamp = $nowOffsetDate->subMinute($this->_getParam('range'))->getTimestamp(); for ($i = 0; $i < $this->_getParam('range'); $i++) { $data['datetime'][$i] = $startNowOffsetTimestamp + $i * 60; $data['tmp'][$i] = date('H:i', $data['datetime'][$i]); } foreach ($infoserver->fetchSumGroup($startNowOffsetTimestamp) as $item) { if (in_array(date('H:i', $item[0]), $data['tmp'])) { $data['data'][0][] = $item[1]; } else { $data['data'][0][] = -1; } } $data['data'][0] = array_pad($data['data'][0], $this->_getParam('range'), -1); // 取同比偏移量的数据 if ($this->_hasParam('pdate')) { foreach (explode(',', $this->_getParam('pdate')) as $pdate) { $startSameOffsetTimestamp = ZtChart_Model_Assemble_Datetime::getPredefinedStartTimestamp($pdate, $startNowOffsetTimestamp); $infoserver->setTablename($startSameOffsetTimestamp); foreach ($infoserver->fetchSumGroup($startSameOffsetTimestamp, $this->_getParam('range')) as $item) { if (in_array(date('H:i', $item[0]), $data['tmp'])) { $data['data'][$pdate][] = $item[1]; } else { $data['data'][$pdate][] = -1; } } $data['data'][$pdate] = array_pad($data['data'][$pdate], $this->_getParam('range'), -1); } } unset($data['tmp']); } else { // @todo 游戏含有多个数据库的情况 } } catch (Zend_Db_Exception $e) { ZtChart_Model_Logger::err($e->getMessage()); continue; } } } $this->_helper->json($data); }
/** * 检查时间单位是否合法 * * @param string $unit * @return boolean */ protected function _checkDatetimeUnit($unit) { return ZtChart_Model_Assemble_Datetime::checkDatetimeUnit($unit); }
/** * 取得获取数据的Select对象 * * @see ZtChart_Model_Assemble_Backend_Abstract::select() * @param string $start 起始时间 * @param string $end 结束时间 * @param integer $pos 时间位置 * @return Zend_Db_Select */ public function select($start, $end, $pos) { $select = $this->columns(self::ROW_LABEL, self::ROW_DATA); $select->where("flserver_datetime >= ?", ZtChart_Model_Assemble_Datetime::padDatetime($start, $pos))->where("flserver_datetime < ?", ZtChart_Model_Assemble_Datetime::padDatetime($end, $pos)); return $select; }
/** * 取得时间范围 * * @param string $start * @param string $end * @param string $unit * @return array */ protected function _getDatetimeRange(&$start, &$end, $unit) { if (empty($start) && empty($end)) { $start = $end = ZtChart_Model_Assemble_Datetime::padDatetime(time(), $unit); } else { if (empty($start)) { $start = ZtChart_Model_Assemble_Datetime::ERA_DATETIME; } else { if (empty($end)) { $end = ZtChart_Model_Assemble_Datetime::padDatetime(time(), $unit); } } } return ZtChart_Model_Assemble_Datetime::getDatetimeRange($start, $end, $unit); }