From fd1a7260affd31d14d02cf01ede6f8a0c041e93a Mon Sep 17 00:00:00 2001 From: Li Jianxuan Date: Fri, 10 Jan 2014 09:21:13 +0000 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=95=B0=E6=8D=AE=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E6=8C=89=E7=94=A8=E6=88=B7=E7=BB=9F=E8=AE=A1=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E4=BA=86=E6=96=B0=E7=94=A8=E6=88=B7=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controllers/StatController.php | 899 +++++++++--------- .../admin/views/scripts/stat/user-nav.phtml | 4 + .../admin/views/scripts/stat/user-new.phtml | 158 +++ .../admin/views/scripts/stat/user.phtml | 132 ++- application/module/Statistics/User.php | 130 +++ 5 files changed, 815 insertions(+), 508 deletions(-) create mode 100644 application/admin/views/scripts/stat/user-nav.phtml create mode 100644 application/admin/views/scripts/stat/user-new.phtml create mode 100644 application/module/Statistics/User.php diff --git a/application/admin/controllers/StatController.php b/application/admin/controllers/StatController.php index 5df02b1c..9d93243b 100644 --- a/application/admin/controllers/StatController.php +++ b/application/admin/controllers/StatController.php @@ -1,437 +1,462 @@ -db=Zend_Registry::get('db'); - $this->view->config = Zend_Registry::get('config'); - $this->messenger=$this->_helper->getHelper('FlashMessenger'); - $this->view->messages = $this->messenger->getMessages(); - $this->view->theme = new Theme(); - $this->_helper->layout->setLayout('administry'); - } - function postDispatch() - { - $this->view->messages = $this->messenger->getMessages(); - } - function indexAction() - { - $sql="select (select count(id) from users) as alluser, - (select count(id) from normalmetadata) as alldata, - (select count(id) as num from dataorder where status=0) as onlinedown, - (select count(id) as num from dataorder where status=5) as offlinedown, - (select count(id) as num from offlineapp where ts_approved is not null) as offlinepass, - (select count(id) as num from offlineapp where ts_approved is null) as offlineunfinished, - (select count(id) as num from dataorder where offlineappid>0 and status=-1) as offlinedenied, - (select count(id) as num from onlineapp) as onlineapp"; - $this->view->stat=$this->db->fetchRow($sql); - - //下载量统计 - $sql = "select sum(num) as num from (select m.filesize/1024 as num,m.title,d.userid from dataorder d left join metadata m on d.uuid=m.uuid where (d.status=0 or d.status=5) and m.filesize>0 group by m.title,d.userid,m.filesize) as t"; - $res = $this->db->query($sql); - $allsize = $res->fetch(); - $this->view->allsize = $allsize; - - $sql = "select sum(num) as num from (select m.filesize/1024 as num,m.title,d.userid from dataorder d left join metadata m on d.uuid=m.uuid where d.status=5 and m.filesize>0 group by m.title,d.userid,m.filesize) as t"; - $res = $this->db->query($sql); - $offlinesize = $res->fetch(); - $this->view->offlinesize = $offlinesize; - - $sql = "select sum(num) as num from (select m.filesize/1024 as num,m.title,d.userid from dataorder d left join metadata m on d.uuid=m.uuid where d.status=0 and m.filesize>0 group by m.title,d.userid,m.filesize) as t"; - $res = $this->db->query($sql); - $onlinesize = $res->fetch(); - $this->view->onlinesize = $onlinesize; - - $sql="select sum(configvalue::real)/1024/1024/1024 as num from g6ftpusersettings where userid in (select id from g6ftpusers where name like 'westdc%' or name='newwestdc') and configname='StatsDownloaded'"; - $res = $this->db->query($sql); - $onlinesize = $res->fetch(); - $this->view->onlineg6size = $onlinesize; - - - }//indexAction 首页 - - function unitAction() - { - $ac = $this->_getParam('ac'); - $y = (int)$this->_request->getParam('y'); - - if(!empty($y)) - { - $n = date("Y",time()); - if($y<2004 || $y>$n) - { - $y=$n; - } - } - $this->view->y = $y; - - //各单位下载情况,统计的离线申请数据条数,需要有对应的dataorder记录 - /*$sql = "select count(d.id) as num,o.unit from dataorder d - left join offlineapp o on o.id=d.offlineappid - where d.offlineappid>0 and o.unit is not null and d.status>4";*/ - //各单位下载情况,统计的离线申请数据次数 - $sql = "select count(o.id) as num,o.unit from offlineapp o - where o.unit is not null "; - if ($y) - $sql.=" and extract(year from o.ts_created)='$y'"; - $sql.=" group by o.unit"; - $fe = $this->db->query($sql); - $unitoffline = $fe->fetchAll(); - - //各单位在线下载情况 - $sql = "select count(d.id) as num,o.unit from dataorder d - left join onlineapp o on o.id=d.onlineappid - where d.onlineappid>0 and o.unit is not null"; - if ($y) - $sql.=" and extract(year from o.ts_created)='$y'"; - $sql.=" group by o.unit"; - $fe = $this->db->query($sql); - $unitonline = $fe->fetchAll(); - - $units = array(); - - foreach($unitonline as $k=>$v) - { - if(isset($v['num'])) - { - $units[$v['unit']]['online'] = $v['num']; - } - } - - foreach($unitoffline as $k=>$v) - { - if(isset($v['num'])) - { - $units[$v['unit']]['offline'] = $v['num']; - } - } - - $index = 1; - - foreach($units as $k=>$v) - { - if(!isset($v['online'])) - { - $units[$k]['online'] = 0; - } - - if(!isset($v['offline'])) - { - $units[$k]['offline'] = 0; - } - - $units[$k]['total'] = $units[$k]['online'] + $units[$k]['offline']; - - $units[$k]['index'] = $index++; - } - - if($ac == "out") - { - $type = $this->_getParam('type'); - - if(empty($type) || $type == "csv") - { - $this->_helper->layout->disableLayout(); - $this->_helper->viewRenderer->setNoRender(); - - include_once("Stat.php"); - $stat = new Stat($this->db); - - $head = array("id","单位名称","离线申请次数","在线申请次数","总申请次数"); - - $content = array(); - - foreach($units as $k=>$v) - { - $content[] = array( - $v['index'], - $k, - $v['offline'], - $v['online'], - $v['total'] - ); - unset($units[$k]); - } - - array_unshift($content,$head); - - $stat->Download("westdc-download-status.csv",$content,"csv"); - exit(); - } - - if($type == "json") - { - $this->_helper->layout->disableLayout(); - $this->_helper->viewRenderer->setNoRender(); - - include_once("Stat.php"); - $stat = new Stat($this->db); - - $content = array(); - - foreach($units as $k=>$v) - { - $content[] = array( - 'index'=>$v['index'], - 'unit'=>$k, - 'offline'=>$v['offline'], - 'online'=>$v['online'], - 'total'=>$v['total'] - ); - unset($units[$k]); - } - - $stat->Download("westdc-download-status.json",$content,"json"); - exit(); - } - - } - - $this->view->units = $units; - - - }//分单位统计 - - //按用户统计 - function userAction(){ - - $ac = $this->_getParam('ac'); - - if($ac == "get") - { - $this->_helper->layout->disableLayout(); - $this->_helper->viewRenderer->setNoRender(); - - include_once("Stat.php"); - $stat = new Stat($this->db); - - $rows = $stat->UserDataorder(); - - $down = $this->_getParam('down'); - if(empty($down)) - { - $this->jsonexit(array("aaData"=>$rows)); - return true; - } - - if($down == "csv") - { - - $this->_helper->layout->disableLayout(); - $this->_helper->viewRenderer->setNoRender(); - - $head = array("id","姓名","离线申请次数","在线申请次数","总申请次数"); - - array_unshift($rows,$head); - - $stat->Download("westdc-download-status.csv",$rows,"csv"); - exit(); - - } - - if($down == "json") - { - - $this->_helper->layout->disableLayout(); - $this->_helper->viewRenderer->setNoRender(); - - /* - $head = array("id","姓名","离线申请次数","在线申请次数","总申请次数"); - - array_unshift($rows,$head); - */ - - $stat->Download("westdc-download-status.json",$rows,"json"); - exit(); - } - - } - - }//userAction() - - function monthAction(){ - - $y = (int)$this->_request->getParam('y'); - - if(!empty($y)) - { - $n = date("Y",time()); - if($y<2004 || $y>$n) - { - $y=$n; - } - } - $this->view->y = $y; - $sql = "select count(extract(month from ts_created)) as c,extract(month from ts_created) as m,extract(year from ts_created) as y from onlineapp - where id in (select distinct(onlineappid) from dataorder)"; - if ($y) - $sql.=" and extract(year from ts_created)='$y' "; - $sql.=" group by extract(month from ts_created),extract(year from ts_created) - order by extract(year from ts_created),extract(month from ts_created)"; - $rs = $this->db->query($sql); - $rows = $rs->fetchAll(); - - $this->view->data = $rows; - - $sql = "select count(extract(month from ts_created)) as c,extract(month from ts_created) as m,extract(year from ts_created) as y from dataorder - where status=0"; - if ($y) - $sql.=" and extract(year from ts_created)='$y' "; - $sql.=" group by extract(month from ts_created),extract(year from ts_created) - order by extract(year from ts_created),extract(month from ts_created)"; - $rs = $this->db->query($sql); - $rows = $rs->fetchAll(); - $this->view->online = $rows; - - $sql = "select count(extract(month from ts_created)) as c,extract(month from ts_created) as m,extract(year from ts_created) as y from offlineapp - where ts_approved is not null"; - if ($y) - $sql.=" and extract(year from ts_created)='$y' "; - $sql.=" group by extract(month from ts_created),extract(year from ts_created) - order by extract(year from ts_created),extract(month from ts_created)"; - $rs = $this->db->query($sql); - $rows = $rs->fetchAll(); - - if(count($rows)<=0) - { - $this->view->offline=""; - } - - $this->view->offline = $rows; - - $sql = "select count(extract(month from ts_created)) as c,extract(month from ts_created) as m,extract(year from ts_created) as y from users"; - if ($y) - $sql.=" where extract(year from ts_created)='$y' "; - $sql.=" group by extract(month from ts_created),extract(year from ts_created) - order by extract(year from ts_created),extract(month from ts_created)"; - $rs = $this->db->query($sql); - $rows = $rs->fetchAll(); - if(count($rows)<=0) - { - $this->view->newuser=""; - } - - $this->view->newuser = $rows; - - - - }//按月份统计 - - function awstatswebAction() - { - - }//awstats web 统计 - - function awstatsweb2Action() - { - - }//awstats web 统计 - - function awstatsftpAction() - { - - }//awstats ftp 统计 - - function awstatsftp2Action() - { - - }//awstats ftp 统计 - - function webalizerAction() - { - - }//webalizer 统计 - - function waterAction() - { - - $sql="select count(k.keyword) as num,d.status,k.keyword from dataorder d left join metadata m on d.uuid=m.uuid - left join keyword k on m.id=k.id - where (d.status=5 or d.status=-1) and m.source='0595169a-279e-4b95-819f-129d0ba4280d' - and (k.keyword='航空遥感' or k.keyword='卫星遥感' or k.keyword='气象水文' or k.keyword='上游寒区水文试验区' or k.keyword='森林水文试验区' or k.keyword='中游干旱区水文试验区') - group by k.keyword,d.status order by k.keyword desc,d.status desc"; - - $re =$this->db->query($sql); - $type =$re->fetchAll();//按分类 - - $this->view->type = $type; - - $sql="select count(extract(month from o.ts_created)) as c,extract(month from o.ts_created) as m,extract(year from o.ts_created) as y - from offlineapp o left join dataorder d on d.offlineappid=o.id left join metadata m on m.uuid=d.uuid - where m.source='0595169a-279e-4b95-819f-129d0ba4280d' and (d.status=3 or d.status=5 or d.status=-1) - group by extract(month from o.ts_created),extract(year from o.ts_created) - order by extract(year from o.ts_created),extract(month from o.ts_created)"; - - $re=$this->db->query($sql); - $month=$re->fetchAll(); - - $this->view->month = $month; - - $sql = "select - extract(year from o.ts_created) as y,extract(month from o.ts_created) as m, - count(extract(month from o.ts_created)) as c - from - (select distinct(o.id),o.ts_created - from offlineapp o where o.datalist like '%黑河综合遥感联合试验%') as o - group by extract(month from o.ts_created),extract(year from o.ts_created) - order by extract(year from o.ts_created),extract(month from o.ts_created)"; - - $re=$this->db->query($sql); - $order=$re->fetchAll(); - - $this->view->order = $order; - - $sql = "select (sum(m.filesize)/1024) as n from dataorder d left join metadata m on d.uuid=m.uuid - where d.status=5 and m.source='0595169a-279e-4b95-819f-129d0ba4280d'"; - - $re=$this->db->query($sql); - $num=$re->fetchAll(); - - $this->view->num=$num; - - - $sql = "select count(lower(o.unit)) as c,lower(o.unit) as u - from offlineapp o left join dataorder d on d.offlineappid=o.id left join metadata m on m.uuid=d.uuid - where m.source='0595169a-279e-4b95-819f-129d0ba4280d' and (d.status=5) - group by lower(o.unit) - order by lower(o.unit)"; - - $re=$this->db->query($sql); - $units=$re->fetchAll(); - - $this->view->units=$units; - - - $sql = "select count(t.unit) as c,t.unit from - (select distinct(o.id),o.unit - from offlineapp o left join dataorder d on d.offlineappid=o.id left join metadata m on m.uuid=d.uuid - where m.source='0595169a-279e-4b95-819f-129d0ba4280d' and (d.status=5) - ) as t - group by t.unit"; - - $re = $this->db->query($sql); - $ounit= $re->fetchAll(); - - $this->view->ounit = $ounit; - - //water 项目按月统计下载量 - $sql = "select (sum(m.filesize)/1024) as n,extract(month from d.ts_created) as m,extract(year from d.ts_created) as y from dataorder d left join metadata m on d.uuid=m.uuid - where d.status=5 and m.source='0595169a-279e-4b95-819f-129d0ba4280d' - group by extract(month from d.ts_created),extract(year from d.ts_created) - order by extract(year from d.ts_created),extract(month from d.ts_created)"; - - $re = $this->db->query($sql); - $dm = $re->fetchAll(); - - $this->view->dm = $dm; - - - }//WATER项目 - - public function jsonexit($data){ - $this->getResponse()->setHeader('Content-Type', 'application/json')->appendBody(json_encode($data,JSON_NUMERIC_CHECK)); - return true; - }//jsonexit() 退出并返回json数据 - -} - +db=Zend_Registry::get('db'); + $this->view->config = Zend_Registry::get('config'); + $this->messenger=$this->_helper->getHelper('FlashMessenger'); + $this->view->messages = $this->messenger->getMessages(); + $this->view->theme = new Theme(); + $this->_helper->layout->setLayout('administry'); + } + function postDispatch() + { + $this->view->messages = $this->messenger->getMessages(); + } + function indexAction() + { + $sql="select (select count(id) from users) as alluser, + (select count(id) from normalmetadata) as alldata, + (select count(id) as num from dataorder where status=0) as onlinedown, + (select count(id) as num from dataorder where status=5) as offlinedown, + (select count(id) as num from offlineapp where ts_approved is not null) as offlinepass, + (select count(id) as num from offlineapp where ts_approved is null) as offlineunfinished, + (select count(id) as num from dataorder where offlineappid>0 and status=-1) as offlinedenied, + (select count(id) as num from onlineapp) as onlineapp"; + $this->view->stat=$this->db->fetchRow($sql); + + //下载量统计 + $sql = "select sum(num) as num from (select m.filesize/1024 as num,m.title,d.userid from dataorder d left join metadata m on d.uuid=m.uuid where (d.status=0 or d.status=5) and m.filesize>0 group by m.title,d.userid,m.filesize) as t"; + $res = $this->db->query($sql); + $allsize = $res->fetch(); + $this->view->allsize = $allsize; + + $sql = "select sum(num) as num from (select m.filesize/1024 as num,m.title,d.userid from dataorder d left join metadata m on d.uuid=m.uuid where d.status=5 and m.filesize>0 group by m.title,d.userid,m.filesize) as t"; + $res = $this->db->query($sql); + $offlinesize = $res->fetch(); + $this->view->offlinesize = $offlinesize; + + $sql = "select sum(num) as num from (select m.filesize/1024 as num,m.title,d.userid from dataorder d left join metadata m on d.uuid=m.uuid where d.status=0 and m.filesize>0 group by m.title,d.userid,m.filesize) as t"; + $res = $this->db->query($sql); + $onlinesize = $res->fetch(); + $this->view->onlinesize = $onlinesize; + + $sql="select sum(configvalue::real)/1024/1024/1024 as num from g6ftpusersettings where userid in (select id from g6ftpusers where name like 'westdc%' or name='newwestdc') and configname='StatsDownloaded'"; + $res = $this->db->query($sql); + $onlinesize = $res->fetch(); + $this->view->onlineg6size = $onlinesize; + + + }//indexAction 首页 + + function unitAction() + { + $ac = $this->_getParam('ac'); + $y = (int)$this->_request->getParam('y'); + + if(!empty($y)) + { + $n = date("Y",time()); + if($y<2004 || $y>$n) + { + $y=$n; + } + } + $this->view->y = $y; + + //各单位下载情况,统计的离线申请数据条数,需要有对应的dataorder记录 + /*$sql = "select count(d.id) as num,o.unit from dataorder d + left join offlineapp o on o.id=d.offlineappid + where d.offlineappid>0 and o.unit is not null and d.status>4";*/ + //各单位下载情况,统计的离线申请数据次数 + $sql = "select count(o.id) as num,o.unit from offlineapp o + where o.unit is not null "; + if ($y) + $sql.=" and extract(year from o.ts_created)='$y'"; + $sql.=" group by o.unit"; + $fe = $this->db->query($sql); + $unitoffline = $fe->fetchAll(); + + //各单位在线下载情况 + $sql = "select count(d.id) as num,o.unit from dataorder d + left join onlineapp o on o.id=d.onlineappid + where d.onlineappid>0 and o.unit is not null"; + if ($y) + $sql.=" and extract(year from o.ts_created)='$y'"; + $sql.=" group by o.unit"; + $fe = $this->db->query($sql); + $unitonline = $fe->fetchAll(); + + $units = array(); + + foreach($unitonline as $k=>$v) + { + if(isset($v['num'])) + { + $units[$v['unit']]['online'] = $v['num']; + } + } + + foreach($unitoffline as $k=>$v) + { + if(isset($v['num'])) + { + $units[$v['unit']]['offline'] = $v['num']; + } + } + + $index = 1; + + foreach($units as $k=>$v) + { + if(!isset($v['online'])) + { + $units[$k]['online'] = 0; + } + + if(!isset($v['offline'])) + { + $units[$k]['offline'] = 0; + } + + $units[$k]['total'] = $units[$k]['online'] + $units[$k]['offline']; + + $units[$k]['index'] = $index++; + } + + if($ac == "out") + { + $type = $this->_getParam('type'); + + if(empty($type) || $type == "csv") + { + $this->_helper->layout->disableLayout(); + $this->_helper->viewRenderer->setNoRender(); + + include_once("Stat.php"); + $stat = new Stat($this->db); + + $head = array("id","单位名称","离线申请次数","在线申请次数","总申请次数"); + + $content = array(); + + foreach($units as $k=>$v) + { + $content[] = array( + $v['index'], + $k, + $v['offline'], + $v['online'], + $v['total'] + ); + unset($units[$k]); + } + + array_unshift($content,$head); + + $stat->Download("westdc-download-status.csv",$content,"csv"); + exit(); + } + + if($type == "json") + { + $this->_helper->layout->disableLayout(); + $this->_helper->viewRenderer->setNoRender(); + + include_once("Stat.php"); + $stat = new Stat($this->db); + + $content = array(); + + foreach($units as $k=>$v) + { + $content[] = array( + 'index'=>$v['index'], + 'unit'=>$k, + 'offline'=>$v['offline'], + 'online'=>$v['online'], + 'total'=>$v['total'] + ); + unset($units[$k]); + } + + $stat->Download("westdc-download-status.json",$content,"json"); + exit(); + } + + } + + $this->view->units = $units; + + + }//分单位统计 + + //按用户统计 + function userAction(){ + + $this->view->ac = $ac = $this->_getParam('ac'); + + if($ac == "new") + { + $this->_helper->viewRenderer('user-new'); + $this->view->year = $year = !empty($this->_getParam('year')) ? $this->_getParam('year'):date("Y"); + $this->view->by = $by = !empty($this->_getParam('by')) ? $this->_getParam('by'):"month"; + $userStatistics = new \Statistics\User(); + + if($by == "month") + { + $this->view->data = $userStatistics->getNewUsersByMonth($year); + } + + if($by == "year") + { + $this->view->data = $userStatistics->getNewUsersByYear($year); + } + + if($by == "monthavg") + { + $this->view->data = $userStatistics->getAverageSingupByMonth($year); + } + + return true; + } + + if($ac == "get") + { + $this->_helper->layout->disableLayout(); + $this->_helper->viewRenderer->setNoRender(); + + include_once("Stat.php"); + $stat = new Stat($this->db); + + $rows = $stat->UserDataorder(); + + $down = $this->_getParam('down'); + if(empty($down)) + { + $this->jsonexit(array("aaData"=>$rows)); + return true; + } + + if($down == "csv") + { + + $this->_helper->layout->disableLayout(); + $this->_helper->viewRenderer->setNoRender(); + + $head = array("id","姓名","离线申请次数","在线申请次数","总申请次数"); + + array_unshift($rows,$head); + + $stat->Download("westdc-download-status.csv",$rows,"csv"); + exit(); + + } + + if($down == "json") + { + + $this->_helper->layout->disableLayout(); + $this->_helper->viewRenderer->setNoRender(); + + /* + $head = array("id","姓名","离线申请次数","在线申请次数","总申请次数"); + + array_unshift($rows,$head); + */ + + $stat->Download("westdc-download-status.json",$rows,"json"); + exit(); + } + + } + + }//userAction() + + function monthAction(){ + + $y = (int)$this->_request->getParam('y'); + + if(!empty($y)) + { + $n = date("Y",time()); + if($y<2004 || $y>$n) + { + $y=$n; + } + } + $this->view->y = $y; + $sql = "select count(extract(month from ts_created)) as c,extract(month from ts_created) as m,extract(year from ts_created) as y from onlineapp + where id in (select distinct(onlineappid) from dataorder)"; + if ($y) + $sql.=" and extract(year from ts_created)='$y' "; + $sql.=" group by extract(month from ts_created),extract(year from ts_created) + order by extract(year from ts_created),extract(month from ts_created)"; + $rs = $this->db->query($sql); + $rows = $rs->fetchAll(); + + $this->view->data = $rows; + + $sql = "select count(extract(month from ts_created)) as c,extract(month from ts_created) as m,extract(year from ts_created) as y from dataorder + where status=0"; + if ($y) + $sql.=" and extract(year from ts_created)='$y' "; + $sql.=" group by extract(month from ts_created),extract(year from ts_created) + order by extract(year from ts_created),extract(month from ts_created)"; + $rs = $this->db->query($sql); + $rows = $rs->fetchAll(); + $this->view->online = $rows; + + $sql = "select count(extract(month from ts_created)) as c,extract(month from ts_created) as m,extract(year from ts_created) as y from offlineapp + where ts_approved is not null"; + if ($y) + $sql.=" and extract(year from ts_created)='$y' "; + $sql.=" group by extract(month from ts_created),extract(year from ts_created) + order by extract(year from ts_created),extract(month from ts_created)"; + $rs = $this->db->query($sql); + $rows = $rs->fetchAll(); + + if(count($rows)<=0) + { + $this->view->offline=""; + } + + $this->view->offline = $rows; + + $sql = "select count(extract(month from ts_created)) as c,extract(month from ts_created) as m,extract(year from ts_created) as y from users"; + if ($y) + $sql.=" where extract(year from ts_created)='$y' "; + $sql.=" group by extract(month from ts_created),extract(year from ts_created) + order by extract(year from ts_created),extract(month from ts_created)"; + $rs = $this->db->query($sql); + $rows = $rs->fetchAll(); + if(count($rows)<=0) + { + $this->view->newuser=""; + } + + $this->view->newuser = $rows; + + + + }//按月份统计 + + function awstatswebAction() + { + + }//awstats web 统计 + + function awstatsweb2Action() + { + + }//awstats web 统计 + + function awstatsftpAction() + { + + }//awstats ftp 统计 + + function awstatsftp2Action() + { + + }//awstats ftp 统计 + + function webalizerAction() + { + + }//webalizer 统计 + + function waterAction() + { + + $sql="select count(k.keyword) as num,d.status,k.keyword from dataorder d left join metadata m on d.uuid=m.uuid + left join keyword k on m.id=k.id + where (d.status=5 or d.status=-1) and m.source='0595169a-279e-4b95-819f-129d0ba4280d' + and (k.keyword='航空遥感' or k.keyword='卫星遥感' or k.keyword='气象水文' or k.keyword='上游寒区水文试验区' or k.keyword='森林水文试验区' or k.keyword='中游干旱区水文试验区') + group by k.keyword,d.status order by k.keyword desc,d.status desc"; + + $re =$this->db->query($sql); + $type =$re->fetchAll();//按分类 + + $this->view->type = $type; + + $sql="select count(extract(month from o.ts_created)) as c,extract(month from o.ts_created) as m,extract(year from o.ts_created) as y + from offlineapp o left join dataorder d on d.offlineappid=o.id left join metadata m on m.uuid=d.uuid + where m.source='0595169a-279e-4b95-819f-129d0ba4280d' and (d.status=3 or d.status=5 or d.status=-1) + group by extract(month from o.ts_created),extract(year from o.ts_created) + order by extract(year from o.ts_created),extract(month from o.ts_created)"; + + $re=$this->db->query($sql); + $month=$re->fetchAll(); + + $this->view->month = $month; + + $sql = "select + extract(year from o.ts_created) as y,extract(month from o.ts_created) as m, + count(extract(month from o.ts_created)) as c + from + (select distinct(o.id),o.ts_created + from offlineapp o where o.datalist like '%黑河综合遥感联合试验%') as o + group by extract(month from o.ts_created),extract(year from o.ts_created) + order by extract(year from o.ts_created),extract(month from o.ts_created)"; + + $re=$this->db->query($sql); + $order=$re->fetchAll(); + + $this->view->order = $order; + + $sql = "select (sum(m.filesize)/1024) as n from dataorder d left join metadata m on d.uuid=m.uuid + where d.status=5 and m.source='0595169a-279e-4b95-819f-129d0ba4280d'"; + + $re=$this->db->query($sql); + $num=$re->fetchAll(); + + $this->view->num=$num; + + + $sql = "select count(lower(o.unit)) as c,lower(o.unit) as u + from offlineapp o left join dataorder d on d.offlineappid=o.id left join metadata m on m.uuid=d.uuid + where m.source='0595169a-279e-4b95-819f-129d0ba4280d' and (d.status=5) + group by lower(o.unit) + order by lower(o.unit)"; + + $re=$this->db->query($sql); + $units=$re->fetchAll(); + + $this->view->units=$units; + + + $sql = "select count(t.unit) as c,t.unit from + (select distinct(o.id),o.unit + from offlineapp o left join dataorder d on d.offlineappid=o.id left join metadata m on m.uuid=d.uuid + where m.source='0595169a-279e-4b95-819f-129d0ba4280d' and (d.status=5) + ) as t + group by t.unit"; + + $re = $this->db->query($sql); + $ounit= $re->fetchAll(); + + $this->view->ounit = $ounit; + + //water 项目按月统计下载量 + $sql = "select (sum(m.filesize)/1024) as n,extract(month from d.ts_created) as m,extract(year from d.ts_created) as y from dataorder d left join metadata m on d.uuid=m.uuid + where d.status=5 and m.source='0595169a-279e-4b95-819f-129d0ba4280d' + group by extract(month from d.ts_created),extract(year from d.ts_created) + order by extract(year from d.ts_created),extract(month from d.ts_created)"; + + $re = $this->db->query($sql); + $dm = $re->fetchAll(); + + $this->view->dm = $dm; + + + }//WATER项目 + + public function jsonexit($data){ + $this->getResponse()->setHeader('Content-Type', 'application/json')->appendBody(json_encode($data,JSON_NUMERIC_CHECK)); + return true; + }//jsonexit() 退出并返回json数据 + +} + diff --git a/application/admin/views/scripts/stat/user-nav.phtml b/application/admin/views/scripts/stat/user-nav.phtml new file mode 100644 index 00000000..107f3f29 --- /dev/null +++ b/application/admin/views/scripts/stat/user-nav.phtml @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/application/admin/views/scripts/stat/user-new.phtml b/application/admin/views/scripts/stat/user-new.phtml new file mode 100644 index 00000000..bc40c7d5 --- /dev/null +++ b/application/admin/views/scripts/stat/user-new.phtml @@ -0,0 +1,158 @@ +headTitle($this->config->title->site); + $this->headTitle('后台管理'); + $this->headTitle()->setSeparator(' - '); + $this->theme->AppendPlus($this,'jquery'); + $this->theme->AppendPlus($this,'colorbox'); + $this->headLink()->appendStylesheet('/css/jquery.jqplot.css'); + $this->breadcrumb('首页'); + $this->breadcrumb('后台首页'); + $this->breadcrumb()->setSeparator(' > '); +?> + + + + + + +
+
+ partial('stat/left.phtml'); ?> +
+
+ + partial('stat/user-nav.phtml',array('ac'=>$this->ac)); ?> + + + +
+ 年份: + by,array("year","monthavg") )) {?>所有 + =2004 ;$i--) + { + $active = $this->year == $i ? "disabled":""; + echo ''.$i.''; + } + ?> +
+ + by == 'month' && !empty($this->data)){ ?> + +
+

year ?>的按月新用户注册量统计

+
+
+ + + + + + + + + data as $k=>$v) {?> + + + +
月份增量
+
+
+ + +
+
+ + + + by == 'year' && !empty($this->data)){ ?> + +
+

year == -1 ? "所有":$this->year ?>的新用户注册量统计

+
+
+ + + + + + + + + data as $k=>$v) {?> + + + +
年份增量
+
+
+ + + +
+
+
+ + + + by == 'monthavg' && !empty($this->data)){ ?> + +
+

year ?>的月均用户注册量

+
+
+ + + + + + + + + data as $k=>$v) {?> + + + +
年份月均
+
+
+ +
+
+ + + +
+
\ No newline at end of file diff --git a/application/admin/views/scripts/stat/user.phtml b/application/admin/views/scripts/stat/user.phtml index b90b15d4..1b2adac8 100644 --- a/application/admin/views/scripts/stat/user.phtml +++ b/application/admin/views/scripts/stat/user.phtml @@ -1,72 +1,62 @@ -headTitle($this->config->title->site); - $this->headTitle('后台管理'); - $this->headTitle()->setSeparator(' - '); - $this->headLink()->appendStylesheet('/css/admin.css'); - $this->theme->AppendPlus($this,'jquery'); - $this->theme->AppendPlus($this,'colorbox'); - $this->theme->AppendPlus($this,'datatable'); - $this->breadcrumb('首页'); - $this->breadcrumb('后台首页'); - $this->breadcrumb()->setSeparator(' > '); -?> - -
-partial('stat/left.phtml'); ?> -
-
- - -
-点击列名进行排序 -
-
- - - - - - - - - - - - - -
ID用户离线申请次数在线申请次数总申请次数
-
- -
- \ No newline at end of file diff --git a/application/module/Statistics/User.php b/application/module/Statistics/User.php new file mode 100644 index 00000000..c7b69c04 --- /dev/null +++ b/application/module/Statistics/User.php @@ -0,0 +1,130 @@ +db = \Zend_Registry::get('db'); + }else{ + $this->db = $db; + } + + $this->config = \Zend_Registry::get('config'); + + $this->table = new \Helpers\Table(); + } + + public function ThisYear(){ + return date("Y",time()); + } + + //按年统计新用户 + public function getNewUsersByYear($year = 0) + { + if(empty($year)) + { + $year = $this->ThisYear(); + } + + if($year == -1) + { + $sql = "select count(id),extract(year from ts_created) + from users + group by extract(year from ts_created) + order by date_part"; + }else{ + $sql = "select count(id),extract(year from ts_created) + from users + where extract(year from ts_created)='$year' + group by extract(year from ts_created)"; + } + + $rs = $this->db->query($sql); + $rows = $rs->fetchAll(); + return $rows; + } + + //按月统计新用户 + public function getNewUsersByMonth($year = 0) + { + if(empty($year)) + { + $year = $this->ThisYear(); + } + + $sql = "select count(id),extract(month from ts_created) + from users + where extract(year from ts_created)=$year + group by extract(month from ts_created) + order by date_part"; + + $rs = $this->db->query($sql); + $rows = $rs->fetchAll(); + return $rows; + } + + //月均注册量 + public function getAverageSingupByMonth($year = 0) + { + if(empty($year)) + { + $year = $this->ThisYear(); + } + + $sql = "select round(count(id)/12) as count,extract(year from ts_created) + from users + where extract(year from ts_created)='$year' + group by extract(year from ts_created)"; + + $rs = $this->db->query($sql); + $rows = $rs->fetchAll(); + return $rows; + } + + //总用户量 + public function getTotal($year = 0) + { + if(empty($year)) + { + $year = $this->ThisYear(); + } + + $sql = ""; + + $rs = $this->db->query($sql); + $rows = $rs->fetchAll(); + return $rows; + } + + //平均申请数 + public function getAverageApplicationTimes($times = 1) + { + if(empty($year)) + { + $times = 1; + } + + $sql = ""; + + $rs = $this->db->query($sql); + $rows = $rs->fetchAll(); + return $rows; + } + +}