feat(发现): 发现列表新增是否所有区域逻辑

This commit is contained in:
tianfeng 2025-08-07 18:46:30 +08:00
parent d06dcde23c
commit a418deffea
4 changed files with 13 additions and 10 deletions

View File

@ -29,6 +29,11 @@ public class AppExtCommand extends AppCommand {
private String roomSessionId;
/**
* 所有区域
*/
private boolean isAllRegion = false;
/**
* 转系统枚举.
*/

View File

@ -54,7 +54,7 @@ public class RoomVoiceDiscoverQryExe {
private final LiveMicClient liveMicClient;
public List<RoomVoiceProfileCO> execute(AppExtCommand cmd) {
String region = userRegionGateway.getRegionCode(cmd.requiredReqUserId());
String region = cmd.isAllRegion() ? "ALL" : userRegionGateway.getRegionCode(cmd.requiredReqUserId());
String key = cmd.requireReqSysOrigin() + region;
String regionsRoom = regionRoomCacheService.getRegionsRoom(key);
@ -63,7 +63,7 @@ public class RoomVoiceDiscoverQryExe {
return roomList;
}
List<ActiveVoiceRoom> activeVoiceRooms = activeVoiceRoomService.listDiscover(cmd.requireReqSysOrigin(), region, 50);
List<ActiveVoiceRoom> activeVoiceRooms = activeVoiceRoomService.listDiscover(cmd.requireReqSysOrigin(), cmd.isAllRegion(), region, 50);
log.info("activeVoiceRooms:{}", JSON.toJSONString(activeVoiceRooms));
// 处理没有人的房间有缓存不会大量创建线程
// new Thread(() -> formatRoomList(activeVoiceRooms)).start();
@ -72,10 +72,8 @@ public class RoomVoiceDiscoverQryExe {
if (CollectionUtils.isEmpty(roomList)) {
//roomList = getHomeData(cmd,latestMobileDeviceService.getLatestLanguage(cmd.requiredReqUserId()));
roomList = roomVoiceProfileCommon
.toListRoomVoiceProfileCO(activeVoiceRoomService.listDiscover(
cmd.requireReqSysOrigin(), "ID", 50)
);
roomList = roomVoiceProfileCommon.toListRoomVoiceProfileCO(
activeVoiceRoomService.listDiscover(cmd.requireReqSysOrigin(), cmd.isAllRegion(), "ID", 50));
}
if (CollectionUtils.isEmpty(roomList)) {
return CollectionUtils.newArrayList();

View File

@ -65,7 +65,7 @@ public interface ActiveVoiceRoomService {
/**
* 获取发现页数据.
*/
List<ActiveVoiceRoom> listDiscover(String sysOrigin, String region, Integer limit);
List<ActiveVoiceRoom> listDiscover(String sysOrigin, boolean isAllRegion, String region, Integer limit);
/**
* 获取区域房间.

View File

@ -118,7 +118,7 @@ public class ActiveVoiceRoomServiceImpl implements ActiveVoiceRoomService {
@Override
public List<ActiveVoiceRoom> listDiscover(String sysOrigin, String region, Integer limit) {
public List<ActiveVoiceRoom> listDiscover(String sysOrigin, boolean isAllRegion, String region, Integer limit) {
// 区域隔离
List<String> regions = getRegions(region);
@ -126,10 +126,10 @@ public class ActiveVoiceRoomServiceImpl implements ActiveVoiceRoomService {
log.info("被隔离区域 regions:{}", JSON.toJSONString(regions));
// 构建聚合管道
Criteria criteria = Criteria.where("sysOrigin").is(sysOrigin);
if (CollectionUtils.isNotEmpty(specialRegions)) {
if (CollectionUtils.isNotEmpty(specialRegions) && !isAllRegion) {
criteria.and("region").in(specialRegions);
}
if (CollectionUtils.isEmpty(specialRegions) && CollectionUtils.isNotEmpty(regions)) {
if (CollectionUtils.isEmpty(specialRegions) && CollectionUtils.isNotEmpty(regions) && !isAllRegion) {
criteria.and("region").nin(regions);
}
Aggregation aggregation = Aggregation.newAggregation(