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 7d807494..ba9939c3 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 org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -50,4 +51,20 @@ public List getSelfGroup(Long uid) { .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 62e6d4aa..de8742ba 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 53ac386f..f0988c1b 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 ChatMessageResp getMsgResp(Long msgId, Long receiveUid) { } @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 CursorPageBaseResp getMemberPage(List memberUidList 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 25aa1170..ca060546 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; }