application/core/System/Db/Mongo.php | ●●●●● patch | view | raw | blame | history | |
application/core/System/Model/Base.php | ●●●●● patch | view | raw | blame | history | |
application/library/Service/DataHourly.php | ●●●●● patch | view | raw | blame | history | |
application/library/Service/DataThreeHourly.php | ●●●●● patch | view | raw | blame | history | |
application/library/Service/Task.php | ●●●●● patch | view | raw | blame | history | |
application/models/DataHourly.php | ●●●●● patch | view | raw | blame | history | |
application/models/Hourly.php | ●●●●● patch | view | raw | blame | history | |
application/models/Task.php | ●●●●● patch | view | raw | blame | history | |
application/modules/Public/controllers/Data.php | ●●●●● patch | view | raw | blame | history |
application/core/System/Db/Mongo.php
@@ -330,6 +330,7 @@ $query = $this->_parseId($query); // 结果集偏历 $cursor = $col->find($query,$fields); // 排序 if($sort){ $cursor->sort($sort); application/core/System/Model/Base.php
@@ -56,7 +56,7 @@ * @param [type] $query [description] * @return [type] [description] */ public function update($data, $query){ public function update($data, $query = array()){ return $this->db->update($this->table, $data, $query); } application/library/Service/DataHourly.php
New file @@ -0,0 +1,56 @@ <?php class Service_DataHourly extends System_Service_Base{ public function __construct(){ $this->data_hourly_model = new DataHourlyModel(); } public function summary($day, $time_level){ if($time_level > 0 && $time_level <= 8){ $hourly_model = new HourlyModel(); $hour = ($time_level - 1)*3; $start_hour = $hour.':05:00'; $end_hour = ($hour + 3).':05:00'; if($hour < 10 ){ $start_hour = '0'.$start_hour; } if($hour + 2 < 10){ $end_hour = '0'.$end_hour; } echo $start_hour.'---'.$end_hour; $hourly_datas = $hourly_model->aggregate( array( array( '$match' => array('create_time' => array('$gte' => $day.' '.$start_hour, '$lt' => $day.' '.$end_hour)) ), array( '$group' => array('_id' => '$user_id', 'avg' => array('$avg' => '$value')) ), array( '$project' => array('_id' => 0, 'user_id' => '$_id', 'avg' => 1) ) ) ); if($hourly_datas){ foreach ($hourly_datas as $hourly_data) { $param['user_id'] = $hourly_data['user_id']; $param['hour_avg'] = floatval(substr($hourly_data['avg'], 0, 5)); $param['date'] = $day; $param['start_hour'] = $start_hour; $param['end_hour'] = $end_hour; $param['time_level'] = $time_level; $param['create_time'] = date('Y-m-d'); $this->data_three_hourly_model->add($param); unset($param); } } } else{ return false; } } } application/library/Service/DataThreeHourly.php
@@ -19,20 +19,20 @@ public function summary($day, $time_level){ if($time_level > 0 && $time_level <= 8){ $hourly_model = new HourlyModel(); $hour = ($time_level - 1)*3; $start_hour = $hour.':00:00'; $end_hour = ($hour + 2).':05:00'; $hour = ($time_level - 1)*3; $start_hour = $hour.':05:00'; $end_hour = ($hour + 3).':05:00'; if($hour < 10 ){ $start_hour = '0'.$start_hour; } if($hour + 2 < 10){ $end_hour = '0'.$end_hour; } echo $start_hour.'---'.$end_hour; $hourly_datas = $hourly_model->aggregate( array( array( '$match' => array('create_time' => array('$gte' => $day.' '.$start_hour, '$lte' => $day.' '.$end_hour)) '$match' => array('create_time' => array('$gte' => $day.' '.$start_hour, '$lt' => $day.' '.$end_hour)) ), array( '$group' => array('_id' => '$user_id', 'avg' => array('$avg' => '$value')) application/library/Service/Task.php
New file @@ -0,0 +1,92 @@ <?php class Service_Task extends System_Service_Base{ public function __construct(){ $this->data_hourly_model = new DataHourlyModel(); $this->data_three_hourly_model = new DataThreeHourlyModel(); $this->task_model = new TaskModel(); } public function summary(){ $hourly_model = new DataHourlyModel(); $task_lists = $this->task_model->getList(); foreach ($task_lists as $task) { $day = $task['date']; $user_id = $task['user_id']; $time_slot_arr = array(); for($time_slot = 1; $time_slot<=8 ; $time_slot++){ $hour = ($time_slot - 1)*3; $start_hour = $hour.':00:00'; $end_hour = ($hour + 3).':00:00'; if($hour < 10 ){ $start_hour = '0'.$start_hour; } if($hour + 2 < 10){ $end_hour = '0'.$end_hour; } echo '日期:'.$day.' 时间段:'.$start_hour.'---'.$end_hour."======".$user_id."<br />"; $hourly_data = $hourly_model->aggregate( array( array( '$match' => array('create_time' => array('$gte' => $day.' '.$start_hour, '$lt' => $day.' '.$end_hour), 'user_id' => $user_id) ), array( '$group' => array('_id' => '$user_id', 'avg' => array('$avg' => '$value')) ), array( '$project' => array('_id' => 0, 'user_id' => '$_id', 'avg' => 1) ) ) ); if($hourly_data){ $time_slot_arr[$time_slot] = $hourly_data[0]['avg']; } } $is_creat_data = false; $data_three_hourly = $this->data_three_hourly_model->get(array('user_id' => $user_id, 'date' => $day)); $update_id = ""; if(!$data_three_hourly){ $is_creat_data = true; } else{ $update_id = $data_three_hourly['_id']; } foreach ($time_slot_arr as $slot => $val) { $param = array(); if($is_creat_data){ $param['user_id'] = $user_id; $param['date'] = $day; for($i = 1; $i <= 8; $i++){ if($i == $slot){ $param['time_slot_'.$i] = floatval(substr($val, 0, 5)); } else{ $param['time_slot_'.$i] = 0; } } $param['create_time'] = date('Y-m-d H:i:s'); $this->data_three_hourly_model->add($param); $update_id = $param['_id']; $is_creat_data = false; } else{ $param['time_slot_'.$slot] = floatval(substr($val, 0, 5)); $this->data_three_hourly_model->update($param, array('_id' => $update_id)); } } if($day != date('Y-m-d')){ $this->task_model->delete(array('_id' => $task['_id'])); } } } } application/models/DataHourly.php
New file @@ -0,0 +1,7 @@ <?php class DataHourlyModel extends System_Model_Base{ public $table = "data_hourly"; } application/models/Hourly.php
File was deleted application/models/Task.php
New file @@ -0,0 +1,9 @@ <?php class TaskModel extends System_Model_Base{ public $table = "task"; } application/modules/Public/controllers/Data.php
@@ -33,23 +33,10 @@ } public function ThreeHourlyAction(){ $data_three_hourly_service = new Service_DataThreeHourly(); $day = $this->get('day', date('Y-m-d')); $time_level = $this->get('time_level', 0); echo $day; if(!$data_three_hourly_service->isSummary($day, $time_level)){ if($data_three_hourly_service->summary($day, $time_level)){ echo "汇总成功"; } else{ echo "汇总失败"; } } else{ echo '当前时间已经汇总过了'; } public function HourlyAction(){ $task_service = new Service_Task(); //$day = $this->get('day', date('Y-m-d')); $task_service->summary(); die(); }