colly
2017-08-07 78981c784ebe0fda3d1ff20cabe4e21bed2e6549
数据获取接口完成
2 files added
3 files modified
137 ■■■■ changed files
Yfs/Api/Data.php 31 ●●●● patch | view | raw | blame | history
Yfs/Domain/Data.php 36 ●●●● patch | view | raw | blame | history
Yfs/Domain/DataDaily.php 55 ●●●●● patch | view | raw | blame | history
Yfs/Model/Base.php 7 ●●●●● patch | view | raw | blame | history
Yfs/Model/DataDaily.php 8 ●●●●● patch | view | raw | blame | history
Yfs/Api/Data.php
@@ -56,19 +56,36 @@
     */
    public function getUserDataList(){
        $rs = array('code' => 0, 'msg' => '', 'info' => array());
        $data_service = new Domain_Data();
        $data_list = $data_service->getUserDataList($this->user_id, $this->start_time, $this->end_time);
        if($data_list){
            $rs['msg'] = '数据获取成功';
            $rs['info'] = $data_list;
        $data_daily_service = new Domain_DataDaily();
        if($data_daily_service->checkTime($this->start_time, $this->end_time)){
            $result = $data_daily_service->getUserDataList($this->user_id, $this->start_time, $this->end_time);
            if($data_list){
                $rs['msg'] = '数据获取成功';
                $rs['info'] = $data_list;
            }
            else{
                $rs['code'] = 1;
                $rs['msg'] = '数据获取失败';
            }
        }
        else{print_r($data_lsit);
        else{
            $rs['code'] = 1;
            $rs['msg'] = '数据获取失败';
            $rs['msg'] = '开始时间必须小于结束时间或两者时间间隔必须大于等于7天';
        }
        return $rs;
    }
    //public function updateTime(){
    //    $data_service = new Domain_Data();
   //     $datas = $data_service->getList();
   //     foreach ($datas as $value) {
    //        $data['_id'] = $value['_id'];
    //        $data['date'] = date('Y-m-d', strtotime($value['create_time']));
    //        $data_service->updateTime($data);
    //    }
  //  }
Yfs/Domain/Data.php
@@ -37,39 +37,13 @@
        return $this->model->getList();
    }
    /**
     * 获取用户某个时间段内的数据
     * @param  [type] $user_id    [description]
     * @param  [type] $start_time [description]
     * @param  [type] $end_time   [description]
     * @return [type]             [description]
     */
    public function getUserDataList($user_id, $start_time, $end_time){
        $result = $this->model->aggregate(
            array(
                array(
                   '$match' => array('create_time' => array('$gte' => $start_time.' 00:00:00', '$lte' => $end_time.' 23:59:59'), 'user_id' => $user_id)
                ),
                array(
                    '$group' => array('_id' => '$date', 'day' => array('$avg' => '$value'))
                ),
                array(
                    '$project' => array('_id' => 0, 'date'=> '$_id', 'day' => 1)
                )
            )
        );
        print_r($result);
        die();
        return $this->model->getList(array('user_id' => $user_id, 'create_time' => array('$gte' => $start_time, '$lte' => $end_time)));
    }
    public function updateTime($data){
        $id = $data['_id'];
        unset($data['_id']);
        return $this->model->update($data, array('_id' => $id));
    }
    //public function updateTime($data){
    //    $id = $data['_id'];
   //     unset($data['_id']);
   //     return $this->model->update($data, array('_id' => $id));
    //}
    
Yfs/Domain/DataDaily.php
New file
@@ -0,0 +1,55 @@
<?php
/**
 * 用户业务类
 */
class Domain_DataDaily {
    public function __construct(){
        //DI()->redis = new Redis_Lite(DI()->config->get('app.redis.servers'));
       $this->model = new Model_DataDaily();
    }
    /**
     * 获取用户某个时间段内的数据
     * @param  [type] $user_id    [description]
     * @param  [type] $start_time [description]
     * @param  [type] $end_time   [description]
     * @return [type]             [description]
     */
    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));
        }
        $result = $this->model->getList(array('user_id' => $user_id, 'date' => array('$in' => $days_arr)));
        return $result;
    }
    /**
     * 验证时间
     * @param  [type] $start_time [description]
     * @param  [type] $end_time   [description]
     * @return [type]             [description]
     */
    public function checkTime($start_time, $end_time){
        $start_time = strtotime($start_time);
        $end_time = strtotime($end_time);
        if($start_time > $end_time){
            return false;
        }
        $diff_days = ($end_time - $start_time) / 86400;
        $total_days = $diff_days + 1;//时间段内总天数
        if($total_days < 7){
            return false;
        }
        return true;
    }
}
Yfs/Model/Base.php
@@ -46,6 +46,13 @@
        return $this->db->insert($this->table, $data);
    }
    /**
     * [add description]
     */
    public function save($data){
        return $this->db->insert($this->table, $data);
    }
    public function update($data, $query){
        return $this->db->update($this->table, $data, $query);
    }
Yfs/Model/DataDaily.php
New file
@@ -0,0 +1,8 @@
<?php
class Model_DataDaily extends Model_Base{
   public $table = 'data_daily';
}