Merge remote-tracking branch 'origin/main'

This commit is contained in:
zhongzb
2023-10-22 19:09:40 +08:00
4 changed files with 31 additions and 3 deletions

View File

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -50,4 +51,20 @@ public class GroupMemberDao extends ServiceImpl<GroupMemberMapper, GroupMember>
.eq(GroupMember::getRole, GroupRoleEnum.LEADER.getType()) .eq(GroupMember::getRole, GroupRoleEnum.LEADER.getType())
.list(); .list();
} }
/**
* 批量获取成员群角色
*
* @param groupId 群ID
* @param uidList 用户列表
* @return 成员群角色列表
*/
public Map<Long, Integer> getMemberMapRole(Long groupId, List<Long> uidList) {
List<GroupMember> 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));
}
} }

View File

@@ -54,7 +54,7 @@ public interface ChatService {
* @param request * @param request
* @return * @return
*/ */
CursorPageBaseResp<ChatMemberResp> getMemberPage(List<Long> memberUidList, CursorPageBaseReq request); CursorPageBaseResp<ChatMemberResp> getMemberPage(List<Long> memberUidList, MemberReq request);
/** /**
* 获取消息列表 * 获取消息列表

View File

@@ -95,7 +95,7 @@ public class ChatServiceImpl implements ChatService {
@Autowired @Autowired
private RoomGroupCache roomGroupCache; private RoomGroupCache roomGroupCache;
@Autowired @Autowired
private MQProducer mqProducer; private RoomGroupDao roomGroupDao;
/** /**
* 发送消息 * 发送消息
@@ -141,7 +141,7 @@ public class ChatServiceImpl implements ChatService {
} }
@Override @Override
public CursorPageBaseResp<ChatMemberResp> getMemberPage(List<Long> memberUidList, CursorPageBaseReq request) { public CursorPageBaseResp<ChatMemberResp> getMemberPage(List<Long> memberUidList, MemberReq request) {
Pair<ChatActiveStatusEnum, String> pair = ChatMemberHelper.getCursorPair(request.getCursor()); Pair<ChatActiveStatusEnum, String> pair = ChatMemberHelper.getCursorPair(request.getCursor());
ChatActiveStatusEnum activeStatusEnum = pair.getKey(); ChatActiveStatusEnum activeStatusEnum = pair.getKey();
String timeCursor = pair.getValue(); String timeCursor = pair.getValue();
@@ -164,6 +164,11 @@ public class ChatServiceImpl implements ChatService {
timeCursor = cursorPage.getCursor(); timeCursor = cursorPage.getCursor();
isLast = cursorPage.getIsLast(); isLast = cursorPage.getIsLast();
} }
// 获取群成员角色ID
List<Long> uidList = resultList.stream().map(ChatMemberResp::getUid).collect(Collectors.toList());
RoomGroup roomGroup = roomGroupDao.getByRoomId(request.getRoomId());
Map<Long, Integer> uidMapRole = groupMemberDao.getMemberMapRole(roomGroup.getId(), uidList);
resultList.forEach(member -> member.setRoleId(uidMapRole.get(member.getUid())));
//组装结果 //组装结果
return new CursorPageBaseResp<>(ChatMemberHelper.generateCursor(activeStatusEnum, timeCursor), isLast, resultList); return new CursorPageBaseResp<>(ChatMemberHelper.generateCursor(activeStatusEnum, timeCursor), isLast, resultList);
} }

View File

@@ -25,6 +25,12 @@ public class ChatMemberResp {
*/ */
@ApiModelProperty("在线状态 1在线 2离线") @ApiModelProperty("在线状态 1在线 2离线")
private Integer activeStatus; private Integer activeStatus;
/**
* 角色ID
*/
private Integer roleId;
@ApiModelProperty("最后一次上下线时间") @ApiModelProperty("最后一次上下线时间")
private Date lastOptTime; private Date lastOptTime;
} }