UserApi::user_friend PHP Method

user_friend() public method

用户好友列表(相互关注) --using
public user_friend ( ) : array
return array 用户信息+关注状态
    public function user_friend()
    {
        if (empty($this->user_id) && empty($this->data['uname'])) {
            $uid = $this->mid;
        } else {
            if ($this->user_id) {
                $uid = intval($this->user_id);
            } else {
                $uid = model('User')->where(array('uname' => $this->data['uname']))->getField('uid');
            }
        }
        $max_id = $this->max_id ? intval($this->max_id) : 0;
        $count = $this->count ? intval($this->count) : 20;
        $where = " a.uid = '{$uid}' AND b.uid IS NOT NULL";
        if (t($this->data['key'])) {
            $uid_arr = getSubByKey(model('User')->where(array('uname' => array('like', '%' . t($this->data['key']) . '%')))->field('uid')->findAll(), 'uid');
            //通过备注名搜索
            $ruid_arr = D('UserRemark')->searchRemark($this->mid, t($this->data['key']));
            //合并去重
            if (!is_array($uid_arr)) {
                $uid_arr = array();
            }
            if (!is_array($ruid_arr)) {
                $ruid_arr = array();
            }
            $_uid_arr = array_unique(array_merge($uid_arr, $ruid_arr));
            $where .= ' AND b.uid IN (' . implode(',', $_uid_arr) . ')';
        }
        !empty($max_id) && ($where .= " AND a.follow_id < {$max_id}");
        $friend = D()->table('`' . C('DB_PREFIX') . 'user_follow` AS a LEFT JOIN `' . C('DB_PREFIX') . 'user_follow` AS b ON a.uid = b.fid AND b.uid = a.fid')->field('a.fid, a.follow_id')->where($where)->limit($count)->order('a.follow_id DESC')->findAll();
        $follow_status = model('Follow')->getFollowStateByFids($this->mid, getSubByKey($friend, 'fid'));
        $friend_arr = array();
        foreach ($friend as $k => $v) {
            $friend_arr[$k]['follow_id'] = $v['follow_id'];
            $friend_info = $this->get_user_info($v['fid']);
            $friend_arr[$k]['uid'] = $friend_info['uid'];
            $friend_arr[$k]['uname'] = $friend_info['uname'];
            $friend_arr[$k]['remark'] = $friend_info['remark'];
            $friend_arr[$k]['intro'] = $friend_info['intro'] ? formatEmoji(false, $friend_info['intro']) : '';
            $friend_arr[$k]['avatar'] = $friend_info['avatar']['avatar_big'];
            $friend_arr[$k]['follow_status'] = $follow_status[$v['fid']];
        }
        return $friend_arr;
    }