<?php
|
|
class Service_Daily extends System_Service_Base{
|
|
public function __construct(){
|
$this->daily_model = new DailyModel();
|
$this->hourly_model = new HourlyModel();
|
}
|
|
public function summary($day){
|
$data_model = new DataModel();
|
$datas = $data_model->aggregate(
|
array(
|
array(
|
'$match' => array('create_time' => array('$gte' => $day.' 00:00:00', '$lte' => $day.' 23:59:59'))
|
),
|
array(
|
'$group' => array('_id' => '$user_id', 'day_avg' => array('$avg' => '$value'))
|
),
|
array(
|
'$project' => array('_id' => 0, 'user_id' => '$_id', 'day_avg' => 1)
|
)
|
)
|
);
|
if($datas){
|
$time = date('Y-m-d H:i:s');
|
foreach ($datas as $data) {
|
$param['user_id'] = $data['user_id'];
|
$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{
|
return false;
|
}
|
}
|
|
/**
|
* 获取用户某个时间段内的数据
|
* @param [type] $user_id [description]
|
* @param [type] $start_time [description]
|
* @param [type] $end_time [description]
|
* @return [type] [description]
|
*/
|
public function getUserDataList($user_id, $days_arr){
|
$user_dailys = $this->daily_model->getList(array('user_id' => $user_id, 'date' => array('$in' => $days_arr)), array(), array('_id' => 1));
|
return $user_dailys;
|
}
|
|
|
|
|
}
|