即时消息接口完结

This commit is contained in:
2025-11-19 15:34:37 +08:00
parent 45b4efa759
commit 2a89361d3e
5 changed files with 167 additions and 147 deletions

View File

@@ -2,7 +2,51 @@
namespace app\chat\model;
use support\Redis;
use support\think\Db;
class ChatMessage extends BaseModel
{
public $tabla_name = 'chat_message';
public static function getconverlist($uid, $user_type)
{
// 获取所有会话ID
$sessionIds = Db::name('chat_message')->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;
}
}
}