房间-云信-将cleanRoomTask的关房判断移交到refreshRoomTask

This commit is contained in:
khalil
2024-06-17 15:36:38 +08:00
parent ed6a2c8bb7
commit 5abe06e5df
12 changed files with 13 additions and 581 deletions

View File

@@ -1,73 +0,0 @@
package com.accompany.admin.vo;
/**
* 首页房间隐藏的列表Vo
* @author xiaoyuyou
* @date 2019/1/21 16:59
*/
public class RoomHomeHideListVo {
private long roomId;
private long uid;
private long erbanNo;
private String title;
private byte hideLocation;
private String hideLocationDesc;
private String app;
public String getApp() {
return app;
}
public void setApp(String app) {
this.app = app;
}
public long getRoomId() {
return roomId;
}
public void setRoomId(long roomId) {
this.roomId = roomId;
}
public long getUid() {
return uid;
}
public void setUid(long uid) {
this.uid = uid;
}
public long getErbanNo() {
return erbanNo;
}
public void setErbanNo(long erbanNo) {
this.erbanNo = erbanNo;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public byte getHideLocation() {
return hideLocation;
}
public void setHideLocation(byte hideLocation) {
this.hideLocation = hideLocation;
}
public String getHideLocationDesc() {
return hideLocationDesc;
}
public void setHideLocationDesc(String hideLocationDesc) {
this.hideLocationDesc = hideLocationDesc;
}
}

View File

@@ -1,24 +1,18 @@
package com.accompany.admin.service.room;
import com.accompany.admin.service.base.BaseService;
import com.accompany.admin.vo.RoomHomeHideListVo;
import com.accompany.admin.vo.RoomUnchangeVo;
import com.accompany.business.constant.RoomHomeHideLocationEnum;
import com.accompany.business.service.room.RoomService;
import com.accompany.business.service.user.UsersService;
import com.accompany.business.vo.RoomVo;
import com.accompany.common.constant.AppEnum;
import com.accompany.core.exception.AdminServiceException;
import com.accompany.core.model.Room;
import com.accompany.core.model.Users;
import com.accompany.core.service.user.UsersBaseService;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class RoomAdminService extends BaseService {
@@ -30,96 +24,6 @@ public class RoomAdminService extends BaseService {
@Autowired
private RoomService roomService;
/**
* 保存指定房间到隐藏列表(热门及新秀)
* @param erbanNo
*/
public void saveRoomToHide(Long erbanNo, Byte hideLocation,String app) throws Exception {
Users users = usersBaseService.getUsersByErBanNo(erbanNo);
if(users == null) {
throw new AdminServiceException("未找到该用户");
}
Room room = roomService.getRoomByDB(users.getUid());
if(room == null) {
throw new AdminServiceException("未找到该房间");
}
roomService.saveHideHomeRoom(users.getUid(), hideLocation,app);
}
/**
* 去除指定房间隐藏列表
* @param uid
*/
public void removeRoomToHide(Long uid, byte hideLocation,String app)throws Exception {
roomService.removeHideHomeRoom(uid, hideLocation,app);
}
/**
* 显示目前隐藏的房间列表
* @return
*/
public List<RoomHomeHideListVo> listAllRoomHide(Long erbanNo) {
List<RoomHomeHideListVo> listVos = Lists.newArrayList();
Long targetUid = null;
if(erbanNo != null){
Users user = this.usersBaseService.getUsersByErBanNo(erbanNo);
if(user == null){
return listVos;
}
targetUid = user.getUid();
}
for (RoomHomeHideLocationEnum locationEnum : RoomHomeHideLocationEnum.values()){
final byte location = locationEnum.getValue();
List<Long> uids = roomService.getHideHomeRoom(location);//获取全部app下隐藏的
for(Long uid : uids){
if(targetUid == null || Objects.equals(targetUid,uid)){
listVos.add(this.buildRoomHomeHideListVo(uid,location,RoomHomeHideLocationEnum.get(location).getDesc(),""));
}
}
for (AppEnum appEnum : AppEnum.values()) {
List<Long> hideHomeRooms = roomService.getHideHomeRoom(location,appEnum.getValue());//获取app下隐藏的
for(Long uid : hideHomeRooms){
if(targetUid == null || Objects.equals(targetUid,uid)){
listVos.add(this.buildRoomHomeHideListVo(uid,location,RoomHomeHideLocationEnum.get(location).getDesc(),appEnum.getValue()));
}
}
}
}
if (CollectionUtils.isEmpty(listVos)) {
return Collections.EMPTY_LIST;
}
List<Long> uids = listVos.stream().map(listVo -> listVo.getUid()).collect(Collectors.toList());
List<Room> rooms = roomService.getRoomListByUids(uids);
Map<Long, Room> roomMap = rooms.stream().collect(Collectors.toMap(Room::getUid, a -> a));
List<Users> users = usersBaseService.getUsersListByUidsFromDB(uids);
Map<Long, Users> userMap = users.stream().collect(Collectors.toMap(Users::getUid, a -> a));
listVos.forEach(listVo -> {
Room room = roomMap.get(listVo.getUid());
if (room == null){
return;
}
listVo.setRoomId(room.getRoomId());
listVo.setTitle(room.getTitle());
Users user = userMap.get(listVo.getUid());
if (user == null){
return;
}
listVo.setErbanNo(user.getErbanNo());
});
return listVos;
}
private RoomHomeHideListVo buildRoomHomeHideListVo(Long uid,byte location,String locationDesc,String app){
RoomHomeHideListVo listVo = new RoomHomeHideListVo();
listVo.setUid(uid);
listVo.setHideLocation(location);
listVo.setHideLocationDesc(locationDesc);
listVo.setApp(app);
return listVo;
}
/**
* 保存指定房间不给修改头像和标题
* @param erbanNo

View File

@@ -6,7 +6,6 @@ import com.accompany.admin.controller.BaseController;
import com.accompany.admin.service.RobotAdminService;
import com.accompany.admin.service.room.RoomAdminService;
import com.accompany.admin.service.room.RoomSearchAdminService;
import com.accompany.admin.vo.RoomHomeHideListVo;
import com.accompany.admin.vo.RoomUnchangeVo;
import com.accompany.admin.vo.RoomVo;
import com.accompany.business.model.RoomTag;
@@ -14,13 +13,10 @@ import com.accompany.business.service.room.RobotUsingService;
import com.accompany.business.service.room.RoomService;
import com.accompany.business.service.user.UsersService;
import com.accompany.business.vo.message.MessageLayout;
import com.accompany.common.constant.MessageConstant;
import com.accompany.common.netease.util.NetEaseConstant;
import com.accompany.common.result.BusiResult;
import com.accompany.common.status.BusiStatus;
import com.accompany.common.tencent.cos.TencentCosUploadService;
import com.accompany.common.utils.DateTimeUtil;
import com.accompany.common.utils.StringUtils;
import com.accompany.core.exception.AdminServiceException;
import com.accompany.core.model.Room;
import com.accompany.core.model.Users;
@@ -32,11 +28,9 @@ import org.apache.commons.lang3.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.Date;
import java.util.List;
@@ -247,37 +241,6 @@ public class RoomAdminController extends BaseController {
return new BusiResult(BusiStatus.SERVERERROR);
}
@RequestMapping("roomHide/save")
public void roomHideSave(Long erbanNo, byte hideLocation, String app) {
try {
roomAdminService.saveRoomToHide(erbanNo, hideLocation, app);
writeJson(true, "保存成功");
} catch (Exception e) {
logger.error("Failed to save room to hide. Cause by {}", e.getMessage());
writeJson(false, "程序出错");
}
}
@RequestMapping("roomHide/remove")
public void removeRoomHide(Long uid, byte hideLocation, String app) {
try {
roomAdminService.removeRoomToHide(uid, hideLocation, app);
writeJson(true, "保存成功");
} catch (Exception e) {
logger.error("Failed to save room to hide. Cause by {}", e.getMessage());
writeJson(false, "程序出错");
}
}
@RequestMapping("roomHide/getList")
public void listRoomHide(Long erbanNo) {
List<RoomHomeHideListVo> roomList = roomAdminService.listAllRoomHide(erbanNo);
JSONObject jsonObject = new JSONObject();
jsonObject.put("total", roomList.size());
jsonObject.put("rows", roomList);
writeJson(jsonObject.toJSONString());
}
@RequestMapping("roomUnchange/save")
public void unchangeRoomSave(Long erbanNo) {
try {

View File

@@ -13,7 +13,6 @@ public enum RedisKey {
room_hot,
room_running,
room_vip,
room_permit_hide,// 需要在展示时隐藏的牌照房在线人数为0或者只有机器人
room_tag_room, // 房间设置标签列表
new_room_tag_top,//66星球改版首页标签列表
room_tag_list, // 单个标签数据
@@ -251,7 +250,6 @@ public enum RedisKey {
recommend_occupy, // 推荐位预占用库存
recommend_room_list, // 推荐位房间缓存
room_home_hide, // 需要隐藏的房间
room_unchange, // 不可修改头像和标题的房间
title,//标题
title_banner,//房间分类标题下的banner

View File

@@ -1,59 +0,0 @@
package com.accompany.business.constant;
import com.accompany.common.status.BusiStatus;
import com.accompany.core.exception.ServiceException;
import java.util.Arrays;
import java.util.Optional;
/**
* 首页房间隐藏位置
*/
public enum RoomHomeHideLocationEnum {
global((byte) 1,"全局"),
recommend((byte)2,"推荐位"),
tag((byte)3,"标签"),
min_level((byte)4, "等级限制"),
global_ranking((byte)5, "全局+排行榜");
private byte value;
private String desc;
public byte getValue() {
return value;
}
public void setValue(byte value) {
this.value = value;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
RoomHomeHideLocationEnum(byte value, String desc) {
this.value = value;
this.desc = desc;
}
public static RoomHomeHideLocationEnum get(byte value){
Optional<RoomHomeHideLocationEnum> result = Arrays.stream(RoomHomeHideLocationEnum.values()).filter(prizeTypeEnum ->
prizeTypeEnum.value == value).findAny();
if (result.isPresent()) {
return result.get();
}
throw new ServiceException(BusiStatus.PARAMETERILLEGAL);
}
}

View File

@@ -1,6 +1,5 @@
package com.accompany.business.event.listener;
import com.accompany.business.constant.RoomHomeHideLocationEnum;
import com.accompany.business.event.RefreshedPeriodData;
import com.accompany.business.model.RoomTag;
import com.accompany.business.service.room.RoomService;
@@ -33,8 +32,6 @@ public class RefreshTagRoomListener implements ApplicationListener<RefreshedPeri
@Override
public void onApplicationEvent(RefreshedPeriodData refreshedPeriodData) {
List<Long> hideUids = roomService.getAllHideRoomUids(RoomHomeHideLocationEnum.global.getValue());
// 同时也过滤掉星推荐的房间
//运营踢出不要过滤星推荐房间
//List<HomeRoomFlowPeriod> homeRoomFlowPeriodList = homeService.getHomeHotManualRecommList();

View File

@@ -1,7 +1,6 @@
package com.accompany.business.service.administrator;
import com.accompany.business.constant.LimitTypeEnum;
import com.accompany.business.constant.RoomHomeHideLocationEnum;
import com.accompany.business.constant.SuperOperateEnum;
import com.accompany.business.event.RoomLimitUpdateEvent;
import com.accompany.business.param.neteasepush.NeteaseSendMsgBatchParam;
@@ -38,8 +37,6 @@ import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
;
/**
* @Author: chucheng
* @Date: 2019/8/20 11:42
@@ -160,28 +157,6 @@ public class SuperAdminWebService extends BaseService {
return this.jedisService.get(RedisKey.super_close_room_wait.getKey(roomUid.toString()))==null;
}
/**
* 隐藏房间
* @param roomUid 房主uid
* @param type 操作类型 0.关闭隐藏 1.开启隐藏
* @param pubUid 超管Uid
*/
public void hideRoom(Long roomUid,Byte type,Long pubUid)throws Exception{
isSuperAdmin(pubUid,true);
Users users = usersService.getUsersByUid(roomUid);
if(users == null){
throw new ServiceException(BusiStatus.USERNOTEXISTS);
}
if(type.intValue() == 0){
roomService.removeHideHomeRoom(roomUid, RoomHomeHideLocationEnum.global_ranking.getValue(),null);
}else if(type.intValue() == 1){
roomService.saveHideHomeRoom(roomUid, RoomHomeHideLocationEnum.global_ranking.getValue(),null);
}else{
throw new ServiceException(BusiStatus.PARAMETERILLEGAL);
}
}
/**
* 是否超级管理员
* @param uid

View File

@@ -1,17 +1,12 @@
package com.accompany.business.service.room;
import com.accompany.business.constant.RoomTypeEnum;
import com.accompany.common.netease.ErBanNetEaseService;
import com.accompany.business.vo.RunningRoomVo;
import com.accompany.common.constant.Constant;
import com.accompany.common.netease.neteaseacc.constant.NetEaseCode;
import com.accompany.common.netease.neteaseacc.result.RoomRet;
import com.accompany.common.netease.neteaseacc.result.RoomUserListRet;
import com.accompany.common.netease.neteaseacc.result.RubbishRet;
import com.accompany.common.redis.RedisKey;
import com.accompany.common.utils.BlankUtil;
import com.accompany.core.model.Room;
import com.accompany.core.mybatismapper.RoomMapper;
import com.accompany.core.service.base.BaseService;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -29,18 +24,12 @@ import java.util.*;
@Service
public class RoomCleanService extends BaseService {
private static final int ROOM_IDLE_COUNT = 300; // 房间连续没人在线允许的时长min
/**
* 真实在线人数超过一人则不过滤
* 需求变更,只过滤在线人数<1的 modify Time 2019-03-28
*/
private static final int ROOM_RELUSER_PERMIT = 0;
private static final int ROOM_RELUSER_NO_PERMIT = 0;
@Autowired
private RoomMapper roomMapper;
@Autowired
private RoomService roomService;
@Autowired
@@ -48,110 +37,6 @@ public class RoomCleanService extends BaseService {
@Autowired
private RoomQueryService roomQueryService;
/**
* 清除无效的房间
*/
public void cleanInvalidRoom() {
Map<String, String> map = jedisService.hgetAll(RedisKey.room_running.getKey());
if (BlankUtil.isBlank(map)) {
return;
}
Set<String> keySet = map.keySet();
for (String key : keySet) {
try {
Long uid = Long.valueOf(key);
RunningRoomVo runningRoomVo = gson.fromJson(map.get(key), RunningRoomVo.class);
Room room = roomMapper.selectByPrimaryKey(uid);
if (room == null || !room.getValid()) {
closeRunningRoom(uid);
continue;
}
// 从云信上获取当前房间的房主信息
RoomUserListRet roomUserListRet = erBanNetEaseService.getRoomMemberListInfo(room.getRoomId(), uid);
if (roomUserListRet == null || roomUserListRet.getDesc() == null) {
closeRunningRoom(room.getUid());
continue;
}
Map<String, Object> userInfo = roomUserListRet.getDesc().get("data").get(0);
// 获取是否在线的状态
boolean onlineStat = (boolean) userInfo.get("onlineStat");
if (onlineStat) {
jedisService.hdel(RedisKey.room_permit_hide.getKey(), room.getUid().toString());
continue;
}
// 判断是否为牌照房
if (Objects.equals(room.getIsPermitRoom(), Constant.PermitType.NO_PERMIT_ROOM)) {
handleNotPermitRoom(room, runningRoomVo.getCount()); // 非牌照房
} else {
handlePermitRoom(room, runningRoomVo.getCount()); // 牌照房
}
} catch (Exception e) {
logger.error("cleanInvalidRoom error, room uid: " + key, e);
}
}
}
/**
* 关闭运行中的房间
*
* @param uid
* @throws Exception
*/
public void closeRunningRoom(Long uid) throws Exception {
jedisService.hdel(RedisKey.room_running.getKey(), uid.toString());
roomService.closeRoom(uid);
logger.info("close room uid: {}", uid);
}
/**
* 牌照房,判断是否需要在展示上过滤
*
* @param room
*/
public void handlePermitRoom(Room room, int count) {
if (room.getOnlineNum() == null || room.getOnlineNum() == 0) {
// 计数器的值大于59*5表示开房5小时内一直没人在线在线人数每1分钟更新一次
if (count > ROOM_IDLE_COUNT) {
// 在线人数为0时把牌照房加入过滤列表
jedisService.hset(RedisKey.room_permit_hide.getKey(), room.getUid().toString(), "");
}
return;
}
// 判断在线用户是否全部是机器人
if (count > ROOM_IDLE_COUNT && !hasRealUserInRoom(room.getRoomId())) {
// 在线人数为0时把牌照房加入过滤列表
jedisService.hset(RedisKey.room_permit_hide.getKey(), room.getUid().toString(), room.getUid().toString());
return;
}
//
jedisService.hdel(RedisKey.room_permit_hide.getKey(), room.getUid().toString());
}
/**
* 非牌照房,判断是否应该关闭
*
* @param room
* @throws Exception
*/
public void handleNotPermitRoom(Room room, int count) throws Exception {
// 非牌照房都不应该加入过滤的列表
jedisService.hdel(RedisKey.room_permit_hide.getKey(), room.getUid().toString());
if (RoomTypeEnum.NORMAL.getCode().equals(room.getType())) {
if (room.getOnlineNum() != null && room.getOnlineNum() > 0) {
return;
}
}
// 计数器的值大于59*5表示开房5小时内一直没人在线在线人数每1分钟更新一次
if (count > ROOM_IDLE_COUNT) {
// 关闭运行中的房间
closeRunningRoom(room.getUid());
}
}
/**
* 判断是否有真实用户在房间内
* 新增需求,只有一个真实用户也加入过滤列表

View File

@@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.accompany.business.constant.LimitTypeEnum;
import com.accompany.business.constant.RoomHomeHideLocationEnum;
import com.accompany.business.constant.RoomTypeEnum;
import com.accompany.business.constant.SuperOperateEnum;
import com.accompany.business.dto.QueueDTO;
@@ -80,8 +79,8 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.ListUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Lazy;
@@ -229,7 +228,6 @@ public class RoomService extends BaseService {
}
String runningRoomStr = GsonUtil.getDefGson().toJson(runningRoomVo);
jedisService.hwrite(RedisKey.room_running.getKey(), room.getUid().toString(), runningRoomStr);
jedisService.hdel(RedisKey.room_permit_hide.getKey(), room.getUid().toString());
}
@@ -1266,30 +1264,6 @@ public class RoomService extends BaseService {
return busiResult;
}
/**
* 获取需要隐藏的在线房间,如牌照房没人时的房间
*
* @return
*/
public List<Long> getHideRunningRoom() {
try {
Map<String, String> map = jedisService.hgetAll(RedisKey.room_permit_hide.getKey());
if (map != null) {
List<Long> list = new ArrayList<>(map.size());
Set<String> keySet = map.keySet();
for (String key : keySet) {
if (!BlankUtil.isBlank(key) && !BlankUtil.isBlank(map.get(key))) {
list.add(Long.valueOf(map.get(key)));
}
}
return list;
}
} catch (Exception e) {
log.error("getHideRunningRoom error", e);
}
return Collections.EMPTY_LIST;
}
/**
* 填充标签的信息如ID,图片
*
@@ -1604,61 +1578,6 @@ public class RoomService extends BaseService {
return convertRoomListToVoList(rooms);
}
/**
* 获取隐藏的房间
*
* @return
*/
public List<Long> getHideHomeRoom(byte hideLocation) {
Map<String, String> maps = jedisService.hgetAll(RedisKey.room_home_hide.getKey(hideLocation + ""));
return maps.keySet().stream().map(key -> Long.parseLong(key)).collect(Collectors.toList());
}
public List<Long> getHideHomeRoom(byte hideLocation, String app) {
Map<String, String> maps = jedisService.hgetAll(RedisKey.room_home_hide.getKey(hideLocation + "", app));
return maps.keySet().stream().map(key -> Long.parseLong(key)).collect(Collectors.toList());
}
/**
* 保存指定房间到隐藏列表
*/
public void saveHideHomeRoom(Long uid, byte hideLocation, String app) throws Exception {
if (StringUtils.isNotBlank(app)) {
jedisService.hset(RedisKey.room_home_hide.getKey(hideLocation + "", app), uid.toString(), uid.toString());
} else {
jedisService.hset(RedisKey.room_home_hide.getKey(hideLocation + ""), uid.toString(), uid.toString());
}
if (Objects.equals(hideLocation, RoomHomeHideLocationEnum.global_ranking.getValue())) {
this.jedisService.hset(RedisKey.exclude_users.getKey(), uid.toString(), String.valueOf(System.currentTimeMillis()));
// 产品许凯琪说只有全局隐藏+排行榜隐藏才算隐藏房间
Room room = getRoomByUid(uid);
room.setHideFlag((byte) 1);
// 更新DB和云信的聊天室消息
updateRunningRoom(room);
}
}
/**
* 删除隐藏房间
*/
public void removeHideHomeRoom(Long uid, byte hideLocation, String app) throws Exception {
if (StringUtils.isNotBlank(app)) {
jedisService.hdel(RedisKey.room_home_hide.getKey(hideLocation + "", app), uid.toString());
} else {
jedisService.hdel(RedisKey.room_home_hide.getKey(hideLocation + ""), uid.toString());
}
if (Objects.equals(hideLocation, RoomHomeHideLocationEnum.global_ranking.getValue())) {
this.jedisService.hdel(RedisKey.exclude_users.getKey(), uid.toString());
// 产品许凯琪说只有全局隐藏+排行榜隐藏才算隐藏房间
Room room = getRoomByUid(uid);
room.setHideFlag((byte) 0);
// 更新DB和云信的聊天室消息
updateRunningRoom(room);
}
}
/**
* 获取不可修改信息的房间
*
@@ -1683,54 +1602,6 @@ public class RoomService extends BaseService {
jedisService.hdel(RedisKey.room_unchange.getKey(), uid.toString());
}
/**
* 根据位置获取所有需要隐藏的房间ID
*
* @param hideLocation
* @return
*/
public List<Long> getAllHideRoomUids(byte hideLocation) {
List<Long> permitHideUids = getHideRunningRoom();
List<Long> hideUids = getHideUidsByAdminConfig(RoomHomeHideLocationEnum.global.getValue());
hideUids = ListUtils.union(hideUids, getHideUidsByAdminConfig(RoomHomeHideLocationEnum.global_ranking.getValue()));
if (hideLocation != RoomHomeHideLocationEnum.global.getValue() && hideLocation != RoomHomeHideLocationEnum.global_ranking.getValue()) {
List<Long> hideUidsByLocation = getHideUidsByAdminConfig(hideLocation);
hideUids = ListUtils.union(hideUids, hideUidsByLocation);
}
return ListUtils.union(permitHideUids, hideUids);
}
/**
* 根据位置获取管理后台配置的隐藏房间ID
*
* @param hideLocation
* @return
*/
public List<Long> getHideUidsByAdminConfig(byte hideLocation) {
Map<String, String> map = jedisService.hgetAll(RedisKey.room_home_hide.getKey(hideLocation + ""));
if (CollectionUtils.isEmpty(map)) {
return Collections.EMPTY_LIST;
}
return map.keySet().stream().map(key -> Long.parseLong(key)).collect(Collectors.toList());
}
/**
* 根据位置和app获取管理后台配置的隐藏房间ID
*
* @param hideLocation
* @return
*/
public List<Long> getHideUidsByAdminConfig(byte hideLocation, String app) {
Map<String, String> map = jedisService.hgetAll(RedisKey.room_home_hide.getKey(hideLocation + "", app));
if (CollectionUtils.isEmpty(map)) {
return Collections.EMPTY_LIST;
}
return map.keySet().stream().map(key -> Long.parseLong(key)).collect(Collectors.toList());
}
/**
* 更新房间信息到云信
*
@@ -1909,6 +1780,7 @@ public class RoomService extends BaseService {
/**
* 刷新房间在线人数
*/
@SneakyThrows
public void scanRoomOnline(List<RoomVo> roomVoList) {
Map<Long, RoomVo> roomVoMap = roomVoList.stream().collect(Collectors.toMap(RoomVo::getRoomId, roomVo -> roomVo));
@@ -1938,15 +1810,23 @@ public class RoomService extends BaseService {
// 开房状态时每扫描一次若在线人数为0计数器加1
runningRoomVo.setCount(roomVo.getCount() + 1);
}
updateRoomOnlineNumMysql(roomVo.getUid(), personNum);
// 更新房间缓存
saveRoomCacheByUid(roomVo.getUid());
//5分钟一次15分钟
if (runningRoomVo.getCount() >= 3){
closeRoom(roomVo.getUid());
return;
}
runningRoomVo.setRoomId(roomVo.getRoomId());
runningRoomVo.setUid(roomVo.getUid());
runningRoomVo.setOnlineNum(personNum);
String runningRoomStr = GsonUtil.getDefGson().toJson(runningRoomVo);
jedisService.hwrite(RedisKey.room_running.getKey(), roomVo.getUid().toString(), runningRoomStr);
updateRoomOnlineNumMysql(roomVo.getUid(), personNum);
// 更新房间缓存
saveRoomCacheByUid(roomVo.getUid());
}
}

View File

@@ -22,21 +22,6 @@ public class SuperAdminWebController {
@Autowired
private SuperManagerOperateRecordService superManagerOperateRecordService;
/**
* 隐藏/显示 房间
* @param roomUid 房主uid
* @param type 类型0.关闭隐藏 1.开启隐藏
* @return
*/
@Authorization
@RequestMapping(value = "/hide/room", method = RequestMethod.POST)
public BusiResult hideRoom(@RequestParam Long roomUid,
@RequestParam Byte type,
@RequestHeader("pub_uid") Long pubUid)throws Exception {
this.service.hideRoom(roomUid,type,pubUid);
return new BusiResult(BusiStatus.SUCCESS);
}
/**
* 设置云信聊天室角色
* @param roomUid 房主uid

View File

@@ -52,17 +52,6 @@ public class RoomV2Controller extends BaseController {
return new BusiResult<>(roomVo);
}
/**
* 清除僵尸房间
*
* @return
*/
@RequestMapping(value = "/clean")
public BusiResult<Void> cleanInvalidRoom() {
roomCleanService.cleanInvalidRoom();
return BusiResult.success();
}
/**
* 房间在线成员列表
*

View File

@@ -19,18 +19,6 @@ public class RoomTask extends BaseTask {
@Autowired
private PermitRoomTaskService permitRoomTaskService;
/**
* 清除僵尸房,分为两种情况:
* 1、普通房间没人在线时直接关闭
* 2、牌照房间没人在线或者只有机器人在房间时不在页面上显示
*/
@Scheduled(cron = "0 */10 * ? * *")
public void clearInvalidRoom() {
logger.info("clearInvalidRoom start==============");
roomCleanService.cleanInvalidRoom();
logger.info("clearInvalidRoom finish=============");
}
/**
* 同步房间状态
*/