加群处理

This commit is contained in:
2025-12-06 11:19:28 +08:00
parent 743d594a5f
commit 314a33a58e
2 changed files with 20 additions and 10 deletions

View File

@@ -206,11 +206,13 @@ class MessageController extends ApiController
$unreadCount = 0; $unreadCount = 0;
if(!empty($session['session_id'])) { if(!empty($session['session_id'])) {
if($session['chat_type'] == 2) { if($session['chat_type'] == 2) {
if($session['member_status']) {
// 最后一条消息 // 最后一条消息
$lastMsg = Db::name('chat_message') $lastMsg = Db::name('chat_message')
->where('group_id', $session['group_id']) ->where('group_id', $session['group_id'])
->order('send_time', 'desc') ->order('send_time', 'desc')
->find(); ->find();
}
}else { }else {
$lastMsg = Db::name('chat_message') $lastMsg = Db::name('chat_message')
->where('session_id', $session['session_id']) ->where('session_id', $session['session_id'])

View File

@@ -45,22 +45,30 @@ class ChatMessage extends BaseModel
$sessionIds = array_merge($sessionIds, $group_arr); $sessionIds = array_merge($sessionIds, $group_arr);
$group_id = ''; $group_id = '';
foreach ($sessionIds as $k => $session) { foreach ($sessionIds as $k => $session) {
$data[$k]['user_id'] = $uid;
if($session['chat_type'] == 1) { if($session['chat_type'] == 1) {
$chat_user = Db::name('chat_user')->where(['user_id' => $session['group_id']])->field('nick_name,avatar')->find(); $chat_user = Db::name('tb_user_info')->where(['id' => $session['group_id']])->field('nick_name,avatar')->find();
$avatar = $chat_user['avatar']; $avatar = $chat_user['head_img'];
$name = $chat_user['nick_name']; $name = $chat_user['nick_name'];
$group_id = ''; $group_id = '';
$data[$k]['user_id'] = $session['group_id']; $data[$k]['to_id'] = $session['group_id'];
}elseif($session['chat_type'] == 2) { }elseif($session['chat_type'] == 2) {
$group_info = Db::name('chat_group')->where(['id' => $session['group_id']])->field('id,name,avatar')->find(); $group_info = Db::name('chat_group')->where(['id' => $session['group_id']])->field('id,name,avatar')->find();
$avatar = $group_info['avatar']; $avatar = $group_info['avatar'];
$group_id = $group_info['id']; $group_id = $group_info['id'];
$name = $group_info['name']; $name = $group_info['name'];
$data[$k]['user_id'] = $group_id; $data[$k]['to_id'] = $group_id;
// 获取本人在群里的状态
$group_member = Db::name('chat_group_member')->where(['group_id' => $session['group_id'], 'user_id' => $uid])->find();
$data[$k]['member_status'] = 0;
// 如果在群里并且没有退群和被踢
if($group_member && $group_member['quit_time'] == null && $group_member['is_kicked'] == 0) {
$data[$k]['member_status'] = 1;
}
} }
// 单聊的话 两个人对话用一样的会话ID // 单聊的话 两个人对话用一样的会话ID
$data[$k]['avatar'] = $avatar; $data[$k]['avatar'] = $avatar;
$data[$k]['to_id'] = $data[$k]['user_id'];
$data[$k]['chat_type'] = $session['chat_type']; $data[$k]['chat_type'] = $session['chat_type'];
$data[$k]['session_id'] = $session['session_id']; $data[$k]['session_id'] = $session['session_id'];
$data[$k]['name'] = $name; $data[$k]['name'] = $name;