UserApi::user_friend_by_letter PHP Method

user_friend_by_letter() public method

按字母返回用户好友列表(相互关注) --using
public user_friend_by_letter ( ) : array
return array 用户信息+关注状态
    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;
        }
    }