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