同时在线用户数修改

This commit is contained in:
tianfeng 2026-03-05 19:14:39 +08:00
parent 05a202ed50
commit 5265fdc9f6

View File

@ -24,7 +24,9 @@ import com.red.circle.other.inner.endpoint.live.RoomMemberClient;
import com.red.circle.other.inner.endpoint.task.RoomDailyTaskClient;
import com.red.circle.other.inner.endpoint.user.user.UserOnlineClient;
import com.red.circle.other.inner.endpoint.user.user.UserProfileClient;
import com.red.circle.other.inner.enums.live.RoomUserRolesEnum;
import com.red.circle.other.inner.enums.task.RoomDailyTaskCode;
import com.red.circle.other.inner.model.cmd.live.MemberRolesQryCmd;
import com.red.circle.other.inner.model.cmd.task.RoomDailyTaskProgressUpdateInnerCmd;
import com.red.circle.other.inner.model.cmd.user.OnlineStatusUploadCmd;
import com.red.circle.other.inner.model.dto.live.RoomMemberDTO;
@ -37,8 +39,11 @@ import com.red.circle.tool.core.regex.RegexConstant;
import com.red.circle.tool.core.sequence.IdWorkerUtils;
import com.red.circle.tool.core.text.StringUtils;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -121,7 +126,15 @@ public class UserHeartbeatListener implements MessageListener {
// 房间内同时在线用户数
if (Objects.equals(roomProfile.getUserId(), event.getUserId())) {
List<LiveRoomUser> liveRoomUsers = liveMicUserCacheService.listUser(roomProfile.getId());
handleOnlineUserCountTask(event.getUserId(), liveRoomUsers.size());
Set<Long> userIdList = liveRoomUsers.stream().map(LiveRoomUser::getUserId).collect(Collectors.toSet());
MemberRolesQryCmd roleQry = new MemberRolesQryCmd().setRoomId(roomId).setUserIds(userIdList);
Map<Long, RoomUserRolesEnum> body = roomMemberClient.mapMemberRoles(roleQry).getBody();
Set<RoomUserRolesEnum> collect = body.values().stream()
.filter(roleEnum -> !RoomUserRolesEnum.TOURIST.equals(roleEnum))
.collect(Collectors.toSet());
handleOnlineUserCountTask(event.getUserId(), collect.size());
} else {
// 在他人房间活跃
if (!tryAcquireMinuteTick(event.getUserId())) {