改群名

This commit is contained in:
2025-12-04 17:59:38 +08:00
parent d23305cf3d
commit 37df98db10
4 changed files with 103 additions and 80 deletions

View File

@@ -17,6 +17,48 @@ class GroupController extends ApiController
{
/**
* 改群名
* @param Request $request
* @return Response
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function editTitle(Request $request): Response
{
$group_id = $request->post('group_id');
$title = $request->post('title');
if (empty($group_id) ||empty($title)) {
return $this->error('参数不存在');
}
// 验证是否是群主
$owner = Db::name('chat_group_member')->where([
'group_id' => $group_id,
'user_id' => $this->uid,
'role' => 1,
'quit_time' => null
])->find();
if (!$owner) {
return $this->error('无权修改');
}
$res = Db::name('chat_group')->where([
'id' => $group_id,
'owner_id' => $this->uid,
])->update([
'name' => $title
]);
if($res) {
return $this->success();
}else {
return $this->error('修改失败');
}
}
public function shopInfo(Request $request): Response
{
$group_id = $request->post('shop_id');

View File

@@ -175,12 +175,14 @@ class MessageController extends ApiController
*/
public function getSessionList(Request $request): Response
{
// 获取所有会话ID
$sessionIds = Db::name('chat_message')->where('from_id', $this->uid)->WhereOr('to_id', $this->uid)
->group('session_id')->column('session_id');
if (empty($sessionIds)) {
return $this->success();
}
// $sessionIds = Db::name('chat_message')->where('from_id', $this->uid)->WhereOr('to_id', $this->uid)
// ->group('session_id')->column('session_id');
// if (empty($sessionIds)) {
// return $this->success();
// }
$list = Redis::get('usermsg:list:' . $this->user_type . ':' . $this->uid);
if($list) {
$data = json_decode($list, true);

View File

@@ -12,82 +12,61 @@ class ChatMessage extends BaseModel
public static function getconverlist($uid, $user_type)
{
// 获取所有会话ID 自己发送过消息的或者别人发送过消息的
$sessionIds = Db::name('chat_message')->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]);
if($group_arr) {
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;
}else {
if($group_arr) {
foreach ($group_arr as $gk => &$group) {
$group['session_id'] = '';
$group['chat_type'] = 2;
}
// 单聊的话 两个人对话用一样的会话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));
}
$sessionIds = array_merge($sessionIds, $group_arr);
$group_id = '';
foreach ($sessionIds as $k => $session) {
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'];
$data[$k]['user_id'] = $group_id;
}
// 单聊的话 两个人对话用一样的会话ID
$data[$k]['avatar'] = $avatar;
$data[$k]['chat_type'] = $session['chat_type'];
$data[$k]['session_id'] = $session['session_id'];
$data[$k]['name'] = $name;
$data[$k]['group_id'] = $group_id;
$data[$k]['is_del'] = 0;
}
Redis::set('usermsg:list:' . $user_type . ':' . $uid, json_encode($data));
return $data;
}