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