From e55d9ca069ca3604575c76439b5b85a299db1baf Mon Sep 17 00:00:00 2001 From: Kkuil <3024067144@qq.com> Date: Sun, 22 Oct 2023 19:07:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E7=BE=A4=E4=B8=BB=E5=92=8C=E7=AE=A1=E7=90=86=E5=91=98=E7=9A=84?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/chat/dao/GroupMemberDao.java | 17 +++++++++++++++++ .../common/chat/service/ChatService.java | 2 +- .../chat/service/impl/ChatServiceImpl.java | 9 +++++++-- .../domain/vo/response/ws/ChatMemberResp.java | 6 ++++++ 4 files changed, 31 insertions(+), 3 deletions(-) diff --git a/mallchat-chat-server/src/main/java/com/abin/mallchat/common/chat/dao/GroupMemberDao.java b/mallchat-chat-server/src/main/java/com/abin/mallchat/common/chat/dao/GroupMemberDao.java index 7d80749..ba9939c 100644 --- a/mallchat-chat-server/src/main/java/com/abin/mallchat/common/chat/dao/GroupMemberDao.java +++ b/mallchat-chat-server/src/main/java/com/abin/mallchat/common/chat/dao/GroupMemberDao.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -50,4 +51,20 @@ public class GroupMemberDao extends ServiceImpl .eq(GroupMember::getRole, GroupRoleEnum.LEADER.getType()) .list(); } + + /** + * 批量获取成员群角色 + * + * @param groupId 群ID + * @param uidList 用户列表 + * @return 成员群角色列表 + */ + public Map getMemberMapRole(Long groupId, List uidList) { + List list = lambdaQuery() + .eq(GroupMember::getGroupId, groupId) + .in(GroupMember::getUid, uidList) + .select(GroupMember::getUid, GroupMember::getRole) + .list(); + return list.stream().collect(Collectors.toMap(GroupMember::getUid, GroupMember::getRole)); + } } diff --git a/mallchat-chat-server/src/main/java/com/abin/mallchat/common/chat/service/ChatService.java b/mallchat-chat-server/src/main/java/com/abin/mallchat/common/chat/service/ChatService.java index 62e6d4a..de8742b 100644 --- a/mallchat-chat-server/src/main/java/com/abin/mallchat/common/chat/service/ChatService.java +++ b/mallchat-chat-server/src/main/java/com/abin/mallchat/common/chat/service/ChatService.java @@ -54,7 +54,7 @@ public interface ChatService { * @param request * @return */ - CursorPageBaseResp getMemberPage(List memberUidList, CursorPageBaseReq request); + CursorPageBaseResp getMemberPage(List memberUidList, MemberReq request); /** * 获取消息列表 diff --git a/mallchat-chat-server/src/main/java/com/abin/mallchat/common/chat/service/impl/ChatServiceImpl.java b/mallchat-chat-server/src/main/java/com/abin/mallchat/common/chat/service/impl/ChatServiceImpl.java index 53ac386..f0988c1 100644 --- a/mallchat-chat-server/src/main/java/com/abin/mallchat/common/chat/service/impl/ChatServiceImpl.java +++ b/mallchat-chat-server/src/main/java/com/abin/mallchat/common/chat/service/impl/ChatServiceImpl.java @@ -95,7 +95,7 @@ public class ChatServiceImpl implements ChatService { @Autowired private RoomGroupCache roomGroupCache; @Autowired - private MQProducer mqProducer; + private RoomGroupDao roomGroupDao; /** * 发送消息 @@ -141,7 +141,7 @@ public class ChatServiceImpl implements ChatService { } @Override - public CursorPageBaseResp getMemberPage(List memberUidList, CursorPageBaseReq request) { + public CursorPageBaseResp getMemberPage(List memberUidList, MemberReq request) { Pair pair = ChatMemberHelper.getCursorPair(request.getCursor()); ChatActiveStatusEnum activeStatusEnum = pair.getKey(); String timeCursor = pair.getValue(); @@ -164,6 +164,11 @@ public class ChatServiceImpl implements ChatService { timeCursor = cursorPage.getCursor(); isLast = cursorPage.getIsLast(); } + // 获取群成员角色ID + List uidList = resultList.stream().map(ChatMemberResp::getUid).collect(Collectors.toList()); + RoomGroup roomGroup = roomGroupDao.getByRoomId(request.getRoomId()); + Map uidMapRole = groupMemberDao.getMemberMapRole(roomGroup.getId(), uidList); + resultList.forEach(member -> member.setRoleId(uidMapRole.get(member.getUid()))); //组装结果 return new CursorPageBaseResp<>(ChatMemberHelper.generateCursor(activeStatusEnum, timeCursor), isLast, resultList); } diff --git a/mallchat-chat-server/src/main/java/com/abin/mallchat/common/user/domain/vo/response/ws/ChatMemberResp.java b/mallchat-chat-server/src/main/java/com/abin/mallchat/common/user/domain/vo/response/ws/ChatMemberResp.java index 25aa117..ca06054 100644 --- a/mallchat-chat-server/src/main/java/com/abin/mallchat/common/user/domain/vo/response/ws/ChatMemberResp.java +++ b/mallchat-chat-server/src/main/java/com/abin/mallchat/common/user/domain/vo/response/ws/ChatMemberResp.java @@ -25,6 +25,12 @@ public class ChatMemberResp { */ @ApiModelProperty("在线状态 1在线 2离线") private Integer activeStatus; + + /** + * 角色ID + */ + private Integer roleId; + @ApiModelProperty("最后一次上下线时间") private Date lastOptTime; }