From 5265fdc9f638d7ef30b1211d1d954693f4645cb2 Mon Sep 17 00:00:00 2001 From: tianfeng <769204422@qq.com> Date: Thu, 5 Mar 2026 19:14:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=97=B6=E5=9C=A8=E7=BA=BF=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=95=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../live/app/listener/UserHeartbeatListener.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/rc-service/rc-service-live/live-application/src/main/java/com/red/circle/live/app/listener/UserHeartbeatListener.java b/rc-service/rc-service-live/live-application/src/main/java/com/red/circle/live/app/listener/UserHeartbeatListener.java index 6b4f43bf..268f950a 100644 --- a/rc-service/rc-service-live/live-application/src/main/java/com/red/circle/live/app/listener/UserHeartbeatListener.java +++ b/rc-service/rc-service-live/live-application/src/main/java/com/red/circle/live/app/listener/UserHeartbeatListener.java @@ -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 liveRoomUsers = liveMicUserCacheService.listUser(roomProfile.getId()); - handleOnlineUserCountTask(event.getUserId(), liveRoomUsers.size()); + Set userIdList = liveRoomUsers.stream().map(LiveRoomUser::getUserId).collect(Collectors.toSet()); + + MemberRolesQryCmd roleQry = new MemberRolesQryCmd().setRoomId(roomId).setUserIds(userIdList); + Map body = roomMemberClient.mapMemberRoles(roleQry).getBody(); + Set collect = body.values().stream() + .filter(roleEnum -> !RoomUserRolesEnum.TOURIST.equals(roleEnum)) + .collect(Collectors.toSet()); + + handleOnlineUserCountTask(event.getUserId(), collect.size()); } else { // 在他人房间活跃 if (!tryAcquireMinuteTick(event.getUserId())) {