/**
  * 通过Ajax获取数据
  */
 public function ajaxAction()
 {
     if ($this->_request->isXmlHttpRequest()) {
         $assemble = new ZtChart_Model_Assemble('Flserver');
         $this->_helper->json($assemble->getAssembleData($this->_getParam('start'), $this->_getParam('end'), Zend_Date::SECOND));
     }
 }
 /**
  * 游戏列表
  */
 public function groupAction()
 {
     $this->view->request = $this->_request;
     $assemble = new ZtChart_Model_Assemble('Usertrade_Account');
     $assemble->setFrontendFormat('group');
     $this->view->todayConsume = $assemble->findPredefinedAssembleDataWithConsumeAndApaAndGroup(ZtChart_Model_Assemble_Datetime::TODAY);
     $this->view->yestodayConsume = $assemble->findPredefinedAssembleDataWithConsumeAndApaAndGroup(ZtChart_Model_Assemble_Datetime::YESTODAY);
     $this->view->todayConsumeBank = $assemble->findPredefinedAssembleDataWithConsumeAndNetbankAndGroup(ZtChart_Model_Assemble_Datetime::TODAY);
     $this->view->yestodayConsumeBank = $assemble->findPredefinedAssembleDataWithConsumeAndNetbankAndGroup(ZtChart_Model_Assemble_Datetime::YESTODAY);
     $assemble = new ZtChart_Model_Assemble('Flserver_Account');
     $assemble->setFrontendFormat('group');
     $this->view->todayAccount = $assemble->findPredefinedAssembleDataWithAccountAndGroup(ZtChart_Model_Assemble_Datetime::TODAY);
     $this->view->yestodayAccount = $assemble->findPredefinedAssembleDataWithAccountAndGroup(ZtChart_Model_Assemble_Datetime::YESTODAY);
 }
 /**
  * 扩展父类功能,设置默认缓存。
  */
 public function getCacheManager()
 {
     if (null != ($cacheManager = parent::getCacheManager())) {
         // 设置图表数据的缓存
         if ($cacheManager->hasCache('chart')) {
             ZtChart_Model_Assemble::setCache($cacheManager->getCache('chart'));
         }
         // 设置权限控制数据的缓存
         if ($cacheManager->hasCache('acl')) {
             ZtChart_Model_Acl_Loader::setCache($cacheManager->getCache('acl'));
         }
         // 设置IP数据的缓存
         if ($cacheManager->hasCache('ip')) {
             ZtChart_Model_Assemble_Ip::setCache($cacheManager->getCache('ip'));
         }
     }
     return $cacheManager;
 }
 /**
  * 充值月趋势
  */
 public function tendencyAction()
 {
     if ($this->_hasParam('chart')) {
         $assemble = new ZtChart_Model_Assemble('Usertrade_Account', 'RGraph');
     } else {
         $assemble = new ZtChart_Model_Assemble('Usertrade_Account');
     }
     if ($this->_hasParam('gametype')) {
         $assemble->setGameTypes($this->_getParam('gametype'));
     }
     if (0 != ($selectDatetime = $this->_getParam('select_datetime', ZtChart_Model_Assemble_Datetime::THIS_YEAR))) {
         $chart = $assemble->findPredefinedAssembleDataWithPayment($selectDatetime, Zend_Date::MONTH);
         $chartBank = $assemble->findPredefinedAssembleDataWithPaymentAndNetbank($selectDatetime, Zend_Date::MONTH);
     } else {
         $chart = $assemble->findRangeAssembleDataWithPayment($this->_getParam('start'), $this->_getParam('end'), Zend_Date::DAY);
         $chartBank = $assemble->findRangeAssembleDataWithPaymentAndNetbank($this->_getParam('start'), $this->_getParam('end'), Zend_Date::DAY);
     }
     $this->view->assign($chart);
     $this->view->assign('chartBank', $chartBank['chart']);
 }
 /**
  * 地区分布
  */
 public function areaAction()
 {
     if ($this->_hasParam('chart')) {
         $assemble = new ZtChart_Model_Assemble('Usertrade_Area', 'RGraph');
     } else {
         $assemble = new ZtChart_Model_Assemble('Usertrade_Area');
     }
     if ($this->_hasParam('gametype')) {
         $assemble->setGameTypes($this->_getParam('gametype'));
     }
     $assemble->setFrontendFormat('area');
     if (0 != ($selectDatetime = $this->_getParam('select_datetime', ZtChart_Model_Assemble_Datetime::TODAY))) {
         $chart = $assemble->findPredefinedAssembleDataWithConsume($selectDatetime);
         $chartBank = $assemble->findPredefinedAssembleDataWithConsumeAndNetbank($selectDatetime);
     } else {
         $chart = $assemble->findRangeAssembleDataWithConsume($this->_getParam('start'), $this->_getParam('end'), Zend_Date::DAY);
         $chartBank = $assemble->findRangeAssembleDataWithConsumeAndNetbank($this->_getParam('start'), $this->_getParam('end'), Zend_Date::DAY);
     }
     $this->view->assign($chart);
     $this->view->assign('chartBank', $chartBank['chart']);
 }
 /**
  * 取得解析后的日志数据,写入数据库。
  * 
  * @param integer $interval
  * @return void
  * @throws ZtChart_Model_Monitor_Exception
  */
 public function extract($interval)
 {
     foreach (ZtChart_Model_Monitor_Log::getIdentifierClasses() as $identifierClass) {
         $logIdentifier = constant("{$identifierClass}::LOG_IDENTIFIER");
         $shmIdentifier = constant("{$identifierClass}::SHM_IDENTIFIER");
         $tmpfile = $this->_tmpfile($logIdentifier);
         if (file_put_contents($tmpfile, $this->_shmRead($shmIdentifier, true))) {
             $cachetime = time() - 2;
             // 当前服务器时间与LogServer时间可能有误差,因此设2秒冗余时间。
             try {
                 $affected = $this->_exec("LOAD DATA INFILE '{$tmpfile}' INTO TABLE {$logIdentifier} FIELDS TERMINATED BY ','");
             } catch (Zend_Db_Adapter_Exception $e) {
                 throw new ZtChart_Model_Monitor_Exception($e);
             }
             try {
                 $assemble = new ZtChart_Model_Assemble($logIdentifier);
                 $assemble->cacheRangeRawData($cachetime - $interval, $cachetime, Zend_Date::SECOND, 300);
             } catch (ZtChart_Model_Assemble_Exception $e) {
                 $this->_logger->warn($e->getMessage());
             }
             $this->_logger->info("{$identifierClass}: {$affected} 行数据被导入 {$logIdentifier} 表");
         }
         @unlink($tmpfile);
     }
 }
 /**
  * 地区分布
  */
 public function areaAction()
 {
     if ($this->_hasParam('chart')) {
         $assemble = new ZtChart_Model_Assemble('Flserver_Area', 'RGraph');
     } else {
         $assemble = new ZtChart_Model_Assemble('Flserver_Area');
     }
     if ($this->_hasParam('gametype')) {
         $assemble->setGameTypes($this->_getParam('gametype'));
     }
     $assemble->setFrontendFormat('area');
     if (0 != ($selectDatetime = $this->_getParam('select_datetime', ZtChart_Model_Assemble_Datetime::TODAY))) {
         $chart = $assemble->getPredefinedAssembleData($selectDatetime);
     } else {
         $chart = $assemble->getRangeAssembleData($this->_getParam('start'), $this->_getParam('end'), Zend_Date::DAY);
     }
     $this->view->assign($chart);
 }
 /**
  * 设置缓存对象
  * 
  * @static
  * @param Zend_Cache_Core $cache
  */
 public static function setCache($cache)
 {
     self::$_cache = $cache;
 }
 /**
  * 实时消耗
  */
 public function consumeAction()
 {
     if ($this->_hasParam('chart')) {
         $assemble = new ZtChart_Model_Assemble('Usertrade', 'RGraph');
         if ($this->_hasParam('gametype')) {
             $assemble->setGameTypes($this->_getParam('gametype'));
         }
         $consume = $assemble->findRangeAssembleDataWithConsume($this->_getParam('start'), $this->_getParam('end'), Zend_Date::SECOND);
         $netbank = $assemble->findRangeAssembleDataWithConsumeAndNetbank($this->_getParam('start'), $this->_getParam('end'), Zend_Date::SECOND);
         $this->view->assign(compact('consume', 'netbank'));
     } else {
         if ($this->_hasParam('control')) {
             $this->render('consumeControl');
         }
     }
 }
 /**
  * 今日地区分布
  */
 public function areaAction()
 {
     if ($this->_hasParam('chart')) {
         if ('pieAccess' == $this->_getParam('chart')) {
             $assemble = new ZtChart_Model_Assemble('Flserver_Area', 'RGraph');
             if ($this->_hasParam('gametype')) {
                 $assemble->setGameTypes($this->_getParam('gametype'));
             }
             $assemble->setFrontendFormat('area');
             $this->view->assign($assemble->getPredefinedAssembleData(ZtChart_Model_Assemble_Datetime::TODAY));
         }
         if ('pieConsume' == $this->_getParam('chart')) {
             $assemble = new ZtChart_Model_Assemble('Usertrade_Area', 'RGraph');
             if ($this->_hasParam('gametype')) {
                 $assemble->setGameTypes($this->_getParam('gametype'));
             }
             $assemble->setFrontendFormat('area');
             $this->view->assign($assemble->findPredefinedAssembleDataWithConsume(ZtChart_Model_Assemble_Datetime::TODAY));
         }
     }
 }