colly_wyx
2018-03-30 5b00b28782f2c773aa9b63ac61584b70a366526c
application/library/Service/Daily.php
@@ -4,6 +4,7 @@
   public function __construct(){
      $this->daily_model = new DailyModel();
      $this->hourly_model = new HourlyModel();
   }
   public function summary($day){
@@ -25,14 +26,63 @@
         $time = date('Y-m-d H:i:s');
         foreach ($datas as $data) {
            $param['user_id'] = $data['user_id'];
            $param['day_avg'] = substr($data['day_avg'], 0, 5);
            $param['day_avg'] = floatval(substr($data['day_avg'], 0, 5));
            $param['date'] = $day;
            $param['create_time'] = $time;
            $this->daily_model->add($param);
            unset($param);
            for($i = 1; $i <= 8; $i ++){
               if($i == 1){
                  $start_hour = '00:00:00';
                  $end_hour = '02:59:59';
               }
               elseif($i == 8){
                  $start_hour = '21:00:00';
                  $end_hour = '23:59:59';
               }
               else{
                  $hour = ($i - 1)*3;
                  $start_hour = $hour.':00:00';
                  $end_hour = ($hour + 2).':59:59';
                  if($hour < 10 ){
                     $start_hour = '0'.$start_hour;
                  }
                  if($hour + 2 < 10){
                     $end_hour = '0'.$end_hour;
                  }
               }
               $hourly_datas = $data_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'] = $i;
                     $param['create_time'] = $time;
                     $this->hourly_model->add($param);
                     unset($param);
                  }
               }
            }
         }
         $dailyLog_service = new Service_DailyLog();
         $dailyLog_service->addLog($day);
         return true;
      }
      else{