|
@@ -1,32 +1,20 @@
|
|
|
package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
-import com.alibaba.fastjson.JSONObject;
|
|
|
-import com.alibaba.fastjson.serializer.SerializerFeature;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
-import com.google.common.collect.Lists;
|
|
|
-import com.microsvc.toolkit.middleware.rtc.RTCRoomPluginContext;
|
|
|
-import com.microsvc.toolkit.middleware.rtc.RTCRoomPluginService;
|
|
|
-import com.microsvc.toolkit.middleware.rtc.enums.EMemberAction;
|
|
|
-import com.microsvc.toolkit.middleware.rtc.impl.TencentCloudRTCPlugin;
|
|
|
-import com.microsvc.toolkit.middleware.rtc.message.ImGroupMemberWrapper;
|
|
|
-import com.microsvc.toolkit.middleware.rtc.message.RTCRoomConfig;
|
|
|
-import com.microsvc.toolkit.middleware.rtc.message.RTCRoomMessage;
|
|
|
import com.yonge.cooleshow.auth.api.entity.SysUser;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.ImNetworkRoomDao;
|
|
|
-import com.yonge.cooleshow.biz.dal.dao.ImNetworkRoomMemberDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.SysConfigDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.*;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.*;
|
|
|
-import com.yonge.cooleshow.biz.dal.enums.*;
|
|
|
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
|
|
|
+import com.yonge.cooleshow.biz.dal.enums.ImNetworkDeviceTypeEnum;
|
|
|
+import com.yonge.cooleshow.biz.dal.enums.RoleEnum;
|
|
|
import com.yonge.cooleshow.biz.dal.service.*;
|
|
|
import com.yonge.cooleshow.biz.dal.support.IMHelper;
|
|
|
-import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
|
|
|
import com.yonge.cooleshow.common.constant.SysConfigConstant;
|
|
|
import com.yonge.cooleshow.common.entity.BaseResponse;
|
|
|
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
|
|
|
-import com.yonge.cooleshow.common.enums.EStatus;
|
|
|
import com.yonge.cooleshow.common.enums.ErrorEnum;
|
|
|
import com.yonge.toolset.base.exception.BizException;
|
|
|
import com.yonge.toolset.utils.date.DateUtil;
|
|
@@ -41,10 +29,8 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
-import java.text.MessageFormat;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
-import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -129,8 +115,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
//获取教室剩余时长
|
|
|
joinRoomResult.setSurplusTime(DateUtil.secondsBetween(now, courseSchedule.getEndTime()));
|
|
|
//获取房间所有成员
|
|
|
- List<ImNetworkRoomMember> roomMemberList = imNetworkRoomMemberService.queryByRoomId(roomId);
|
|
|
-
|
|
|
+ List<ImNetworkRoomMember> roomMemberList = imNetworkRoomMemberService.lambdaQuery().eq(ImNetworkRoomMember::getRoomId,roomId).list();
|
|
|
joinRoomResult.setMembers(roomMemberList);
|
|
|
//如果是老师,
|
|
|
if(userRole == RoleEnum.RoleTeacher){
|
|
@@ -141,7 +126,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
setMusicSheetList(roomMemberList,Long.parseLong(roomId));
|
|
|
}else {
|
|
|
//获取节拍器信息
|
|
|
- joinRoomResult.setPlayMidiJson(imNetworkRoomMemberStatusService.getMemberMidi(roomId, sysUser.getUserId()));
|
|
|
+ joinRoomResult.setPlayMidiJson(imNetworkRoomMemberStatusService.getMemberMidi(roomMember));
|
|
|
}
|
|
|
//课程结束后关闭教室的时间
|
|
|
joinRoomResult.setAutoCloseNetworkRoomTime(sysConfigDao.findConfigValue(SysConfigConstant.DESTROY_EXPIRED_PRACTICE_ROOM_MINUTE));
|
|
@@ -196,8 +181,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
//获取教室剩余时长
|
|
|
joinRoomResult.setSurplusTime(DateUtil.secondsBetween(new Date(), courseSchedule.getEndTime()));
|
|
|
//获取房间所有成员
|
|
|
- List<ImNetworkRoomMember> roomMemberList = imNetworkRoomMemberService.queryByRoomId(roomId);
|
|
|
-
|
|
|
+ List<ImNetworkRoomMember> roomMemberList = imNetworkRoomMemberService.lambdaQuery().eq(ImNetworkRoomMember::getRoomId,roomId).list();
|
|
|
joinRoomResult.setMembers(roomMemberList);
|
|
|
//如果是老师,
|
|
|
if(userRole == RoleEnum.RoleTeacher){
|
|
@@ -205,7 +189,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
setMusicSheetList(roomMemberList,Long.parseLong(roomId));
|
|
|
}else {
|
|
|
//获取节拍器信息
|
|
|
- joinRoomResult.setPlayMidiJson(imNetworkRoomMemberStatusService.getMemberMidi(roomId, sysUser.getUserId()));
|
|
|
+ joinRoomResult.setPlayMidiJson(imNetworkRoomMemberStatusService.getMemberMidi(roomMember));
|
|
|
}
|
|
|
//课程结束后关闭教室的时间
|
|
|
joinRoomResult.setAutoCloseNetworkRoomTime(sysConfigDao.findConfigValue(SysConfigConstant.DESTROY_EXPIRED_PRACTICE_ROOM_MINUTE));
|
|
@@ -277,11 +261,11 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
if (ClientEnum.STUDENT == clientType) {
|
|
|
userRole = RoleEnum.RoleStudent;
|
|
|
}
|
|
|
- imNetworkRoomMemberService.lambdaUpdate().eq(ImNetworkRoomMember::getRoomId,roomId)
|
|
|
- .eq(ImNetworkRoomMember::getUserId,userId)
|
|
|
- .eq(ImNetworkRoomMember::getRole,userRole.ordinal());
|
|
|
// 删除网络教室学员
|
|
|
- imNetworkRoomMemberService.getDao().delByRidAndUid(roomId, userId, userRole.getValue());
|
|
|
+ String imUserId = imGroupService.getImUserId(userId, userRole);
|
|
|
+ imNetworkRoomMemberService.lambdaUpdate().eq(ImNetworkRoomMember::getRoomId,roomId)
|
|
|
+ .eq(ImNetworkRoomMember::getUserId,imUserId)
|
|
|
+ .eq(ImNetworkRoomMember::getRole,userRole.getValue()).remove();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -326,7 +310,8 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
studentAttendanceService.signOut(userId,courseSchedule);
|
|
|
}
|
|
|
|
|
|
- if (roleEnum == RoleEnum.RoleTeacher || imNetworkRoomMemberService.getDao().countByRoomId(roomId) <= 1){
|
|
|
+ if (roleEnum == RoleEnum.RoleTeacher ||
|
|
|
+ imNetworkRoomMemberService.lambdaQuery().eq(ImNetworkRoomMember::getRoomId,roomId).count() <= 1){
|
|
|
//如果老师退出房间,初始化节拍器和伴奏播放配置
|
|
|
courseScheduleStudentMusicSheetService.getDao().closePlayStatus(courseScheduleId,null);
|
|
|
}
|
|
@@ -348,7 +333,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
.map(x -> x.split(":")[0]).collect(Collectors.joining(","));
|
|
|
imNetworkRoomMemberStatusService.lambdaUpdate()
|
|
|
.eq(ImNetworkRoomMemberStatus::getRoomId,customMessage.getRoomId())
|
|
|
- .in(ImNetworkRoomMemberStatus::getUserId,collect)
|
|
|
+ .in(ImNetworkRoomMemberStatus::getImUserId,collect)
|
|
|
.set(ImNetworkRoomMemberStatus::getPlayMidi,customMessage.getContent());
|
|
|
}
|
|
|
|
|
@@ -427,10 +412,12 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
}
|
|
|
|
|
|
}else {
|
|
|
- List<ImNetworkRoomMember> roomMembers = imNetworkRoomMemberService.getDao().findByRoomAndRole(deviceControl.getRoomId(), RoleEnum.RoleStudent.getValue());
|
|
|
+ List<ImNetworkRoomMember> roomMembers = imNetworkRoomMemberService.lambdaQuery()
|
|
|
+ .eq(ImNetworkRoomMember::getRoomId,deviceControl.getRoomId())
|
|
|
+ .eq(ImNetworkRoomMember::getRole,RoleEnum.RoleStudent.getValue()).list();
|
|
|
if (!CollectionUtils.isEmpty(roomMembers)) {
|
|
|
for (ImNetworkRoomMember roomMember : roomMembers) {
|
|
|
- deviceControl.setImUserId(imGroupService.getImUserId(String.valueOf(roomMember.getUserId()), ClientEnum.STUDENT.name()));
|
|
|
+ deviceControl.setImUserId(roomMember.getUserId());
|
|
|
controlDevice(deviceControl);
|
|
|
}
|
|
|
}
|
|
@@ -499,14 +486,17 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
if (ClientEnum.STUDENT == deviceControl.getClientType()) {
|
|
|
userRole = RoleEnum.RoleStudent;
|
|
|
}
|
|
|
- ImNetworkRoomMember roomMember = Optional.ofNullable(imNetworkRoomMemberService.getDao().findByRidAndUid(deviceControl.getRoomId(),sysUserService.getUserId(),
|
|
|
- userRole.getValue())).
|
|
|
+ Long userId = sysUserService.getUserId();
|
|
|
+ String imUserId = imGroupService.getImUserId(userId, userRole);
|
|
|
+ ImNetworkRoomMember roomMember = Optional.ofNullable(imNetworkRoomMemberService.lambdaQuery().eq(ImNetworkRoomMember::getRoomId,deviceControl.getRoomId())
|
|
|
+ .eq(ImNetworkRoomMember::getUserId,imUserId)
|
|
|
+ .eq(ImNetworkRoomMember::getRole,userRole.getValue()).last("LIMIT 1").one()).
|
|
|
orElseThrow(()-> new BizException("用户不在房间内"));
|
|
|
CourseSchedule courseSchedule = courseScheduleService.getById(deviceControl.getRoomId());
|
|
|
deviceControl.setServiceProvider(courseSchedule.getServiceProvider());
|
|
|
|
|
|
imService.pushApproveControlDevice(deviceControl,roomMember,
|
|
|
- teacherDao.getBasicUserInfo(roomMember.getUserId()),
|
|
|
+ teacherDao.getBasicUserInfo(userId),
|
|
|
teacherDao.getBasicUserInfo(courseSchedule.getTeacherId()));
|
|
|
}
|
|
|
|
|
@@ -523,18 +513,19 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
|
|
|
|
|
|
CourseSchedule courseSchedule = courseScheduleService.getById(deviceStatusSync.getRoomId());
|
|
|
deviceStatusSync.setServiceProvider(courseSchedule.getServiceProvider());
|
|
|
- ImNetworkRoomMember roomMember = Optional.ofNullable(imNetworkRoomMemberService.getDao().
|
|
|
- findByRidAndUid(deviceStatusSync.getRoomId(), userId, userRole.getValue()))
|
|
|
- .orElseThrow(()-> new BizException("用户不在房间内"));
|
|
|
+ String imUserId = imGroupService.getImUserId(userId, userRole);
|
|
|
+ ImNetworkRoomMember roomMember = Optional.ofNullable(imNetworkRoomMemberService.lambdaQuery().eq(ImNetworkRoomMember::getRoomId,deviceStatusSync.getRoomId())
|
|
|
+ .eq(ImNetworkRoomMember::getUserId,imUserId)
|
|
|
+ .eq(ImNetworkRoomMember::getRole,userRole.getValue()).last("LIMIT 1").one()).
|
|
|
+ orElseThrow(()-> new BizException("用户不在房间内"));
|
|
|
imService.sendDeviceStatusSync(deviceStatusSync,roomMember);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<BasicUserInfo> queryNoJoinStu(String roomId) {
|
|
|
- List<BasicUserInfo> userInfos = courseScheduleStudentPaymentService.getDao().queryNoJoinStu(roomId);
|
|
|
-
|
|
|
- for (BasicUserInfo item : userInfos) {
|
|
|
- item.setImUserId(imGroupService.getImUserId(String.valueOf(item.getUserId()),ClientEnum.STUDENT.name()));
|
|
|
+ public List<BasicUserInfoDto> queryNoJoinStu(String roomId) {
|
|
|
+ List<BasicUserInfoDto> userInfos = courseScheduleStudentPaymentService.getDao().queryNoJoinStu(roomId);
|
|
|
+ for (BasicUserInfoDto item : userInfos) {
|
|
|
+ item.setUserId(imGroupService.getImUserId(item.getUserId(),ClientEnum.STUDENT.name()));
|
|
|
}
|
|
|
return userInfos;
|
|
|
}
|