<?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).':05: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; 
 | 
        } 
 | 
         
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |