where('from_id', $uid)->WhereOr('to_id', $uid) ->group('session_id')->field('session_id,to_id as group_id,chat_type')->select()->toArray(); // 查看自己加了那些群 $group_arr = Db::name('chat_group_member')->where(['user_id' => $uid])->field('group_id')->select()->toArray(); $data = []; if($sessionIds) { foreach ($sessionIds as $k => $session_id) { foreach ($group_arr as $gk => &$group) { $group['session_id'] = ''; $group['chat_type'] = 2; if($session_id['chat_type'] == 2) { if ($group['group_id'] == $session_id['group_id']) { unset($group_arr[$gk]); } } } } $sessionIds = array_merge($sessionIds, $group_arr); $group_id = ''; foreach ($sessionIds as $k => $session) { // if($session['session_id']) { // // 未读计数 // $unreadCount = Db::name('chat_unread_count')->where(['user_id' => $uid, 'session_id' => $session['session_id']])->value('count')?:0; // }else { // $unreadCount = 0; // } // $data[$k]['unread_count'] = $unreadCount; // if(!empty($session['session_id'])) { // // 最后一条消息 // $lastMsg = Db::name('chat_message') // ->where('session_id', $session['session_id']) // ->order('send_time', 'desc') // ->find(); // }else { // $lastMsg = ''; // } if($session['chat_type'] == 1) { $chat_user = Db::name('chat_user')->where(['user_id' => $session['group_id']])->field('nick_name,avatar')->find(); $avatar = $chat_user['avatar']; $name = $chat_user['nick_name']; $group_id = ''; $data[$k]['user_id'] = $session['group_id']; }elseif($session['chat_type'] == 2) { $group_info = Db::name('chat_group')->where(['id' => $session['group_id']])->field('id,name,avatar')->find(); $avatar = $group_info['avatar']; $group_id = $group_info['id']; $name = $group_info['name']; // if($lastMsg) { // $chat_user = Db::name('chat_user')->where(['user_id' => $lastMsg['from_id']])->field('nick_name,avatar')->find(); // } $data[$k]['user_id'] = $group_id; } // 单聊的话 两个人对话用一样的会话ID // $msg = ''; // if($lastMsg) { // // 如果是自己发的不显示发送人 // if($lastMsg['from_id'] == $uid) { // $msg = $lastMsg['content']; // }else { // // 如果是别人发的显示昵称 // $msg = $chat_user['nick_name'] . ':' . $lastMsg['content']; // } // $data[$k]['send_time'] = formatWeChatTime($lastMsg['send_time']); // } $data[$k]['avatar'] = $avatar; $data[$k]['chat_type'] = $session['chat_type']; $data[$k]['session_id'] = $session['session_id']; $data[$k]['name'] = $name; // $data[$k]['msg'] = $msg; $data[$k]['group_id'] = $group_id; $data[$k]['is_del'] = 0; } Redis::set('usermsg:list:' . $user_type . ':' . $uid, json_encode($data)); } return $data; } // 更新会话列表 public static function updateConverList($uid, $user_type, $group_id) { $is_update = 'ok_up'; $list_json = Redis::get('usermsg:list:' . $user_type . ':' . $uid); if($list_json) { $list_arr = json_decode($list_json, true); foreach ($list_arr as $k => $list) { // 如果找到会话列表并且没有删除,则不更新 if($list['group_id'] == $group_id && $list['is_del'] == 0) { $is_update = 'no_up'; } } } if($is_update == 'ok_up') { self::getconverlist($uid, $user_type); } } public static function getUserIsQuit($uid, $group_id) { // $auit = Db::name('')->where()->find(); } }