123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- <?php
- class ChannelCountController extends AdminController{
- public $layout = 'none';
- public function actionAll(){
- $visitor = Yii::app()->request->getParam('visitor');
- if($visitor){
- $coll = 'users';
- }else{
- $coll = 'visitors';
- }
- $mongo = new MongoClient(DB_CONNETC);
- $db = $mongo->wozhua_data;//库
- $collection = $db->selectCollection($coll);
- $keys = array("channel" => 1);
- $initial = array("count" => 0);
- $reduce = "function (obj, prev) { prev.count++; }";
- $g = $collection->group($keys, $initial, $reduce);
- $this->render('all',array('data'=>$g['retval'],'sum'=>$g['count']));
- }
- public function actionByDay(){
- $week_data = array();
- $data['date_str'] = '';
- $visitor = Yii::app()->request->getParam('visitor');
- if($visitor){
- $coll = 'users';
- $time_condition = 'register_time';
- }else{
- $coll = 'visitors';
- $time_condition = 'first_time';
- }
- $mongo = new MongoClient(DB_CONNETC);
- $db = $mongo->wozhua_data;
- for($i=6;$i>=0;$i--){
- $day_start = strtotime(date('Ymd'))-$i*86400;
- $date = date('m-d',$day_start);
- $data['date_str'].= '"'.$date.'",';
- $day_last = $day_start+86400;
- $collection = $db->selectCollection($coll);
- $keys = array("channel"=>1);
- $initial = array("count"=>0);
- $reduce = "function (obj, prev) { prev.count++; }";
- $condition = array('condition' => array($time_condition => array( '$gte' => $day_start,'$lt' => $day_last)));
- $g = $collection->group($keys, $initial, $reduce, $condition);
- $week_data[$date] = $g['retval'];
- }
- $channel = array();
- foreach ($week_data as $value) {
- if(is_array($value)){
- foreach ($value as $val) {
- if(!empty($val['channel'])&&!in_array($val['channel'],$channel)){
- $channel[] = $val['channel'];
- }
- }
- }
- }
- $data['channel_str'] ='';
- foreach ($channel as $value) {
- $data['channel_str'].= '"'.$value.'",';
- }
- $data['channel_str'] = substr($data['channel_str'],0,mb_strlen($data['channel_str'])-1);
- $data['date_str'] = substr($data['date_str'],0,mb_strlen($data['date_str'])-1);
- $data['channel_data'] = array();
- foreach ($channel as $t_channel) {
- $data['channel_data'][$t_channel] = '';
- foreach ($week_data as $key => $value) {
- foreach ($value as $val) {
- if($val['channel']==$t_channel){
- $t_count = $val['count'];
- }
- }
- if (isset($t_count)) {
- $data['channel_data'][$t_channel] = $data['channel_data'][$t_channel].$t_count.',';
- }else{
- $data['channel_data'][$t_channel] = $data['channel_data'][$t_channel].'0'.',';
- }
- unset($t_count);
- }
- }
- $this->render('view',array('data'=>$data));
- }
- public function actionByWeek(){
- $month_data = array();
- $data['date_str'] = '';
- $visitor = Yii::app()->request->getParam('visitor');
- if($visitor){
- $coll = 'users';
- $time_condition = 'register_time';
- }else{
- $coll = 'visitors';
- $time_condition = 'first_time';
- }
- $mongo = new MongoClient(DB_CONNETC);
- $db = $mongo->wozhua_data;
- for($i=4;$i>=0;$i--){
- $day_start = strtotime(date("Y-m-d",mktime(0,0,0,date("m"),date("d")-date("w")+1,date("Y"))))-$i*604800;
- $date = date('W',$day_start);
- $data['date_str'].= '"第'.$date.'周",';
- $day_last = $day_start+604800;
- $collection = $db->selectCollection($coll);
- $keys = array("channel"=>1);
- $initial = array("count"=>0);
- $reduce = "function (obj, prev) { prev.count++; }";
- $condition = array('condition' => array($time_condition => array( '$gte' => $day_start,'$lt' => $day_last)));
- $g = $collection->group($keys, $initial, $reduce, $condition);
- $month_data[$date] = $g['retval'];
- }
- $channel = array();
- foreach ($month_data as $value) {
- if(is_array($value)){
- foreach ($value as $val) {
- if(!empty($val['channel'])&&!in_array($val['channel'],$channel)){
- $channel[] = $val['channel'];
- }
- }
- }
- }
- $data['channel_str'] ='';
- foreach ($channel as $value) {
- $data['channel_str'].= '"'.$value.'",';
- }
- $data['channel_str'] = substr($data['channel_str'],0,mb_strlen($data['channel_str'])-1);
- $data['date_str'] = substr($data['date_str'],0,mb_strlen($data['date_str'])-1);
- $data['channel_data'] = array();
- foreach ($channel as $t_channel) {
- $data['channel_data'][$t_channel] = '';
- foreach ($month_data as $key => $value) {
- foreach ($value as $val) {
- if($val['channel']==$t_channel){
- $t_count = $val['count'];
- }
- }
- if (isset($t_count)) {
- $data['channel_data'][$t_channel] = $data['channel_data'][$t_channel].$t_count.',';
- }else{
- $data['channel_data'][$t_channel] = $data['channel_data'][$t_channel].'0'.',';
- }
- unset($t_count);
- }
- }
- $this->render('view',array('data'=>$data));
- }
- public function actionByMonth(){
- $month_data = array();
- $data['date_str'] = '';
- $visitor = Yii::app()->request->getParam('visitor');
- if($visitor){
- $coll = 'users';
- $time_condition = 'register_time';
- }else{
- $coll = 'visitors';
- $time_condition = 'first_time';
- }
- $mongo = new MongoClient(DB_CONNETC);
- $db = $mongo->wozhua_data;
- for($i=5;$i>=0;$i--){
- $this_month = date('m');
- $temp_month = $this_month-$i;
- $time_str = date('Y-').$temp_month.'-01';
- $day_start = strtotime($time_str);
- $date = date('F',$day_start);
- $data['date_str'].= '"'.$date.'",';
- $day_last = strtotime(date('Y-m-d', strtotime(date('Y-m-01', strtotime($time_str)) . ' +1 month -1 day')));
- $collection = $db->selectCollection($coll);
- $keys = array("channel"=>1);
- $initial = array("count"=>0);
- $reduce = "function (obj, prev) { prev.count++; }";
- $condition = array('condition' => array($time_condition => array( '$gte' => $day_start,'$lt' => $day_last)));
- $g = $collection->group($keys, $initial, $reduce, $condition);
- $month_data[$date] = $g['retval'];
- }
- $channel = array();
- foreach ($month_data as $value) {
- if(is_array($value)){
- foreach ($value as $val) {
- if(!empty($val['channel'])&&!in_array($val['channel'],$channel)){
- $channel[] = $val['channel'];
- }
- }
- }
- }
- $data['channel_str'] ='';
- foreach ($channel as $value) {
- $data['channel_str'].= '"'.$value.'",';
- }
- $data['channel_str'] = substr($data['channel_str'],0,mb_strlen($data['channel_str'])-1);
- $data['date_str'] = substr($data['date_str'],0,mb_strlen($data['date_str'])-1);
- $data['channel_data'] = array();
- foreach ($channel as $t_channel) {
- $data['channel_data'][$t_channel] = '';
- foreach ($month_data as $key => $value) {
- foreach ($value as $val) {
- if($val['channel']==$t_channel){
- $t_count = $val['count'];
- }
- }
- if (isset($t_count)) {
- $data['channel_data'][$t_channel] = $data['channel_data'][$t_channel].$t_count.',';
- }else{
- $data['channel_data'][$t_channel] = $data['channel_data'][$t_channel].'0'.',';
- }
- unset($t_count);
- }
- }
- $this->render('view',array('data'=>$data));
- }
- }
|