diff --git a/app/chat/controller/GroupController.php b/app/chat/controller/GroupController.php index 1e79627..aa8b11b 100644 --- a/app/chat/controller/GroupController.php +++ b/app/chat/controller/GroupController.php @@ -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'); diff --git a/app/chat/controller/MessageController.php b/app/chat/controller/MessageController.php index f3093d5..87f04be 100644 --- a/app/chat/controller/MessageController.php +++ b/app/chat/controller/MessageController.php @@ -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); diff --git a/app/chat/model/ChatMessage.php b/app/chat/model/ChatMessage.php index 63c59dd..ff9ca90 100644 --- a/app/chat/model/ChatMessage.php +++ b/app/chat/model/ChatMessage.php @@ -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; } diff --git a/extend/chat/model/Base.php b/extend/chat/model/Base.php index 8f937f8..041c0ea 100644 --- a/extend/chat/model/Base.php +++ b/extend/chat/model/Base.php @@ -271,20 +271,20 @@ namespace extend\chat\model; $str_uid = self::getUid($grep['user_id'], $user_type); // 如果发送的是优惠券,检查这个人有没有领取过 - if($message['msg_type'] == 4 && !empty($message['coupon']) && !empty($message['chat_coupon_id'])) { - // 查询有没有领取过优惠券 - $mk_shop_coupon_record = Db::name('mk_shop_coupon_record')->where([ - 'source' => '群聊发放', - 'source_id ' => $message['chat_coupon_id'], - 'user_id' => $grep['user_id'], - 'shop_id' => $message['shop_id'], - ])->find(); - if($mk_shop_coupon_record) { - $notice_data['coupon_claim'] = 1; - }else { - $notice_data['coupon_claim'] = 0; - } - } +// if($message['msg_type'] == 4 && !empty($message['coupon']) && !empty($message['chat_coupon_id'])) { +// // 查询有没有领取过优惠券 +// $mk_shop_coupon_record = Db::name('mk_shop_coupon_record')->where([ +// 'source' => '群聊发放', +// 'source_id ' => $message['chat_coupon_id'], +// 'user_id' => $grep['user_id'], +// 'shop_id' => $message['shop_id'], +// ])->find(); +// if($mk_shop_coupon_record) { +// $notice_data['coupon_claim'] = 1; +// }else { +// $notice_data['coupon_claim'] = 0; +// } +// } // 群成员是否在线,在线发 不在线存起来等上线了发 免打扰也不发消息 if($grep['is_dist'] == 0) { if(Gateway::isUidOnline($str_uid)) {