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;
}