房间-云信-将cleanRoomTask的关房判断移交到refreshRoomTask
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
@@ -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
|
||||
|
@@ -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 {
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
}
|
@@ -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();
|
||||
|
@@ -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
|
||||
|
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否有真实用户在房间内
|
||||
* 新增需求,只有一个真实用户也加入过滤列表
|
||||
|
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
* 房间在线成员列表
|
||||
*
|
||||
|
@@ -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=============");
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步房间状态
|
||||
*/
|
||||
|
Reference in New Issue
Block a user