public function user_friend_by_letter()
{
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');
}
}
$letters = array('A' => array(), 'B' => array(), 'C' => array(), 'D' => array(), 'E' => array(), 'F' => array(), 'G' => array(), 'H' => array(), 'I' => array(), 'J' => array(), 'K' => array(), 'L' => array(), 'M' => array(), 'N' => array(), 'O' => array(), 'P' => array(), 'Q' => array(), 'R' => array(), 'S' => array(), 'T' => array(), 'U' => array(), 'V' => array(), 'W' => array(), 'X' => array(), 'Y' => array(), 'Z' => array());
$where = " a.uid = '{$uid}' AND b.uid IS NOT NULL";
$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)->order('a.follow_id DESC')->findAll();
$follow_status = model('Follow')->getFollowStateByFids($this->mid, getSubByKey($friend, 'fid'));
if (!t($this->data['key'])) {
// 无搜索
foreach ($friend as $k => $v) {
$friend_info = $this->get_user_info($v['fid']);
//如果有备注,按照备注来算首字母
$first_letter = $friend_info['remark'] != '' ? getFirstLetter($friend_info['remark']) : getFirstLetter($friend_info['uname']);
$letters[$first_letter][$v['follow_id']]['uid'] = $friend_info['uid'];
$letters[$first_letter][$v['follow_id']]['uname'] = $friend_info['uname'];
$letters[$first_letter][$v['follow_id']]['remark'] = $friend_info['remark'];
$letters[$first_letter][$v['follow_id']]['intro'] = $friend_info['intro'] ? formatEmoji(false, $friend_info['intro']) : '';
$letters[$first_letter][$v['follow_id']]['avatar'] = $friend_info['avatar']['avatar_original'];
$letters[$first_letter][$v['follow_id']]['follow_status'] = $follow_status[$v['fid']];
}
return $letters;
} else {
$where = ' `uid` IN (' . implode(',', getSubByKey($friend, 'fid')) . ')';
$max_id = $this->max_id ? intval($this->max_id) : 0;
$count = $this->count ? intval($this->count) : 20;
!empty($max_id) && ($where .= " AND `uid`<{$max_id}");
//通过备注名搜索
$ruid_arr = D('UserRemark')->searchRemark($this->mid, t($this->data['key']));
if ($ruid_arr) {
$where .= " AND (`uname` like '%" . t($this->data['key']) . "%' OR " . '`uid` IN (' . implode(',', $ruid_arr) . '))';
} else {
$where .= " AND `uname` like '%" . t($this->data['key']) . "%'";
}
$user = model('User')->where($where)->limit($count)->field('uid')->order('uid desc')->findAll();
// dump(D()->getLastSql());
$user_list = array();
foreach ($user as $k => $v) {
$friend_info = $this->get_user_info($v['uid']);
$user_detail['uid'] = $friend_info['uid'];
$user_detail['uname'] = $friend_info['uname'];
$user_detail['remark'] = $friend_info['remark'];
$user_detail['intro'] = $friend_info['intro'] ? formatEmoji(false, $friend_info['intro']) : '';
$user_detail['avatar'] = $friend_info['avatar']['avatar_original'];
$user_detail['follow_status'] = $follow_status[$v['uid']];
$user_list[] = $user_detail;
}
return $user_list;
}
}