v1.1: 屏蔽功能补充、搜索屏蔽,跟随房间入口屏蔽

This commit is contained in:
lzm
2022-10-22 23:35:59 +08:00
parent 70f3d5ad00
commit 65f3c56479
6 changed files with 72 additions and 7 deletions

View File

@@ -563,6 +563,9 @@ public class HomeService extends BaseService {
// 渠道内容过滤
list = channelContentPartitionService.filterByChannelContent(uid, deviceInfo, list, this::filterRoomTabHomeByChannel);
// 过滤屏蔽房间
List<Long> blackIdList = userBlackRecordService.getBlackIdList(uid, Constant.UserBlackType.room);
List<Long> roomUidList = list.stream().map(RoomTabHome::getRoomUid).collect(Collectors.toList());
List<Room> roomList = roomService.getRoomListByUids(roomUidList);
@@ -573,6 +576,9 @@ public class HomeService extends BaseService {
Date currentDate = new Date();
list.stream().forEach(roomTabHome -> {
// 过滤屏蔽房间
if (CollectionUtils.isNotEmpty(blackIdList) && blackIdList.contains(roomTabHome.getRoomUid())) return;
TopRoomTabHomeVo topRoomTabHomeVo = new TopRoomTabHomeVo();
Room room = roomMap.get(roomTabHome.getRoomUid());
Users users = userMap.get(roomTabHome.getRoomUid());
@@ -605,9 +611,6 @@ public class HomeService extends BaseService {
//进行过滤
Integer onMicNum = Integer.valueOf(sysConfService.getDefaultSysConfValueById(Constant.SysConfId.RECOM_NOT_TOP_MIC_NUM, String.valueOf(Constant.BigGooseConstant.home_not_top_default_mic_num)));
// 过滤屏蔽房间
List<Long> blackIdList = userBlackRecordService.getBlackIdList(uid, Constant.UserBlackType.room);
List<TopRoomTabHomeVo> tabHomeVoList = topRoomTabHomeVos.stream().filter(tabHomeVo -> {
Room room = roomMap.get(tabHomeVo.getRoomUid());
if (ObjectUtil.isNull(room) || StringUtils.isNotEmpty(room.getRoomPwd()) || !room.getValid()) return false;
@@ -907,6 +910,11 @@ public class HomeService extends BaseService {
Users users = userMap.get(roomTabMap.getRoomUid());
if(ObjectUtil.isNull(room) || ObjectUtil.isNull(users)) continue;
// 过滤屏蔽房间
if (CollectionUtils.isNotEmpty(blackIdList) && blackIdList.contains(roomTabMap.getRoomUid())) {
continue;
}
BeanUtils.copyProperties(roomTabMap,topRoomTabHomeVo);
BeanUtils.copyProperties(room,topRoomTabHomeVo);
topRoomTabHomeVo.setAvatar(StringUtils.isEmpty(users.getAvatar())?Constant.DEFAULT_SYSTEM_AVATAR:users.getAvatar());

View File

@@ -9,6 +9,7 @@ import com.accompany.business.elasticsearch.EsPage;
import com.accompany.business.model.user.UserCouple;
import com.accompany.business.mybatismapper.user.UserCoupleMapper;
import com.accompany.business.service.account.AccountBlockService;
import com.accompany.business.service.user.UserBlackRecordService;
import com.accompany.business.service.user.UserInRoomService;
import com.accompany.business.service.user.UsersService;
import com.accompany.business.util.ReplaceDomainUtil;
@@ -104,6 +105,9 @@ public class RoomSearchService extends BaseService {
private static final Integer SEARCH_TYPE_ROOM = 1;
private static final Integer SEARCH_TYPE_USER = 2;
@Autowired
private UserBlackRecordService userBlackRecordService;
/**
* 对搜索结果集进行转换
*
@@ -136,10 +140,17 @@ public class RoomSearchService extends BaseService {
String cacheKey = RedisKey.search_text_cache.getKey(searchText, searchType.toString());
String result = jedisService.get(cacheKey);
// 屏蔽房間/用户
List<Long> blackIdList = userBlackRecordService.getBlackIdList(uid, Constant.UserBlackType.room);
if (StringUtils.isNotBlank(result)) {
logger.info("search cache found, key:{}, type:{}", searchText, searchType);
return gson.fromJson(result, new TypeToken<List<SearchVo>>() {
}.getType());
if (CollectionUtils.isEmpty(blackIdList)) {
return gson.fromJson(result, new TypeToken<List<SearchVo>>() {}.getType());
}
// 过滤屏蔽房間/用户
List<SearchVo> searchVos = gson.fromJson(result, new TypeToken<List<SearchVo>>() {}.getType());
return searchVos.stream().filter(it -> !blackIdList.contains(it.getUid())).collect(Collectors.toList());
}
List<SearchVo> searchVos;
if (searchType == 1) {
@@ -159,6 +170,10 @@ public class RoomSearchService extends BaseService {
searchVos = filterBlocked(searchVos);
Set<String> uids = jedisService.hgetAllKeysByKey(RedisKey.user_parent.getKey());
searchVos = searchVos.stream().filter(item -> !uids.contains(item.getUid().toString())).collect(toList());
// 过滤屏蔽房間/用户
if (CollectionUtils.isNotEmpty(blackIdList)) {
searchVos = searchVos.stream().filter(it -> !blackIdList.contains(it.getUid())).collect(Collectors.toList());
}
addUserCpState(uid, searchVos);
// 缓存结果默认5秒
jedisService.set(cacheKey, gson.toJson(searchVos));
@@ -188,10 +203,17 @@ public class RoomSearchService extends BaseService {
String cacheKey = RedisKey.search_text_cache.getKey(searchText, searchType.toString());
String result = jedisService.get(cacheKey);
// 屏蔽房間/用户
List<Long> blackIdList = userBlackRecordService.getBlackIdList(uid, Constant.UserBlackType.room);
if (StringUtils.isNotBlank(result)) {
logger.info("search cache found, key:{}, type:{}", searchText, searchType);
return gson.fromJson(result, new TypeToken<List<SearchVo>>() {
}.getType());
if (CollectionUtils.isEmpty(blackIdList)) {
return gson.fromJson(result, new TypeToken<List<SearchVo>>() {}.getType());
}
// 过滤屏蔽房間
List<SearchVo> searchVos = gson.fromJson(result, new TypeToken<List<SearchVo>>() {}.getType());
return searchVos.stream().filter(it -> !blackIdList.contains(it.getUid())).collect(Collectors.toList());
}
List<SearchVo> searchVos;
if (searchType == 1) {
@@ -203,6 +225,10 @@ public class RoomSearchService extends BaseService {
searchVos = filterBlocked(searchVos);
Set<String> uids = jedisService.hgetAllKeysByKey(RedisKey.user_parent.getKey());
searchVos = searchVos.stream().filter(item -> !uids.contains(item.getUid().toString())).collect(toList());
// 过滤屏蔽房間/用户
if (CollectionUtils.isNotEmpty(blackIdList)) {
searchVos = searchVos.stream().filter(it -> !blackIdList.contains(it.getUid())).collect(Collectors.toList());
}
addUserCpState(uid, searchVos);
// 缓存结果默认5秒
jedisService.set(cacheKey, gson.toJson(searchVos));

View File

@@ -21,6 +21,7 @@ import com.accompany.core.vo.UserVo;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
@@ -54,6 +55,8 @@ public class UserDetailsService extends BaseService {
private UserVisitRecordService userVisitRecordService;
@Autowired
private AccountBlockService accountBlockService;
@Autowired
private UserBlackRecordService userBlackRecordService;
/**
* 获取用户资料详情
@@ -98,6 +101,13 @@ public class UserDetailsService extends BaseService {
RoomVo roomVo = gson.fromJson(roomVoStr, RoomVo.class);
userDetailsVo.setRoomUid(roomVo.getUid());
userDetailsVo.setRoomTitle(roomVo.getTitle());
// 如果是被当前用户屏蔽的房间, 则不展示
List<Long> blackIdList = userBlackRecordService.getBlackIdList(selfUid, Constant.UserBlackType.room);
if (CollectionUtils.isNotEmpty(blackIdList) && blackIdList.contains(roomVo.getUid())) {
userDetailsVo.setRoomUid(null);
userDetailsVo.setRoomTitle(null);
}
}
if (!selfUid.equals(uid))

View File

@@ -85,6 +85,9 @@ public class UserInRoomService extends BaseService {
@Autowired
private UsersService usersService;
@Autowired
private UserBlackRecordService userBlackRecordService;
public RoomVo userIntoRoomV2(Long uid, Long roomUid, Long inviteUid, Byte behaveType, DeviceInfo deviceInfo){
RoomVo roomVo=roomService.getRoomVoByUid(roomUid);
@@ -203,12 +206,18 @@ public class UserInRoomService extends BaseService {
*/
public List<InRoomRecordVo> getInRoomRecord(Long uid, Integer pageSize, Integer pageNum){
Date currentDate = new Date();
// 屏蔽房間
List<Long> blackIdList = userBlackRecordService.getBlackIdList(uid, Constant.UserBlackType.room);
// 只获取一个星期的记录
Date lastDate = DateTimeUtil.addDays(currentDate, -7);
PageHelper.startPage(pageNum,pageSize);
List<UserInRoomRecord> roomUidList = userInRoomRecordMapper.getUserInRoomUidByUid(uid, lastDate, currentDate);
List<InRoomRecordVo> vos = new ArrayList<>();
roomUidList.forEach(a -> {
// 过滤屏蔽房間
if (CollectionUtils.isNotEmpty(blackIdList) && blackIdList.contains(a.getRoomuid())) return;
Room room = roomService.getRoomByUid(a.getRoomuid());
if (room != null){
InRoomRecordVo vo = InRoomRecordVo.builder().roomUid(a.getRoomuid()).roomId(room.getRoomId())

View File

@@ -71,6 +71,9 @@ public class UserBlackRecordServiceImpl extends ServiceImpl<UserBlackRecordMappe
}
if (Constant.UserBlackType.room.equals(type)) {
if (uid.equals(objId)) {
throw new ServiceException("不能屏蔽自己的房間!");
}
Users users = usersService.getUsersByUid(objId);
if (users == null) {
throw new ServiceException(BusiStatus.ROOMNOTEXIST);

View File

@@ -19,6 +19,7 @@ import com.accompany.business.service.room.BlindDateRoundService;
import com.accompany.business.service.room.CrossRoomPkRoundService;
import com.accompany.business.service.room.RoomCleanService;
import com.accompany.business.service.room.RoomService;
import com.accompany.business.service.user.UserBlackRecordService;
import com.accompany.business.util.MD5;
import com.accompany.business.util.ReplaceDomainUtil;
import com.accompany.business.vo.KTVListRoomVo;
@@ -85,6 +86,8 @@ public class RoomController extends BaseController{
private MiniGameService miniGameService;
@Autowired
private CrossRoomPkRoundService crossRoomPkRoundService;
@Autowired
private UserBlackRecordService userBlackRecordService;
private RateLimiter roomGetLimiter = RateLimiter.create(1000);
@@ -289,6 +292,12 @@ public class RoomController extends BaseController{
if (parentMode){
return new BusiResult(BusiStatus.FORBID_IN_ROOM);
}
List<Long> blackIdList = userBlackRecordService.getBlackIdList(pubUid, Constant.UserBlackType.room);
if ( !CollectionUtils.isEmpty(blackIdList) && blackIdList.contains(uid)) {
throw new ServiceException("你已屏蔽該房間,無法進入!");
}
// 用户是否收藏房间
Boolean isRoomFans = fansRoomService.userFansRoomCheck(pubUid, uid);
logger.info("用户收藏房间pubUid:{}, uid:{}, isFans:{}", pubUid, uid, isRoomFans);