| | |
| | | public function __construct(){ |
| | | //DI()->redis = new Redis_Lite(DI()->config->get('app.redis.servers')); |
| | | $this->model = new Model_DataDaily(); |
| | | $this->data_three_hourly_model = new Model_DataThreeHourly(); |
| | | } |
| | | |
| | | /** |
| | |
| | | public function getUserDataList($user_id, $start_time, $end_time){ |
| | | $start_time = strtotime($start_time); |
| | | $end_time = strtotime($end_time); |
| | | $diff_days = ($end_time - $start_time) / 86400; |
| | | $total_days = $diff_days + 1;//时间段内总天数 |
| | | $step = ($total_days - $total_days % 7) / 7; |
| | | $days_arr= array(); |
| | | for($i = 0; $i < 7*$step ; $i+=$step){ |
| | | $days_arr[] = date('Y-m-d', strtotime('+'.$i.' day', $start_time)); |
| | | if($end_time > $start_time){ |
| | | $diff_days = ($end_time - $start_time) / 86400; |
| | | $total_days = $diff_days + 1;//时间段内总天数 |
| | | //$step = ($total_days - $total_days % 7) / 7; |
| | | $days_arr= array(); |
| | | for($i = 0; $i < $total_days ; $i+=1){ |
| | | $days_arr[] = date('Y-m-d', strtotime('+'.$i.' day', $start_time)); |
| | | } |
| | | $result = $this->model->getList(array('user_id' => $user_id, 'date' => array('$in' => $days_arr))); |
| | | } |
| | | $result = $this->model->getList(array('user_id' => $user_id, 'date' => array('$in' => $days_arr))); |
| | | else{ |
| | | $result = $this->data_three_hourly_model->get(array('user_id' => $user_id, 'date' => date('Y-m-d', $start_time))); |
| | | $_result = array(); |
| | | if($result){ |
| | | for($i = 1; $i <=8 ; $i++){ |
| | | array_push($_result, array('hour_avg' => $result['time_slot_'.$i], 'time_level' => $i)); |
| | | } |
| | | } |
| | | else{ |
| | | $_result = null; |
| | | } |
| | | return $_result; |
| | | } |
| | | |
| | | return $result; |
| | | } |
| | | |
| | | /** |
| | | * 获取用户某个时间段内的平均值 |
| | | * @param [type] $user_id [description] |
| | | * @param [type] $start_time [description] |
| | | * @param [type] $end_time [description] |
| | | * @return [type] [description] |
| | | */ |
| | | public function getUserDataAvg($user_id, $start_time, $end_time){ |
| | | |
| | | // if($start_time == $end_time){ |
| | | // $result = $this->model->get(array('date' => $start_time)); |
| | | // } |
| | | // else{ |
| | | $result = $this->model->aggregate( |
| | | array( |
| | | array( |
| | | '$match' => array('date' => array('$gte' => $start_time, '$lte' => $end_time), 'user_id' => $user_id) |
| | | ), |
| | | array( |
| | | '$group' => array('_id' => '$user_id', 'day_avg' => array('$avg' => '$day_avg')) |
| | | ), |
| | | array( |
| | | '$project' => array('_id' => 0, 'day_avg' => 1) |
| | | ) |
| | | ) |
| | | ); |
| | | //} |
| | | |
| | | return isset($result[0]['day_avg'])?$result[0]['day_avg']:0; |
| | | } |
| | | |
| | | /** |
| | | * 验证时间 |
| | | * @param [type] $start_time [description] |
| | | * @param [type] $end_time [description] |