colly_wyx
2018-04-17 62d6bc507aec5c330bc698e81ad90cc2a130dd93
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
 
class Service_Data_Three_Hourly extends System_Service_Base{
 
    public function __construct(){
        $this->data_three_hourly_model = new DataThreeHourlyModel();
    }
 
    public function isSummary($day, $time_level){
        $result = $this->data_three_hourly_model->get(array('day' => $day, 'time_level' => $time_level));
        if($result){
            return true;
        }
        else{
            return false;
        }
    }
 
    public function summary($day, $time_level){
        if($time_level > 0 && $time_level <= 8){
            $hourly_model = new DataHourlyModel();
            $hour = ($time_level - 1)*3;
            $start_hour = $hour.':00:00';
            $end_hour = ($hour + 2).':00:00';
            if($hour < 10 ){
                $start_hour = '0'.$start_hour;
            }
            if($hour + 2 < 10){
                $end_hour = '0'.$end_hour;
            }
                
            $hourly_datas = $hourly_model->aggregate(
                array(
                    array(
                        '$match' => array('create_time' => array('$gte' => $day.' '.$start_hour, '$lte' => $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;
        }
        
    }
 
 
}