v1.1: 屏蔽功能补充、搜索屏蔽,跟随房间入口屏蔽
This commit is contained in:
@@ -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());
|
||||
|
@@ -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));
|
||||
|
@@ -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))
|
||||
|
@@ -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())
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user