|
@@ -103,13 +103,13 @@ public class RoomServiceImpl implements RoomService {
|
|
|
@Value("${auth.sysconfig.tenantId}")
|
|
|
private Integer lesseeOrganId;
|
|
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
|
@Override
|
|
|
- public RoomResult joinRoom(String userName, String roomId, boolean isAudience, boolean isDisableCamera) throws ApiException, Exception {
|
|
|
+ public RoomResult joinRoom(String userName, String roomId, boolean isAudience, boolean isDisableCamera,boolean isMusicMode) throws ApiException, Exception {
|
|
|
CheckUtils.checkArgument(userName != null, "userName must't be null");
|
|
|
CheckUtils.checkArgument(roomId != null, "roomId must't be null");
|
|
|
|
|
|
- log.info("joinRoom: roomId={}, userName={}, isAudience={}, isDisableCamera={}", roomId, userName, isAudience, isDisableCamera);
|
|
|
+ log.info("joinRoom: roomId={}, userName={}, isAudience={}, isDisableCamera={},isMusicMode={}", roomId, userName, isAudience, isDisableCamera,isMusicMode);
|
|
|
|
|
|
SysUser sysUser = sysUserFeignService.queryUserInfo();
|
|
|
String userId = sysUser.getId().toString();
|
|
@@ -178,7 +178,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
}else {
|
|
|
roleEnum = RoleEnum.RoleStudent;
|
|
|
}
|
|
|
- saveRoomMember(userId, userName, roomId, roleEnum.getValue(), !isDisableCamera, curTime);
|
|
|
+ saveRoomMember(userId, userName, roomId, roleEnum.getValue(), !isDisableCamera,!isMusicMode, curTime);
|
|
|
IMApiResultInfo resultInfo = imHelper.joinGroup(new String[]{userId}, roomId, roomId);
|
|
|
if (!resultInfo.isSuccess()) {
|
|
|
throw new ApiException(ErrorEnum.ERR_CREATE_ROOM_ERROR, resultInfo.getErrorMessage());
|
|
@@ -338,7 +338,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void saveRoomMember(String userId, String userName, String roomId, int role, boolean cameraOn, Date joinTime) {
|
|
|
+ private void saveRoomMember(String userId, String userName, String roomId, int role, boolean cameraOn,boolean musicModeOn, Date joinTime) {
|
|
|
RoomMember roomMember = new RoomMember();
|
|
|
roomMember.setUid(userId);
|
|
|
roomMember.setName(userName);
|
|
@@ -346,6 +346,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
roomMember.setRole(role);
|
|
|
roomMember.setCamera(cameraOn);
|
|
|
roomMember.setJoinDt(joinTime);
|
|
|
+ roomMember.setMusicMode(musicModeOn);
|
|
|
roomMemberDao.save(roomMember);
|
|
|
}
|
|
|
|
|
@@ -744,7 +745,6 @@ public class RoomServiceImpl implements RoomService {
|
|
|
CheckUtils.checkArgument(roomDao.existsByRid(roomId), "room not exist");
|
|
|
CheckUtils.checkArgument(roomMemberDao.existsByRidAndUid(roomId, userId), "room member not exist");
|
|
|
SysUser authUser = sysUserFeignService.queryUserInfo();
|
|
|
-
|
|
|
log.info("controlDevice: userId={}, typeEnum={}, onOff={}", userId, typeEnum, enable);
|
|
|
|
|
|
if (enable) {
|
|
@@ -753,21 +753,23 @@ public class RoomServiceImpl implements RoomService {
|
|
|
taskInfo.setRoomId(roomId);
|
|
|
taskInfo.setTypeEnum(typeEnum);
|
|
|
taskInfo.setOnOff(true);
|
|
|
- taskInfo.setApplyUserId(userId);
|
|
|
+ taskInfo.setApplyUserId(authUser.getId().toString());
|
|
|
taskInfo.setTargetUserId(userId);
|
|
|
taskInfo.setTicket(ticket);
|
|
|
scheduleManager.addTask(taskInfo);
|
|
|
ControlDeviceNotifyMessage msg = new ControlDeviceNotifyMessage(ActionEnum.Invite.ordinal());
|
|
|
msg.setTicket(ticket);
|
|
|
msg.setType(taskInfo.getTypeEnum().ordinal());
|
|
|
- msg.setOpUserId(userId);
|
|
|
+ msg.setOpUserId(authUser.getId().toString());
|
|
|
msg.setOpUserName(authUser.getUsername());
|
|
|
- imHelper.publishMessage(userId, userId, roomId, msg);
|
|
|
+ imHelper.publishMessage(authUser.getId().toString(), userId, roomId, msg);
|
|
|
} else {
|
|
|
if (typeEnum.equals(DeviceTypeEnum.Camera)) {
|
|
|
roomMemberDao.updateCameraByRidAndUid(roomId, userId, false);
|
|
|
- } else {
|
|
|
+ } else if (typeEnum.equals(DeviceTypeEnum.Microphone)){
|
|
|
roomMemberDao.updateMicByRidAndUid(roomId, userId, false);
|
|
|
+ }else {
|
|
|
+ roomMemberDao.updateMusicByRidAndUid(roomId, userId, false);
|
|
|
}
|
|
|
DeviceStateChangedMessage deviceResourceMessage = new DeviceStateChangedMessage(typeEnum.ordinal(), false);
|
|
|
deviceResourceMessage.setUserId(userId);
|
|
@@ -775,12 +777,39 @@ public class RoomServiceImpl implements RoomService {
|
|
|
if (!userInfoList.isEmpty()) {
|
|
|
deviceResourceMessage.setUserName(userInfoList.get(0).getName());
|
|
|
}
|
|
|
- imHelper.publishMessage(userId, roomId, deviceResourceMessage, 1);
|
|
|
+ imHelper.publishMessage(authUser.getId().toString(), roomId, deviceResourceMessage, 1);
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean batchControlDevice(ReqDeviceControlData data) throws Exception {
|
|
|
+ //获取所有的学员列表
|
|
|
+ List<RoomMember> roomMembers = roomMemberDao.findByRidAndRole(data.getRoomId(),RoleEnum.RoleStudent.getValue());
|
|
|
+ if(roomMembers.size() == 0){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ boolean result = true;
|
|
|
+ if (data.getCameraOn() != null) {
|
|
|
+ for (RoomMember e:roomMembers) {
|
|
|
+ controlDevice(data.getRoomId(), e.getUid(), DeviceTypeEnum.Camera, data.getCameraOn());
|
|
|
+ }
|
|
|
+ } else if (data.getMicrophoneOn() != null) {
|
|
|
+ for (RoomMember e:roomMembers) {
|
|
|
+ controlDevice(data.getRoomId(), e.getUid(), DeviceTypeEnum.Microphone, data.getMicrophoneOn());
|
|
|
+ }
|
|
|
+ } else if (data.getMusicModeOn() != null) {
|
|
|
+ for (RoomMember e:roomMembers) {
|
|
|
+ controlDevice(data.getRoomId(), e.getUid(), DeviceTypeEnum.MusicMode, data.getMusicModeOn());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new ApiException(ErrorEnum.ERR_REQUEST_PARA_ERR);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
public Boolean approveControlDevice(String roomId, String ticket) throws ApiException, Exception {
|
|
|
CheckUtils.checkArgument(ticket != null, "ticket must't be null");
|
|
|
SysUser authUser = sysUserFeignService.queryUserInfo();
|
|
@@ -821,6 +850,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean syncDeviceState(String roomId, DeviceTypeEnum type, boolean enable) throws ApiException, Exception {
|
|
|
CheckUtils.checkArgument(roomId != null, "roomId must't be null");
|
|
|
CheckUtils.checkArgument(roomDao.existsByRid(roomId), "room not exist");
|
|
@@ -832,9 +862,12 @@ public class RoomServiceImpl implements RoomService {
|
|
|
if (type.equals(DeviceTypeEnum.Camera)) {
|
|
|
result = roomMemberDao.updateCameraByRidAndUid(roomId, userId, enable);
|
|
|
deviceResourceMessage = new DeviceStateChangedMessage(type.ordinal(), enable);
|
|
|
- } else {
|
|
|
+ } else if (type.equals(DeviceTypeEnum.Microphone)){
|
|
|
result = roomMemberDao.updateMicByRidAndUid(roomId, userId, enable);
|
|
|
deviceResourceMessage = new DeviceStateChangedMessage(type.ordinal(), enable);
|
|
|
+ }else {
|
|
|
+ result = roomMemberDao.updateMusicByRidAndUid(roomId, userId, enable);
|
|
|
+ deviceResourceMessage = new DeviceStateChangedMessage(type.ordinal(), enable);
|
|
|
}
|
|
|
deviceResourceMessage.setUserId(userId);
|
|
|
imHelper.publishMessage(userId, roomId, deviceResourceMessage, 1);
|
|
@@ -1238,14 +1271,13 @@ public class RoomServiceImpl implements RoomService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public boolean statusSync(String roomId,String userId) throws Exception {
|
|
|
log.info("statusSync: roomId={}, userId={}", roomId, userId);
|
|
|
List<RoomMember> byRidAndUid = roomMemberDao.findByRidAndUid(roomId, userId);
|
|
|
if(byRidAndUid.size() > 0){
|
|
|
// SysUser sysUser = sysUserFeignService.queryUserById(Integer.parseInt(userId));
|
|
|
SysUser sysUser = teacherDao.getUser(Integer.parseInt(userId));
|
|
|
- studentDao.lockUser(Integer.parseInt(userId));
|
|
|
Teacher teacher = teacherDao.get(sysUser.getId());
|
|
|
CourseSchedule courseSchedule = courseScheduleDao.get(Long.parseLong(roomId.substring(1)));
|
|
|
log.info("statusSyncLevelRoom: roomId={}, userId={}", roomId, userId);
|