|
@@ -32,7 +32,6 @@ import com.ym.mec.util.http.HttpUtil;
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.redisson.api.RBucket;
|
|
import org.redisson.api.RBucket;
|
|
-import org.redisson.api.RList;
|
|
|
|
import org.redisson.api.RMap;
|
|
import org.redisson.api.RMap;
|
|
import org.redisson.api.RedissonClient;
|
|
import org.redisson.api.RedissonClient;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
@@ -43,6 +42,7 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.io.Serializable;
|
|
import java.io.Serializable;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 直播房间管理表(ImLiveBroadcastRoom)表服务实现类
|
|
* 直播房间管理表(ImLiveBroadcastRoom)表服务实现类
|
|
@@ -73,8 +73,6 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
public static final String USER_ID = "${userId}";
|
|
public static final String USER_ID = "${userId}";
|
|
public static final String ROOM_UID = "${roomUid}";
|
|
public static final String ROOM_UID = "${roomUid}";
|
|
|
|
|
|
- //直播间用户列表
|
|
|
|
- public static final String LIVE_ROOM_USER_LIST = "IM:LIVE_ROOM_USER_LIST:" + ROOM_UID;
|
|
|
|
//直播间累计用户信息-指只要进入到该房间的用户都要记录
|
|
//直播间累计用户信息-指只要进入到该房间的用户都要记录
|
|
public static final String LIVE_ROOM_TOTAL_USER_LIST = "IM:LIVE_ROOM_TOTAL_USER_LIST:" + ROOM_UID;
|
|
public static final String LIVE_ROOM_TOTAL_USER_LIST = "IM:LIVE_ROOM_TOTAL_USER_LIST:" + ROOM_UID;
|
|
//主讲人信息
|
|
//主讲人信息
|
|
@@ -228,7 +226,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
throw new BizException(e.getMessage());
|
|
throw new BizException(e.getMessage());
|
|
}
|
|
}
|
|
//获取所有直播间缓存数据并写入数据库
|
|
//获取所有直播间缓存数据并写入数据库
|
|
- insertLiveAllData(room.getRoomUid(), room.getSpeakerId());
|
|
|
|
|
|
+ insertLiveAllData(room.getRoomUid());
|
|
//todo 删除直播间缓存数据
|
|
//todo 删除直播间缓存数据
|
|
|
|
|
|
//将房间状态改为已销毁
|
|
//将房间状态改为已销毁
|
|
@@ -249,11 +247,11 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
}
|
|
}
|
|
|
|
|
|
//获取该直播间所有数据
|
|
//获取该直播间所有数据
|
|
- private void insertLiveAllData(String roomUid, Integer userId) {
|
|
|
|
|
|
+ private void insertLiveAllData(String roomUid) {
|
|
//获取直播间所有人数据写入 im_live_broadcast_room_member
|
|
//获取直播间所有人数据写入 im_live_broadcast_room_member
|
|
- RMap<Integer, RoomUserInfoVo> roomTotalUser = redissonClient.getMap(LIVE_ROOM_TOTAL_USER_LIST.replace(ROOM_UID, roomUid));
|
|
|
|
|
|
+ List<RoomUserInfoVo> roomTotalUser = queryTotalRoomUserInfo(roomUid);
|
|
List<ImLiveBroadcastRoomMember> memberList = new ArrayList<>();
|
|
List<ImLiveBroadcastRoomMember> memberList = new ArrayList<>();
|
|
- roomTotalUser.forEach((k, v) -> {
|
|
|
|
|
|
+ roomTotalUser.forEach(v -> {
|
|
ImLiveBroadcastRoomMember member = new ImLiveBroadcastRoomMember();
|
|
ImLiveBroadcastRoomMember member = new ImLiveBroadcastRoomMember();
|
|
member.setTenantId(v.getTenantId());
|
|
member.setTenantId(v.getTenantId());
|
|
member.setRoomUid(roomUid);
|
|
member.setRoomUid(roomUid);
|
|
@@ -314,12 +312,11 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
RBucket<RoomSpeakerInfo> speakerCache = redissonClient.getBucket(LIVE_SPEAKER_INFO.replace(USER_ID, user.getUserid()));
|
|
RBucket<RoomSpeakerInfo> speakerCache = redissonClient.getBucket(LIVE_SPEAKER_INFO.replace(USER_ID, user.getUserid()));
|
|
if (speakerCache.isExists()) {
|
|
if (speakerCache.isExists()) {
|
|
RoomSpeakerInfo speakerInfo = speakerCache.get();
|
|
RoomSpeakerInfo speakerInfo = speakerCache.get();
|
|
- speakerInfo.setState(2);//主讲人退出房间后房间为暂停直播状态(超过半小时还未开播则自动清算)
|
|
|
|
- speakerInfo.setExitRoomTime(now);
|
|
|
|
- speakerCache.set(speakerInfo);
|
|
|
|
//主讲人退出房间关闭录像
|
|
//主讲人退出房间关闭录像
|
|
- closeLive(speakerInfo.getRoomUid(), userId);
|
|
|
|
|
|
+ closeLive(speakerInfo);
|
|
|
|
+ speakerInfo.setExitRoomTime(now);
|
|
log.info("quitRoom>>>> speakerCache {}", JSONObject.toJSONString(speakerInfo));
|
|
log.info("quitRoom>>>> speakerCache {}", JSONObject.toJSONString(speakerInfo));
|
|
|
|
+ speakerCache.set(speakerInfo);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -333,32 +330,26 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
//从房间累计用户信息中查询该用户的信息
|
|
//从房间累计用户信息中查询该用户的信息
|
|
RMap<Integer, RoomUserInfoVo> roomTotalUser = redissonClient.getMap(LIVE_ROOM_TOTAL_USER_LIST.replace(ROOM_UID, roomUid));
|
|
RMap<Integer, RoomUserInfoVo> roomTotalUser = redissonClient.getMap(LIVE_ROOM_TOTAL_USER_LIST.replace(ROOM_UID, roomUid));
|
|
|
|
|
|
- RoomUserInfoVo userInfo;
|
|
|
|
//该房间未查询到用户数据则不处理
|
|
//该房间未查询到用户数据则不处理
|
|
if (!roomTotalUser.containsKey(userId)) {
|
|
if (!roomTotalUser.containsKey(userId)) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
//查询到用户数据
|
|
//查询到用户数据
|
|
- userInfo = roomTotalUser.get(userId);
|
|
|
|
- //查询该房间当前直播间用户列表
|
|
|
|
- RList<Object> roomUserCache = redissonClient.getList(LIVE_ROOM_USER_LIST.replace(ROOM_UID, roomUid));
|
|
|
|
- if (roomUserCache.contains(userInfo)) {
|
|
|
|
- //只有在房间的时候并且是杀进程那么融云会发送用户离线消息-此刻就发送退出房间消息给主讲人
|
|
|
|
- if (user.getStatus().equals("1")) {
|
|
|
|
- ImRoomMessage message = new ImRoomMessage();
|
|
|
|
- message.setFromUserId(userId.toString());
|
|
|
|
- message.setToChatroomId(roomUid);
|
|
|
|
- message.setObjectName(ImRoomMessage.LOOKER_LOGIN_OUT);
|
|
|
|
- imFeignService.publishRoomMsg(message);
|
|
|
|
- }
|
|
|
|
- //从该房间当前直播间用户列表中移除
|
|
|
|
- roomUserCache.remove(userInfo);
|
|
|
|
|
|
+ RoomUserInfoVo userInfo = roomTotalUser.get(userId);
|
|
|
|
+ //用户是在房间的状态 并且 突然离线 - 那么融云会发送用户离线消息-此刻就发送退出房间消息给主讲人
|
|
|
|
+ if (userInfo.getState() == 0 && user.getStatus().equals("1")) {
|
|
|
|
+ ImRoomMessage message = new ImRoomMessage();
|
|
|
|
+ message.setFromUserId(userId.toString());
|
|
|
|
+ message.setToChatroomId(roomUid);
|
|
|
|
+ message.setObjectName(ImRoomMessage.LOOKER_LOGIN_OUT);
|
|
|
|
+ imFeignService.publishRoomMsg(message);
|
|
}
|
|
}
|
|
//每次退出房间计算当前用户观看时长
|
|
//每次退出房间计算当前用户观看时长
|
|
int minutesBetween = getMinutesBetween(userInfo.getDynamicJoinTime(), now);
|
|
int minutesBetween = getMinutesBetween(userInfo.getDynamicJoinTime(), now);
|
|
userInfo.setTotalViewTime(userInfo.getTotalViewTime() + minutesBetween);
|
|
userInfo.setTotalViewTime(userInfo.getTotalViewTime() + minutesBetween);
|
|
//记录退出时间 并写入缓存
|
|
//记录退出时间 并写入缓存
|
|
userInfo.setLastOutTime(now);
|
|
userInfo.setLastOutTime(now);
|
|
|
|
+ userInfo.setState(1);
|
|
roomTotalUser.put(userId, userInfo);
|
|
roomTotalUser.put(userId, userInfo);
|
|
});
|
|
});
|
|
|
|
|
|
@@ -403,25 +394,21 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
redissonClient.getBucket(LIVE_USER_ROOM.replace(USER_ID, userId.toString())).set(roomUid);
|
|
redissonClient.getBucket(LIVE_USER_ROOM.replace(USER_ID, userId.toString())).set(roomUid);
|
|
//房间累计用户信息-指只要进入到该房间的用户都要记录
|
|
//房间累计用户信息-指只要进入到该房间的用户都要记录
|
|
RMap<Integer, RoomUserInfoVo> roomTotalUser = redissonClient.getMap(LIVE_ROOM_TOTAL_USER_LIST.replace(ROOM_UID, roomUid));
|
|
RMap<Integer, RoomUserInfoVo> roomTotalUser = redissonClient.getMap(LIVE_ROOM_TOTAL_USER_LIST.replace(ROOM_UID, roomUid));
|
|
- //查询直播间当前用户数据缓存
|
|
|
|
- RList<RoomUserInfoVo> roomUserCacheList = redissonClient.getList(LIVE_ROOM_USER_LIST.replace(ROOM_UID, roomUid));
|
|
|
|
//判断是否第一次进房间
|
|
//判断是否第一次进房间
|
|
RoomUserInfoVo userInfo;
|
|
RoomUserInfoVo userInfo;
|
|
Date now = new Date();
|
|
Date now = new Date();
|
|
if (roomTotalUser.containsKey(userId)) {
|
|
if (roomTotalUser.containsKey(userId)) {
|
|
//多次进入更新动态进入时间
|
|
//多次进入更新动态进入时间
|
|
userInfo = roomTotalUser.get(userId);
|
|
userInfo = roomTotalUser.get(userId);
|
|
- roomUserCacheList.remove(userInfo);
|
|
|
|
} else {
|
|
} else {
|
|
//第一次进该房间 写入用户首次进入时间
|
|
//第一次进该房间 写入用户首次进入时间
|
|
userInfo = getUserInfo(userId);
|
|
userInfo = getUserInfo(userId);
|
|
userInfo.setFirstJoinTime(now);
|
|
userInfo.setFirstJoinTime(now);
|
|
userInfo.setTotalViewTime(0);
|
|
userInfo.setTotalViewTime(0);
|
|
}
|
|
}
|
|
|
|
+ userInfo.setState(0);//0 进入/在房间
|
|
userInfo.setDynamicJoinTime(now);
|
|
userInfo.setDynamicJoinTime(now);
|
|
roomTotalUser.put(userId, userInfo);
|
|
roomTotalUser.put(userId, userInfo);
|
|
- //将数据添加到当前直播间
|
|
|
|
- roomUserCacheList.add(userInfo);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -449,14 +436,20 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
* @param roomUid 房间uid
|
|
* @param roomUid 房间uid
|
|
*/
|
|
*/
|
|
public void closeLive(String roomUid, Integer userId) {
|
|
public void closeLive(String roomUid, Integer userId) {
|
|
- //关闭直播
|
|
|
|
|
|
+ //查询房间主播信息
|
|
RBucket<RoomSpeakerInfo> speakerCache = redissonClient.getBucket(LIVE_SPEAKER_INFO.replace(USER_ID, userId.toString()));
|
|
RBucket<RoomSpeakerInfo> speakerCache = redissonClient.getBucket(LIVE_SPEAKER_INFO.replace(USER_ID, userId.toString()));
|
|
RoomSpeakerInfo roomSpeakerInfo = speakerCache.get();
|
|
RoomSpeakerInfo roomSpeakerInfo = speakerCache.get();
|
|
|
|
+ //关闭直播
|
|
|
|
+ closeLive(roomSpeakerInfo);
|
|
|
|
+ speakerCache.set(roomSpeakerInfo);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void closeLive(RoomSpeakerInfo roomSpeakerInfo) {
|
|
boolean stateFlag = Objects.nonNull(roomSpeakerInfo.getState()) && roomSpeakerInfo.getState() == 0;
|
|
boolean stateFlag = Objects.nonNull(roomSpeakerInfo.getState()) && roomSpeakerInfo.getState() == 0;
|
|
if (Objects.nonNull(roomSpeakerInfo.getWhetherVideo()) && roomSpeakerInfo.getWhetherVideo() == 0
|
|
if (Objects.nonNull(roomSpeakerInfo.getWhetherVideo()) && roomSpeakerInfo.getWhetherVideo() == 0
|
|
&& stateFlag) {
|
|
&& stateFlag) {
|
|
//停止录制视频
|
|
//停止录制视频
|
|
- imFeignService.stopRecord(roomUid);
|
|
|
|
|
|
+ imFeignService.stopRecord(roomSpeakerInfo.getRoomUid());
|
|
}
|
|
}
|
|
if (stateFlag) {
|
|
if (stateFlag) {
|
|
roomSpeakerInfo.setState(1);
|
|
roomSpeakerInfo.setState(1);
|
|
@@ -464,7 +457,6 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
int minutesBetween = getMinutesBetween(roomSpeakerInfo.getStartLiveTime(), new Date());
|
|
int minutesBetween = getMinutesBetween(roomSpeakerInfo.getStartLiveTime(), new Date());
|
|
int i = Objects.isNull(roomSpeakerInfo.getTotalLiveTime()) ? 0 : roomSpeakerInfo.getTotalLiveTime();
|
|
int i = Objects.isNull(roomSpeakerInfo.getTotalLiveTime()) ? 0 : roomSpeakerInfo.getTotalLiveTime();
|
|
roomSpeakerInfo.setTotalLiveTime(i + minutesBetween);
|
|
roomSpeakerInfo.setTotalLiveTime(i + minutesBetween);
|
|
- speakerCache.set(roomSpeakerInfo);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -538,19 +530,23 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
}
|
|
}
|
|
|
|
|
|
private void getRoomData(ImLiveBroadcastRoomVo roomVo) {
|
|
private void getRoomData(ImLiveBroadcastRoomVo roomVo) {
|
|
- //生成0点赞
|
|
|
|
|
|
+ //点赞数
|
|
Object like = redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, roomVo.getRoomUid())).get();
|
|
Object like = redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, roomVo.getRoomUid())).get();
|
|
if (Objects.isNull(like)) {
|
|
if (Objects.isNull(like)) {
|
|
like = 0;
|
|
like = 0;
|
|
}
|
|
}
|
|
roomVo.setLikeNum((int) like);
|
|
roomVo.setLikeNum((int) like);
|
|
- //0用户数量
|
|
|
|
- RList<Object> list = redissonClient.getList(LIVE_ROOM_USER_LIST.replace(ROOM_UID, roomVo.getRoomUid()));
|
|
|
|
- int size = list.size();
|
|
|
|
- roomVo.setLookNum(size);
|
|
|
|
- //0累计总用户数量
|
|
|
|
- int totalLook = redissonClient.getMap(LIVE_ROOM_TOTAL_USER_LIST.replace(ROOM_UID, roomVo.getRoomUid())).size();
|
|
|
|
- roomVo.setTotalLookNum(totalLook);
|
|
|
|
|
|
+ //累计总用户数量
|
|
|
|
+ List<RoomUserInfoVo> roomUserInfoVos = queryTotalRoomUserInfo(roomVo.getRoomUid());
|
|
|
|
+ if (CollectionUtils.isNotEmpty(roomUserInfoVos)) {
|
|
|
|
+ roomVo.setTotalLookNum(roomUserInfoVos.size());
|
|
|
|
+ //在房间观看用户数量
|
|
|
|
+ roomVo.setLookNum(queryRoomUserInfo(roomUserInfoVos).size());
|
|
|
|
+ } else {
|
|
|
|
+ roomVo.setTotalLookNum(0);
|
|
|
|
+ roomVo.setLookNum(0);
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
private SysUser getSysUser(Integer userId) {
|
|
private SysUser getSysUser(Integer userId) {
|
|
@@ -569,22 +565,35 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
* 测试
|
|
* 测试
|
|
*/
|
|
*/
|
|
public Map<String, Object> test(String roomUid, Integer userId) {
|
|
public Map<String, Object> test(String roomUid, Integer userId) {
|
|
|
|
+ //test
|
|
Map<String, Object> result = new HashMap<>();
|
|
Map<String, Object> result = new HashMap<>();
|
|
- //点赞
|
|
|
|
|
|
+ //点赞数
|
|
Object like = redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, roomUid)).get();
|
|
Object like = redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, roomUid)).get();
|
|
if (Objects.isNull(like)) {
|
|
if (Objects.isNull(like)) {
|
|
like = 0;
|
|
like = 0;
|
|
}
|
|
}
|
|
- //0用户数量
|
|
|
|
- RList<RoomUserInfoVo> userList = redissonClient.getList(LIVE_ROOM_USER_LIST.replace(ROOM_UID, roomUid));
|
|
|
|
- int size = userList.size();
|
|
|
|
- //0累计总用户数量
|
|
|
|
- RMap<Integer, RoomUserInfoVo> totalUserCache = redissonClient.getMap(LIVE_ROOM_TOTAL_USER_LIST.replace(ROOM_UID, roomUid));
|
|
|
|
- int totalLook = totalUserCache.size();
|
|
|
|
- Map<String, Object> roomDataCacheMap = new HashMap<>();
|
|
|
|
- roomDataCacheMap.put("点赞数", like);
|
|
|
|
- roomDataCacheMap.put("实时观看数", size);
|
|
|
|
- roomDataCacheMap.put("总观看人数", totalLook);
|
|
|
|
|
|
+ result.put("点赞数", like);
|
|
|
|
+
|
|
|
|
+ int totalLook = 0;
|
|
|
|
+ int look = 0;
|
|
|
|
+ List<RoomUserInfoVo> inRoomUserInfo;
|
|
|
|
+
|
|
|
|
+ //累计总观看的用户数量
|
|
|
|
+ List<RoomUserInfoVo> totalUserInfo = queryTotalRoomUserInfo(roomUid);
|
|
|
|
+ if (CollectionUtils.isNotEmpty(totalUserInfo)) {
|
|
|
|
+ //正在房间观看的用户数据
|
|
|
|
+ inRoomUserInfo = queryRoomUserInfo(totalUserInfo);
|
|
|
|
+ if (CollectionUtils.isNotEmpty(inRoomUserInfo)) {
|
|
|
|
+ look = inRoomUserInfo.size();
|
|
|
|
+ result.put("正在观看的人员信息", inRoomUserInfo);
|
|
|
|
+ } else {
|
|
|
|
+ result.put("正在观看的人员信息", "没有正在观看的人员数据");
|
|
|
|
+ }
|
|
|
|
+ totalLook = totalUserInfo.size();
|
|
|
|
+ result.put("总人员数据", totalUserInfo);
|
|
|
|
+ } else {
|
|
|
|
+ result.put("总人员数据", "没有人员数据");
|
|
|
|
+ }
|
|
|
|
|
|
//获取主讲人信息
|
|
//获取主讲人信息
|
|
RBucket<RoomSpeakerInfo> speakerCache = redissonClient.getBucket(LIVE_SPEAKER_INFO.replace(USER_ID, userId.toString()));
|
|
RBucket<RoomSpeakerInfo> speakerCache = redissonClient.getBucket(LIVE_SPEAKER_INFO.replace(USER_ID, userId.toString()));
|
|
@@ -593,21 +602,8 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
} else {
|
|
} else {
|
|
result.put("主讲人信息", "主讲人信息不存在");
|
|
result.put("主讲人信息", "主讲人信息不存在");
|
|
}
|
|
}
|
|
- //获取实时观看人信息
|
|
|
|
- if (userList.isExists()) {
|
|
|
|
- result.put("正在观看的人员信息", userList.get());
|
|
|
|
- } else {
|
|
|
|
- result.put("正在观看的人员信息", "没有正在观看的人员数据");
|
|
|
|
- }
|
|
|
|
- //获取总用户信息
|
|
|
|
- if (totalUserCache.isExists()) {
|
|
|
|
- result.put("总人员数据", totalUserCache.values());
|
|
|
|
- } else {
|
|
|
|
- result.put("总人员数据", "没有人员数据");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- result.put("roomDataCacheMap", roomDataCacheMap);
|
|
|
|
-
|
|
|
|
|
|
+ result.put("总观看人数", totalLook);
|
|
|
|
+ result.put("实时观看数", look);
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -631,8 +627,24 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
*
|
|
*
|
|
* @param roomUid 直播间uid
|
|
* @param roomUid 直播间uid
|
|
*/
|
|
*/
|
|
|
|
+ @Override
|
|
public List<RoomUserInfoVo> queryRoomUserInfo(String roomUid) {
|
|
public List<RoomUserInfoVo> queryRoomUserInfo(String roomUid) {
|
|
- return redissonClient.getList(LIVE_ROOM_USER_LIST.replace(ROOM_UID, roomUid));
|
|
|
|
|
|
+ return queryTotalRoomUserInfo(roomUid).stream()
|
|
|
|
+ .filter(o -> o.getState() == 0)
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public List<RoomUserInfoVo> queryRoomUserInfo(List<RoomUserInfoVo> totalUserInfo) {
|
|
|
|
+ return totalUserInfo.stream()
|
|
|
|
+ .filter(o -> o.getState() == 0)
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public List<RoomUserInfoVo> queryTotalRoomUserInfo(String roomUid) {
|
|
|
|
+ RMap<Integer, RoomUserInfoVo> roomTotalUser = redissonClient.getMap(LIVE_ROOM_TOTAL_USER_LIST.replace(ROOM_UID, roomUid));
|
|
|
|
+ return roomTotalUser.values().stream()
|
|
|
|
+ .filter(Objects::nonNull)
|
|
|
|
+ .collect(Collectors.toList());
|
|
}
|
|
}
|
|
|
|
|
|
private RoomUserInfoVo getUserInfo(Integer userId) {
|
|
private RoomUserInfoVo getUserInfo(Integer userId) {
|
|
@@ -641,10 +653,13 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
SysUser sysUser = sysUserFeignService.queryUserById(userId);
|
|
SysUser sysUser = sysUserFeignService.queryUserById(userId);
|
|
String name = userId.toString();
|
|
String name = userId.toString();
|
|
if (Objects.nonNull(sysUser)) {
|
|
if (Objects.nonNull(sysUser)) {
|
|
- if (StringUtils.isNotBlank(sysUser.getRealName())) {
|
|
|
|
- name = sysUser.getRealName();
|
|
|
|
|
|
+ name = sysUser.getPhone();
|
|
|
|
+ if (sysUser.getUserType().contains("STUDENT")) {
|
|
|
|
+ name = sysUser.getUsername();
|
|
} else {
|
|
} else {
|
|
- name = sysUser.getPhone();
|
|
|
|
|
|
+ if (StringUtils.isNotBlank(sysUser.getRealName())) {
|
|
|
|
+ name = sysUser.getRealName();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
userInfo.setUserName(name);
|
|
userInfo.setUserName(name);
|
|
@@ -671,7 +686,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
private Integer speakerId;
|
|
private Integer speakerId;
|
|
//主讲人名称
|
|
//主讲人名称
|
|
private String speakerName;
|
|
private String speakerName;
|
|
- //直播状态 0 直播中 1关闭直播 2暂停直播(直接断开退出直播间后超过半小时还未开播则自动清算)
|
|
|
|
|
|
+ //直播状态 0 直播中 1关闭直播
|
|
private Integer state;
|
|
private Integer state;
|
|
//房间uid
|
|
//房间uid
|
|
private String roomUid;
|
|
private String roomUid;
|