|
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fasterxml.jackson.annotation.JsonFormat;
|
|
|
import com.ym.mec.auth.api.client.SysUserFeignService;
|
|
|
import com.ym.mec.auth.api.entity.SysUser;
|
|
|
import com.ym.mec.biz.dal.dao.ImLiveBroadcastRoomDao;
|
|
@@ -140,6 +141,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
|
public PageInfo<ImLiveBroadcastRoomVo> queryPage(Map<String, Object> param) {
|
|
|
Page<ImLiveBroadcastRoomVo> pageInfo = PageUtil.getPageInfo(param);
|
|
|
pageInfo.setDesc("a.created_time_");
|
|
|
+ param.put("tenantId",TenantContextHolder.getTenantId());
|
|
|
IPage<ImLiveBroadcastRoomVo> page = baseMapper.queryPage(pageInfo, param);
|
|
|
return PageUtil.pageInfo(page);
|
|
|
}
|
|
@@ -298,6 +300,9 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
|
*/
|
|
|
@Override
|
|
|
public void quitRoom(List<ImUserState> userState) {
|
|
|
+ if (CollectionUtils.isEmpty(userState)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
userState.forEach(user -> {
|
|
|
log.info("quitRoom>>>> {}", JSONObject.toJSONString(user));
|
|
|
if (StringUtils.isBlank(user.getStatus()) || user.getStatus().equals("0")) {
|
|
@@ -447,12 +452,13 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
|
//关闭直播
|
|
|
RBucket<RoomSpeakerInfo> speakerCache = redissonClient.getBucket(LIVE_SPEAKER_INFO.replace(USER_ID, userId.toString()));
|
|
|
RoomSpeakerInfo roomSpeakerInfo = speakerCache.get();
|
|
|
-
|
|
|
- if (Objects.nonNull(roomSpeakerInfo.getWhetherVideo()) && roomSpeakerInfo.getWhetherVideo() == 0) {
|
|
|
+ boolean stateFlag = Objects.nonNull(roomSpeakerInfo.getState()) && roomSpeakerInfo.getState() == 0;
|
|
|
+ if (Objects.nonNull(roomSpeakerInfo.getWhetherVideo()) && roomSpeakerInfo.getWhetherVideo() == 0
|
|
|
+ && stateFlag) {
|
|
|
//停止录制视频
|
|
|
imFeignService.stopRecord(roomUid);
|
|
|
}
|
|
|
- if (Objects.nonNull(roomSpeakerInfo.getState()) && roomSpeakerInfo.getState() == 0) {
|
|
|
+ if (stateFlag) {
|
|
|
roomSpeakerInfo.setState(1);
|
|
|
//计算时长
|
|
|
int minutesBetween = getMinutesBetween(roomSpeakerInfo.getStartLiveTime(), new Date());
|
|
@@ -562,8 +568,42 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
|
/**
|
|
|
* 测试
|
|
|
*/
|
|
|
- public void test() {
|
|
|
+ public String test(String roomUid, Integer userId) {
|
|
|
+ String result = "roomUid: " + roomUid + " userId : " + userId + " ";
|
|
|
+ //点赞
|
|
|
+ Object like = redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, roomUid)).get();
|
|
|
+ if (Objects.isNull(like)) {
|
|
|
+ like = 0;
|
|
|
+ }
|
|
|
+ //0用户数量
|
|
|
+ RList<Object> list = redissonClient.getList(LIVE_ROOM_USER_LIST.replace(ROOM_UID, roomUid));
|
|
|
+ int size = list.size();
|
|
|
+ //0累计总用户数量
|
|
|
+ int totalLook = redissonClient.getMap(LIVE_ROOM_TOTAL_USER_LIST.replace(ROOM_UID, roomUid)).size();
|
|
|
+ result = result + " 点赞数量:" + like + " 用户数量:" + size + " 累计总用户数量:" + totalLook + ">>>>>>>>>>>>";
|
|
|
|
|
|
+ //获取用户信息
|
|
|
+ RBucket<RoomSpeakerInfo> speakerCache = redissonClient.getBucket(LIVE_SPEAKER_INFO.replace(USER_ID, userId.toString()));
|
|
|
+ if (speakerCache.isExists()) {
|
|
|
+ RoomSpeakerInfo roomSpeakerInfo = speakerCache.get();
|
|
|
+ result = result + " 主讲人信息:" + "createRoomTime :" + DateUtil.dateToString(roomSpeakerInfo.getCreateRoomTime(), DateUtil.EXPANDED_DATE_TIME_FORMAT) +
|
|
|
+ "joinRoomTime :" + DateUtil.dateToString(roomSpeakerInfo.getJoinRoomTime(), DateUtil.EXPANDED_DATE_TIME_FORMAT) +
|
|
|
+ ",roomUid:" + roomSpeakerInfo.getRoomUid() + ",speakerId:" + roomSpeakerInfo.getSpeakerId() + ",speakerName:" + roomSpeakerInfo.getSpeakerName() +
|
|
|
+ ",tenantId:" + roomSpeakerInfo.getTenantId() + " ,totalLiveTime:" + roomSpeakerInfo.getTotalLiveTime() + ", whetherVideo:" + roomSpeakerInfo.getWhetherVideo()
|
|
|
+ + ">>>>>>>>>>>>";
|
|
|
+ } else {
|
|
|
+ result = result + " 主讲人信息:" + "主讲人信息不存在" + ">>>>>>>>>>>>";
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取总用户信息
|
|
|
+ RMap<Integer, RoomUserInfoVo> roomTotalUser = redissonClient.getMap(LIVE_ROOM_TOTAL_USER_LIST.replace(ROOM_UID, roomUid));
|
|
|
+ if (roomTotalUser.isExists()) {
|
|
|
+ List<RoomUserInfoVo> collect = new ArrayList<>(roomTotalUser.values());
|
|
|
+ result = result + " 总人员信息:" + JSONObject.toJSONString(collect);
|
|
|
+ } else {
|
|
|
+ result = result + " 总人员信息:" + "总人员信息不存在" + ">>>>>>>>>>>>";
|
|
|
+ }
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -633,10 +673,13 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
|
//房间创建时间
|
|
|
private Date createRoomTime;
|
|
|
//进入房间时间
|
|
|
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
|
|
private Date joinRoomTime;
|
|
|
//开始直播时间
|
|
|
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
|
|
private Date startLiveTime;
|
|
|
//退出房间时间
|
|
|
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
|
|
private Date exitRoomTime;
|
|
|
//总直播时间
|
|
|
private Integer totalLiveTime = 0;
|