From c315a791545733391c15e42bc747e34293d36a99 Mon Sep 17 00:00:00 2001 From: colly_wyx <wangyixiong_007@163.com> Date: Sat, 28 Apr 2018 14:50:19 +0800 Subject: [PATCH] 更新版本 --- /dev/null | 7 - application/core/System/Model/Base.php | 2 application/models/Task.php | 9 ++ application/library/Service/Task.php | 92 +++++++++++++++++++++++ application/core/System/Db/Mongo.php | 1 application/library/Service/DataHourly.php | 56 ++++++++++++++ application/library/Service/DataThreeHourly.php | 10 +- application/models/DataHourly.php | 7 + application/modules/Public/controllers/Data.php | 21 +---- 9 files changed, 175 insertions(+), 30 deletions(-) diff --git a/application/core/System/Db/Mongo.php b/application/core/System/Db/Mongo.php index d4ac5ae..b739a8c 100644 --- a/application/core/System/Db/Mongo.php +++ b/application/core/System/Db/Mongo.php @@ -330,6 +330,7 @@ $query = $this->_parseId($query); // ��������������� $cursor = $col->find($query,$fields); + // ������ if($sort){ $cursor->sort($sort); diff --git a/application/core/System/Model/Base.php b/application/core/System/Model/Base.php index b6d815e..80a189b 100644 --- a/application/core/System/Model/Base.php +++ b/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); } diff --git a/application/library/Service/DataHourly.php b/application/library/Service/DataHourly.php new file mode 100644 index 0000000..df7f746 --- /dev/null +++ b/application/library/Service/DataHourly.php @@ -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; + } + + } + + +} \ No newline at end of file diff --git a/application/library/Service/DataThreeHourly.php b/application/library/Service/DataThreeHourly.php index f3a1ab2..b8a0d0d 100644 --- a/application/library/Service/DataThreeHourly.php +++ b/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')) diff --git a/application/library/Service/Task.php b/application/library/Service/Task.php new file mode 100644 index 0000000..a197f31 --- /dev/null +++ b/application/library/Service/Task.php @@ -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'])); + } + + } + + } + + +} \ No newline at end of file diff --git a/application/models/DataHourly.php b/application/models/DataHourly.php new file mode 100644 index 0000000..d3bc063 --- /dev/null +++ b/application/models/DataHourly.php @@ -0,0 +1,7 @@ +<?php + +class DataHourlyModel extends System_Model_Base{ + + public $table = "data_hourly"; + +} \ No newline at end of file diff --git a/application/models/Hourly.php b/application/models/Hourly.php deleted file mode 100644 index 3598f9e..0000000 --- a/application/models/Hourly.php +++ /dev/null @@ -1,7 +0,0 @@ -<?php - -class HourlyModel extends System_Model_Base{ - - public $table = "data_hourly"; - -} \ No newline at end of file diff --git a/application/models/Task.php b/application/models/Task.php new file mode 100644 index 0000000..9bb5406 --- /dev/null +++ b/application/models/Task.php @@ -0,0 +1,9 @@ +<?php + +class TaskModel extends System_Model_Base{ + + public $table = "task"; + + + +} \ No newline at end of file diff --git a/application/modules/Public/controllers/Data.php b/application/modules/Public/controllers/Data.php index 6f13a80..05f1968 100644 --- a/application/modules/Public/controllers/Data.php +++ b/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(); } -- Gitblit v1.8.0