public function ng_index() { $page = I('get.index_page'); //The request page number $page = $page ? $page : 1; /** * 1.我的动态 * 2.我关注的人的动态 * 3.公开的 * 4.按时间排序 * 关联的模型: hs_user,hs_piece,hs_piece_comment */ /*$sql = "SELECT u.id,u.userName,u.avatar,p.piece_id,p.user_id,p.date,p.tag,p.content from hs_user as u,hs_piece as p where p.visible=1 AND u.id=p.user_id AND p.user_id in (SELECT followed_id as id from hs_follow where follower_id=".$this->user_id." union SElECT id from hs_user where id=".$this->user_id.") order by p.date desc limit ".$page*$this->piece_nums_per_page. ",".$this->piece_nums_per_page;*/ $sql2 = "select count(c.comment_id) as comments_num,u.userName,u.avatar,p.piece_id,p.user_id,p.date,p.tag,p.content,p.visible,p.visible_tag \r\n from hs_piece as p join hs_user as u on p.user_id=u.id left join hs_piece_comment as c on p.piece_id=c.piece_id where p.user_id=" . $this->user_id . " or p.user_id in (select f.followed_id from hs_follow as f where f.follower_id=" . $this->user_id . ") and p.visible=1 group by p.piece_id order by p.date desc "; $pieces = $this->piece_model->query($sql2); if ($pieces !== false) { if ($pieces == NULL) { $this->ajaxReturn(array('pieces' => $pieces, 'error' => 2, 'msg' => '暂无记录!'), 'json'); } if (count($pieces)) { $pieces = A('Auth')->filter_invisible_piece($pieces); //过滤不可见的碎片 $pieces = Util::pageOfArray($pieces, $page, $this->piece_nums_per_page); //分页 } $this->ajaxReturn(array('pieces' => $pieces, 'error' => 0), 'json'); } else { $this->ajaxReturn(array('pieces' => $pieces, 'error' => 1, 'msg' => '查询失败!'), 'json'); } }
public function get_pieces() { $user_id = I('post.user_id') ? I('post.user_id') : $this->user_id; $page = I('post.page'); $page = $page ? $page : 0; //$page = $page?$page-1:0; $visible = $user_id == $this->user_id ? '' : ' AND p.visible=1'; $piece_model = D('Piece'); /*$sql = "select count(c.comment_id) as comments_num,u.userName,u.avatar,p.piece_id,p.user_id,p.date,p.tag,p.content from hs_piece as p join hs_user as u on p.user_id=u.id left join hs_piece_comment as c on p.piece_id=c.piece_id where p.user_id=".$user_id.$visible." group by p.piece_id order by p.date desc limit ". $page*$this->piece_nums_per_page.",".$this->piece_nums_per_page; $pieces = $piece_model->query($sql); $pieces = $piece_model->alias('p')->where('p.user_id='.$user_id.$visible) ->field('u.id,u.userName,u.avatar,p.piece_id,p.date,p.tag,p.content') ->join('hs_user as u on u.id=p.user_id') ->order('p.date desc')->limit($page*$this->piece_nums_per_page,$this->piece_nums_per_page)->select();*/ $cached_pieces = S('User_pieces_' . $page . '_' . $user_id); //是否已有缓存 if (0) { $this->ajaxReturn(array('error' => 0, 'cached' => true, 'pieces' => $cached_pieces), 'json'); } else { $pieces = $piece_model->where('user_id=' . $user_id)->field('piece_id,user_id,date,tag,content,visible,visible_tag')->order('date desc')->select(); if ($pieces !== false) { //关联用户表 $pieces = DBUtil::loadRelatedData($pieces, 'user_id', 'user', 'id', array('userName', 'avatar')); //关联评论表 $pieces = DBUtil::loadRelatedData($pieces, 'piece_id', 'piece_comment', 'piece_id', array('count(comment_id) as comments_num')); $pieces = A('Auth')->filter_invisible_piece($pieces); //进行分页并缓存结果 $pieces = Util::pageOfArray($pieces, $page, $this->piece_nums_per_page); S('User_pieces_' . $page . '_' . $user_id, $pieces, array('type' => 'file', 'expire' => 5 * 60)); //缓存该用户第n页的碎片,5分钟 $this->ajaxReturn(array('error' => 0, 'pieces' => $pieces), 'json'); } else { $this->ajaxReturn(array('error' => 1, 'msg' => C('SITE_LANG.QUERY_FAILED')), 'json'); } } }