where('from_id', $uid)->WhereOr('to_id', $uid) ->group('session_id')->column('session_id'); $data = []; $i = 0; foreach ($sessionIds as $k => $session_id) { // 未读计数 $unreadCount = Db::name('chat_unread_count')->where(['user_id' => $uid, 'session_id' => $session_id])->value('count')?:0; $data[$i]['unread_count'] = $unreadCount; // 最后一条消息 $lastMsg = Db::name('chat_message') ->where('session_id', $session_id) ->order('send_time', 'desc') ->find(); if($lastMsg) { $chat_user = Db::name('chat_user')->where(['user_id' => $lastMsg['from_id']])->field('nick_name,avatar')->find(); // 如果是自己发的不显示发送人 if($lastMsg['from_id'] == $uid) { $data[$i]['msg'] = $lastMsg['content']; }else { // 如果是别人发的显示昵称 $data[$i]['msg'] = $chat_user['nick_name'] . ':' . $lastMsg['content']; } $data[$i]['avatar'] = $chat_user['avatar']; $data[$i]['chat_type'] = $lastMsg['chat_type']; }else { $data[$i][] = ''; } $data[$i]['send_time'] = formatWeChatTime($lastMsg['send_time']); $data[$i]['session_id'] = $session_id; $i ++; } if(Redis::set('usermsg:list:' . $user_type . ':' . $uid, json_encode($data))) { return $data; } } }