feat: allow guest room discovery

This commit is contained in:
hy001 2026-07-21 15:22:53 +08:00
parent 246b5afeab
commit 16f9c12151
3 changed files with 18 additions and 5 deletions

View File

@ -149,6 +149,12 @@ gateway:
- /open-other-test/**
- /open-console-test/**
- /sys/config/country
# Apple 审核游客模式:只开放首页展示所需的只读接口,进房接口仍要求 token。
- /sys/config/banner
- /room/live-voice/discovery
- /room/live-voice/search
- /room/profile/specific
- /activity/leaderboard/appLeaderboard
- /sys/config/banner/start-page
- /oss/sts
- /oss/upload

View File

@ -76,13 +76,18 @@ public class RoomVoiceDiscoverQryExe {
public List<RoomVoiceProfileCO> execute(AppExtCommand cmd) {
long totalStart = System.currentTimeMillis();
long stepStart = totalStart;
Long reqUserId = cmd.requiredReqUserId();
Long reqUserId = cmd.getReqUserId();
String sysOrigin = cmd.requireReqSysOrigin();
boolean allRegionWhiteListUser = roomRegionFilterCommon.canViewAllRegions(reqUserId);
RegionConfig currentRegion = roomRegionFilterCommon.requireRegionConfig(reqUserId);
boolean guestDiscovery = Objects.isNull(reqUserId);
boolean allRegionWhiteListUser = guestDiscovery
|| roomRegionFilterCommon.canViewAllRegions(reqUserId);
// 游客没有账号区域使用独立 ALL_REGION 缓存浏览公开房间不参与个性化区域计算
RegionConfig currentRegion = guestDiscovery
? new RegionConfig().setRegionCode("GUEST")
: roomRegionFilterCommon.requireRegionConfig(reqUserId);
String region = currentRegion.getRegionCode();
UserProfile userProfile = userProfileGateway.getByUserId(reqUserId);
UserProfile userProfile = guestDiscovery ? null : userProfileGateway.getByUserId(reqUserId);
stepStart = logDiscoveryStep("prepare", stepStart, reqUserId, sysOrigin, region);
String key = discoveryCacheKey(sysOrigin, region, allRegionWhiteListUser);

View File

@ -31,7 +31,9 @@ public class RoomVoiceProfileByRoomAccountQryExe {
if (roomVoiceProfile == null || !Objects.equals(roomVoiceProfile.getSysOrigin(), cmd.requireReqSysOrigin())) {
return null;
}
if (!userRegionGateway.checkEqRegion(cmd.requiredReqUserId(), roomVoiceProfile.getUserId())) {
// 游客只能查看公开房间资料登录用户仍保持原有同区域搜索限制
if (Objects.nonNull(cmd.getReqUserId())
&& !userRegionGateway.checkEqRegion(cmd.getReqUserId(), roomVoiceProfile.getUserId())) {
return null;
}
return roomVoiceProfile;