|
@@ -1,5 +1,6 @@
|
|
package com.keao.edu.im.service.Impl;
|
|
package com.keao.edu.im.service.Impl;
|
|
|
|
|
|
|
|
+import com.keao.edu.common.enums.YesOrNoEnum;
|
|
import com.keao.edu.user.api.client.EduUserFeignService;
|
|
import com.keao.edu.user.api.client.EduUserFeignService;
|
|
import com.keao.edu.auth.api.client.SysUserFeignService;
|
|
import com.keao.edu.auth.api.client.SysUserFeignService;
|
|
import com.keao.edu.user.api.entity.ExamRoom;
|
|
import com.keao.edu.user.api.entity.ExamRoom;
|
|
@@ -19,6 +20,7 @@ import com.keao.edu.im.utils.CodeUtil;
|
|
import com.keao.edu.im.utils.DateTimeUtils;
|
|
import com.keao.edu.im.utils.DateTimeUtils;
|
|
import com.keao.edu.im.utils.IdentifierUtils;
|
|
import com.keao.edu.im.utils.IdentifierUtils;
|
|
import com.keao.edu.im.whiteboard.WhiteBoardHelper;
|
|
import com.keao.edu.im.whiteboard.WhiteBoardHelper;
|
|
|
|
+import com.keao.edu.user.api.entity.ExamRoomStudentRelation;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -29,6 +31,8 @@ import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
+import static com.keao.edu.im.pojo.RoleEnum.Student;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* Created by super_zou on 2019/11/28.
|
|
* Created by super_zou on 2019/11/28.
|
|
*/
|
|
*/
|
|
@@ -115,7 +119,14 @@ public class RoomServiceImpl implements RoomService {
|
|
}else if(isAssistant){
|
|
}else if(isAssistant){
|
|
roleEnum = RoleEnum.AssistantTeacher;
|
|
roleEnum = RoleEnum.AssistantTeacher;
|
|
}else {
|
|
}else {
|
|
- roleEnum = RoleEnum.Student;
|
|
|
|
|
|
+ ExamRoomStudentRelation examRoomStudentRelation = eduUserFeignService.getExamRoomStudentRelation(examRoom.getExaminationBasicId(), roomId, sysUser.getId());
|
|
|
|
+ if(examRoomStudentRelation == null){
|
|
|
|
+ throw new BizException("学员考试数据异常");
|
|
|
|
+ }
|
|
|
|
+ if(examRoomStudentRelation.getClassroomSwitch() == YesOrNoEnum.NO){
|
|
|
|
+ throw new BizException("考级入口已关闭");
|
|
|
|
+ }
|
|
|
|
+ roleEnum = Student;
|
|
}
|
|
}
|
|
saveRoomMember(userId,sysUser.getAvatar(), realName, roomId, roleEnum.getValue(), !isDisableCamera,!isMusicMode, curTime);
|
|
saveRoomMember(userId,sysUser.getAvatar(), realName, roomId, roleEnum.getValue(), !isDisableCamera,!isMusicMode, curTime);
|
|
IMApiResultInfo resultInfo = imHelper.joinGroup(new String[]{userId}, roomId, roomId);
|
|
IMApiResultInfo resultInfo = imHelper.joinGroup(new String[]{userId}, roomId, roomId);
|
|
@@ -130,6 +141,15 @@ public class RoomServiceImpl implements RoomService {
|
|
} else {
|
|
} else {
|
|
RoomMember roomMember = memberList.get(0);
|
|
RoomMember roomMember = memberList.get(0);
|
|
roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
|
|
roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
|
|
|
|
+ if(roleEnum == Student){
|
|
|
|
+ ExamRoomStudentRelation examRoomStudentRelation = eduUserFeignService.getExamRoomStudentRelation(examRoom.getExaminationBasicId(), roomId, sysUser.getId());
|
|
|
|
+ if(examRoomStudentRelation == null){
|
|
|
|
+ throw new BizException("学员考试数据异常");
|
|
|
|
+ }
|
|
|
|
+ if(examRoomStudentRelation.getClassroomSwitch() == YesOrNoEnum.NO){
|
|
|
|
+ throw new BizException("考级入口已关闭");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
// roomMemberDao.updateCameraByRidAndUid(roomId, userId, !isDisableCamera);
|
|
// roomMemberDao.updateCameraByRidAndUid(roomId, userId, !isDisableCamera);
|
|
userResult.setCamera(roomMember.isCamera());
|
|
userResult.setCamera(roomMember.isCamera());
|
|
userResult.setHandUp(roomMember.isHand());
|
|
userResult.setHandUp(roomMember.isHand());
|
|
@@ -196,23 +216,82 @@ public class RoomServiceImpl implements RoomService {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(userId.equals(examRoom.getMainTeacherUserId()) || isAssistant){
|
|
if(userId.equals(examRoom.getMainTeacherUserId()) || isAssistant){
|
|
|
|
+ TeacherAttendance attendance = teacherAttendanceDao.findByTeacherIdAndExaminationBasicIdAndExamRoomId(userId, examRoom.getExaminationBasicId(), examRoom.getId());
|
|
|
|
+ if(attendance != null){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
TeacherAttendance teacherAttendance = new TeacherAttendance();
|
|
TeacherAttendance teacherAttendance = new TeacherAttendance();
|
|
teacherAttendance.setExamRoomId(examRoom.getId());
|
|
teacherAttendance.setExamRoomId(examRoom.getId());
|
|
teacherAttendance.setSignInTime(date);
|
|
teacherAttendance.setSignInTime(date);
|
|
teacherAttendance.setTeacherId(userId);
|
|
teacherAttendance.setTeacherId(userId);
|
|
teacherAttendance.setTenantId(examRoom.getTenantId());
|
|
teacherAttendance.setTenantId(examRoom.getTenantId());
|
|
teacherAttendance.setCreateTime(date);
|
|
teacherAttendance.setCreateTime(date);
|
|
|
|
+ teacherAttendance.setExaminationBasicId(examRoom.getExaminationBasicId());
|
|
teacherAttendanceDao.save(teacherAttendance);
|
|
teacherAttendanceDao.save(teacherAttendance);
|
|
}else {
|
|
}else {
|
|
|
|
+ StudentAttendance attendance = studentAttendanceDao.findByUserIdAndExaminationBasicIdAndExamRoomId(userId, examRoom.getExaminationBasicId(), examRoom.getId());
|
|
|
|
+ if(attendance != null){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
StudentAttendance studentAttendance = new StudentAttendance();
|
|
StudentAttendance studentAttendance = new StudentAttendance();
|
|
studentAttendance.setExamRoomId(examRoom.getId());
|
|
studentAttendance.setExamRoomId(examRoom.getId());
|
|
studentAttendance.setSignInTime(date);
|
|
studentAttendance.setSignInTime(date);
|
|
studentAttendance.setUserId(userId);
|
|
studentAttendance.setUserId(userId);
|
|
studentAttendance.setCreateTime(date);
|
|
studentAttendance.setCreateTime(date);
|
|
|
|
+ studentAttendance.setExaminationBasicId(examRoom.getExaminationBasicId());
|
|
studentAttendanceDao.save(studentAttendance);
|
|
studentAttendanceDao.save(studentAttendance);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
|
|
+ public void signOut(Long roomId) {
|
|
|
|
+ SysUser sysUser = sysUserFeignService.queryUserInfo();
|
|
|
|
+ Integer userId = sysUser.getId();
|
|
|
|
+ log.info("roomSignIn: roomId={}, userId={}", roomId, userId);
|
|
|
|
+ ExamRoom examRoom = eduUserFeignService.getExamRoom(roomId.intValue());
|
|
|
|
+ Date date = new Date();
|
|
|
|
+ boolean isAssistant = false;
|
|
|
|
+ if (StringUtils.isNotEmpty(examRoom.getAssistantTeacherUserIdList())){
|
|
|
|
+ List<String> list = Arrays.asList(examRoom.getAssistantTeacherUserIdList().split(","));
|
|
|
|
+ if(list.contains(userId)){
|
|
|
|
+ isAssistant = true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(userId.equals(examRoom.getMainTeacherUserId()) || isAssistant){
|
|
|
|
+ TeacherAttendance attendance = teacherAttendanceDao.findByTeacherIdAndExaminationBasicIdAndExamRoomId(userId, examRoom.getExaminationBasicId(), examRoom.getId());
|
|
|
|
+ if(attendance == null){
|
|
|
|
+ attendance = new TeacherAttendance();
|
|
|
|
+ attendance.setExamRoomId(examRoom.getId());
|
|
|
|
+ attendance.setSignInTime(date);
|
|
|
|
+ attendance.setSignOutTime(date);
|
|
|
|
+ attendance.setTeacherId(userId);
|
|
|
|
+ attendance.setTenantId(examRoom.getTenantId());
|
|
|
|
+ attendance.setCreateTime(date);
|
|
|
|
+ attendance.setExaminationBasicId(examRoom.getExaminationBasicId());
|
|
|
|
+ teacherAttendanceDao.save(attendance);
|
|
|
|
+ }else {
|
|
|
|
+ attendance.setSignOutTime(date);
|
|
|
|
+ teacherAttendanceDao.saveAndFlush(attendance);
|
|
|
|
+ }
|
|
|
|
+ }else {
|
|
|
|
+ StudentAttendance attendance = studentAttendanceDao.findByUserIdAndExaminationBasicIdAndExamRoomId(userId, examRoom.getExaminationBasicId(), examRoom.getId());
|
|
|
|
+ if(attendance == null){
|
|
|
|
+ attendance = new StudentAttendance();
|
|
|
|
+ attendance.setExamRoomId(examRoom.getId());
|
|
|
|
+ attendance.setSignInTime(date);
|
|
|
|
+ attendance.setSignOutTime(date);
|
|
|
|
+ attendance.setUserId(userId);
|
|
|
|
+ attendance.setCreateTime(date);
|
|
|
|
+ attendance.setExaminationBasicId(examRoom.getExaminationBasicId());
|
|
|
|
+ studentAttendanceDao.save(attendance);
|
|
|
|
+ }else {
|
|
|
|
+ attendance.setSignOutTime(date);
|
|
|
|
+ studentAttendanceDao.saveAndFlush(attendance);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
private void saveRoom(String roomId, String roomName, Date createTime, String display) {
|
|
private void saveRoom(String roomId, String roomName, Date createTime, String display) {
|
|
Room room = new Room();
|
|
Room room = new Room();
|
|
room.setRid(roomId);
|
|
room.setRid(roomId);
|
|
@@ -313,6 +392,7 @@ public class RoomServiceImpl implements RoomService {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
userDao.deleteByUid(userId);
|
|
userDao.deleteByUid(userId);
|
|
|
|
+ this.signOut(Long.parseLong(roomId));
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -381,7 +461,7 @@ public class RoomServiceImpl implements RoomService {
|
|
log.info("change the role: {}, {}, {}, result: {}", roomId, userId, changedRole, r);
|
|
log.info("change the role: {}, {}, {}, result: {}", roomId, userId, changedRole, r);
|
|
result = true;
|
|
result = true;
|
|
}*/
|
|
}*/
|
|
- if (oldUsers.get(0).getRole() != RoleEnum.Student.getValue() && isUserDisplay(roomList.get(0), oldUsers.get(0).getUid())) {
|
|
|
|
|
|
+ if (oldUsers.get(0).getRole() != Student.getValue() && isUserDisplay(roomList.get(0), oldUsers.get(0).getUid())) {
|
|
updateDisplay(roomId, userId, "", 1);
|
|
updateDisplay(roomId, userId, "", 1);
|
|
} else {
|
|
} else {
|
|
log.info("don't update display: room={}, userRole={}", roomList.get(0), RoleEnum.getEnumByValue(oldUsers.get(0).getRole()));
|
|
log.info("don't update display: room={}, userRole={}", roomList.get(0), RoleEnum.getEnumByValue(oldUsers.get(0).getRole()));
|
|
@@ -424,7 +504,7 @@ public class RoomServiceImpl implements RoomService {
|
|
Thread.sleep(50);
|
|
Thread.sleep(50);
|
|
log.info("published msg: msg={}", msg);
|
|
log.info("published msg: msg={}", msg);
|
|
List<Room> roomList = roomDao.findByRid(roomId);
|
|
List<Room> roomList = roomDao.findByRid(roomId);
|
|
- if (kickedUsers.get(0).getRole() != RoleEnum.Student.getValue() && isUserDisplay(roomList.get(0), userId)) {
|
|
|
|
|
|
+ if (kickedUsers.get(0).getRole() != Student.getValue() && isUserDisplay(roomList.get(0), userId)) {
|
|
updateDisplay(roomId, userId, "", 1);
|
|
updateDisplay(roomId, userId, "", 1);
|
|
} else {
|
|
} else {
|
|
log.info("don't update display: room={}, userRole={}", roomId, RoleEnum.getEnumByValue(kickedUsers.get(0).getRole()));
|
|
log.info("don't update display: room={}, userRole={}", roomId, RoleEnum.getEnumByValue(kickedUsers.get(0).getRole()));
|
|
@@ -671,7 +751,7 @@ public class RoomServiceImpl implements RoomService {
|
|
roomMembers.add(new RoomMember(split[i]));
|
|
roomMembers.add(new RoomMember(split[i]));
|
|
}
|
|
}
|
|
}else {
|
|
}else {
|
|
- roomMembers = roomMemberDao.findByRidAndRole(data.getRoomId(),RoleEnum.Student.getValue());
|
|
|
|
|
|
+ roomMembers = roomMemberDao.findByRidAndRole(data.getRoomId(), Student.getValue());
|
|
}
|
|
}
|
|
if(roomMembers.size() == 0){
|
|
if(roomMembers.size() == 0){
|
|
return false;
|
|
return false;
|
|
@@ -823,7 +903,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
|
|
|
ScheduledTaskInfo taskInfo = scheduleManager.executeTask(ticket);
|
|
ScheduledTaskInfo taskInfo = scheduleManager.executeTask(ticket);
|
|
log.info("approveSpeech: task = {}", taskInfo);
|
|
log.info("approveSpeech: task = {}", taskInfo);
|
|
- roomMemberDao.updateRoleByRidAndUid(roomId, taskInfo.getApplyUserId(), RoleEnum.Student.getValue());
|
|
|
|
|
|
+ roomMemberDao.updateRoleByRidAndUid(roomId, taskInfo.getApplyUserId(), Student.getValue());
|
|
|
|
|
|
SpeechResultMessage msg = new SpeechResultMessage(SpeechResultMessage.Action_Approve);
|
|
SpeechResultMessage msg = new SpeechResultMessage(SpeechResultMessage.Action_Approve);
|
|
List<UserInfo> userInfoList = userDao.findByUid(taskInfo.getApplyUserId());
|
|
List<UserInfo> userInfoList = userDao.findByUid(taskInfo.getApplyUserId());
|
|
@@ -833,7 +913,7 @@ public class RoomServiceImpl implements RoomService {
|
|
if (!userInfoList.isEmpty()) {
|
|
if (!userInfoList.isEmpty()) {
|
|
msg.setReqUserName(userInfoList.get(0).getName());
|
|
msg.setReqUserName(userInfoList.get(0).getName());
|
|
}
|
|
}
|
|
- msg.setRole(RoleEnum.Student.getValue());
|
|
|
|
|
|
+ msg.setRole(Student.getValue());
|
|
IMApiResultInfo resultInfo = imHelper.publishMessage(userId, taskInfo.getApplyUserId(), roomId, msg);
|
|
IMApiResultInfo resultInfo = imHelper.publishMessage(userId, taskInfo.getApplyUserId(), roomId, msg);
|
|
if (!resultInfo.isSuccess()) {
|
|
if (!resultInfo.isSuccess()) {
|
|
throw new ApiException(ErrorEnum.ERR_MESSAGE_ERROR, resultInfo.getErrorMessage());
|
|
throw new ApiException(ErrorEnum.ERR_MESSAGE_ERROR, resultInfo.getErrorMessage());
|
|
@@ -841,7 +921,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
|
|
|
RoleChangedMessage rcMsg = new RoleChangedMessage(userId);
|
|
RoleChangedMessage rcMsg = new RoleChangedMessage(userId);
|
|
List<RoleChangedMessage.ChangedUser> changedUserList = new ArrayList<>();
|
|
List<RoleChangedMessage.ChangedUser> changedUserList = new ArrayList<>();
|
|
- RoleChangedMessage.ChangedUser user = new RoleChangedMessage.ChangedUser(taskInfo.getApplyUserId(), RoleEnum.Student.getValue());
|
|
|
|
|
|
+ RoleChangedMessage.ChangedUser user = new RoleChangedMessage.ChangedUser(taskInfo.getApplyUserId(), Student.getValue());
|
|
if (!userInfoList.isEmpty()) {
|
|
if (!userInfoList.isEmpty()) {
|
|
user.setUserName(userInfoList.get(0).getName());
|
|
user.setUserName(userInfoList.get(0).getName());
|
|
}
|
|
}
|
|
@@ -864,7 +944,7 @@ public class RoomServiceImpl implements RoomService {
|
|
SpeechResultMessage msg = new SpeechResultMessage(SpeechResultMessage.Action_Reject);
|
|
SpeechResultMessage msg = new SpeechResultMessage(SpeechResultMessage.Action_Reject);
|
|
msg.setOpUserId(userId);
|
|
msg.setOpUserId(userId);
|
|
msg.setOpUserName(authUser.getUsername());
|
|
msg.setOpUserName(authUser.getUsername());
|
|
- msg.setRole(RoleEnum.Student.getValue());
|
|
|
|
|
|
+ msg.setRole(Student.getValue());
|
|
IMApiResultInfo resultInfo = imHelper.publishMessage(userId, taskInfo.getApplyUserId(), roomId, msg);
|
|
IMApiResultInfo resultInfo = imHelper.publishMessage(userId, taskInfo.getApplyUserId(), roomId, msg);
|
|
if (resultInfo.isSuccess()) {
|
|
if (resultInfo.isSuccess()) {
|
|
return true;
|
|
return true;
|
|
@@ -910,7 +990,7 @@ public class RoomServiceImpl implements RoomService {
|
|
log.info("don't update display: room={}", roomList.get(0));
|
|
log.info("don't update display: room={}", roomList.get(0));
|
|
}
|
|
}
|
|
|
|
|
|
- roomMemberDao.updateRoleByRidAndUid(roomId, userId, RoleEnum.Student.getValue());
|
|
|
|
|
|
+ roomMemberDao.updateRoleByRidAndUid(roomId, userId, Student.getValue());
|
|
// roomMemberDao.updateRoleByRidAndUid(roomId, userId, RoleEnum.RoleAssistant.getValue());
|
|
// roomMemberDao.updateRoleByRidAndUid(roomId, userId, RoleEnum.RoleAssistant.getValue());
|
|
|
|
|
|
AssistantTransferMessage msg = new AssistantTransferMessage();
|
|
AssistantTransferMessage msg = new AssistantTransferMessage();
|
|
@@ -1040,7 +1120,7 @@ public class RoomServiceImpl implements RoomService {
|
|
if (targetUser.isEmpty()) {
|
|
if (targetUser.isEmpty()) {
|
|
throw new ApiException(ErrorEnum.ERR_USER_NOT_EXIST_IN_ROOM);
|
|
throw new ApiException(ErrorEnum.ERR_USER_NOT_EXIST_IN_ROOM);
|
|
} else {
|
|
} else {
|
|
- if (!RoleEnum.getEnumByValue(targetUser.get(0).getRole()).equals(RoleEnum.Student)) {
|
|
|
|
|
|
+ if (!RoleEnum.getEnumByValue(targetUser.get(0).getRole()).equals(Student)) {
|
|
log.error("change role error: targetUserId={}, targetRole = {}", targetUser, RoleEnum.getEnumByValue(targetRole));
|
|
log.error("change role error: targetUserId={}, targetRole = {}", targetUser, RoleEnum.getEnumByValue(targetRole));
|
|
throw new ApiException(ErrorEnum.ERR_CHANGE_ROLE);
|
|
throw new ApiException(ErrorEnum.ERR_CHANGE_ROLE);
|
|
}
|
|
}
|
|
@@ -1052,8 +1132,8 @@ public class RoomServiceImpl implements RoomService {
|
|
|
|
|
|
List<RoomMember> teachers = roomMemberDao.findByRidAndRole(roomId, RoleEnum.MainTeacher.getValue());
|
|
List<RoomMember> teachers = roomMemberDao.findByRidAndRole(roomId, RoleEnum.MainTeacher.getValue());
|
|
if (!teachers.isEmpty()) {
|
|
if (!teachers.isEmpty()) {
|
|
- roomMemberDao.updateRoleByRidAndUid(roomId, teachers.get(0).getUid(), RoleEnum.Student.getValue());
|
|
|
|
- RoleChangedMessage.ChangedUser user = new RoleChangedMessage.ChangedUser(teachers.get(0).getUid(), RoleEnum.Student.getValue());
|
|
|
|
|
|
+ roomMemberDao.updateRoleByRidAndUid(roomId, teachers.get(0).getUid(), Student.getValue());
|
|
|
|
+ RoleChangedMessage.ChangedUser user = new RoleChangedMessage.ChangedUser(teachers.get(0).getUid(), Student.getValue());
|
|
List<UserInfo> userInfoList = userDao.findByUid(teachers.get(0).getUid());
|
|
List<UserInfo> userInfoList = userDao.findByUid(teachers.get(0).getUid());
|
|
if (!userInfoList.isEmpty()) {
|
|
if (!userInfoList.isEmpty()) {
|
|
user.setUserName(userInfoList.get(0).getName());
|
|
user.setUserName(userInfoList.get(0).getName());
|