|
@@ -1,32 +1,24 @@
|
|
|
package com.keao.edu.im.service.Impl;
|
|
|
|
|
|
-import com.alibaba.fastjson.JSONObject;
|
|
|
import com.keao.edu.auth.api.client.EduUserFeignService;
|
|
|
import com.keao.edu.auth.api.client.SysUserFeignService;
|
|
|
import com.keao.edu.auth.api.entity.ExamRoom;
|
|
|
import com.keao.edu.auth.api.entity.SysUser;
|
|
|
import com.keao.edu.common.exception.BizException;
|
|
|
import com.keao.edu.im.common.ApiException;
|
|
|
-import com.keao.edu.im.common.DisplayEnum;
|
|
|
import com.keao.edu.im.common.ErrorEnum;
|
|
|
import com.keao.edu.im.config.IMProperties;
|
|
|
-import com.keao.edu.im.config.RoomProperties;
|
|
|
-import com.keao.edu.im.dao.RoomDao;
|
|
|
-import com.keao.edu.im.dao.RoomMemberDao;
|
|
|
-import com.keao.edu.im.dao.UserDao;
|
|
|
-import com.keao.edu.im.dao.WhiteboardDao;
|
|
|
+import com.keao.edu.im.dao.*;
|
|
|
import com.keao.edu.im.job.ScheduleManager;
|
|
|
import com.keao.edu.im.mec.im.IMHelper;
|
|
|
import com.keao.edu.im.mec.im.message.*;
|
|
|
import com.keao.edu.im.pojo.*;
|
|
|
-import com.keao.edu.im.service.MessageService;
|
|
|
import com.keao.edu.im.service.RoomService;
|
|
|
import com.keao.edu.im.utils.CheckUtils;
|
|
|
import com.keao.edu.im.utils.CodeUtil;
|
|
|
import com.keao.edu.im.utils.DateTimeUtils;
|
|
|
import com.keao.edu.im.utils.IdentifierUtils;
|
|
|
import com.keao.edu.im.whiteboard.WhiteBoardHelper;
|
|
|
-import io.rong.models.message.GroupMessage;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -47,9 +39,6 @@ public class RoomServiceImpl implements RoomService {
|
|
|
private IMHelper imHelper;
|
|
|
|
|
|
@Autowired
|
|
|
- private RoomProperties roomProperties;
|
|
|
-
|
|
|
- @Autowired
|
|
|
private RoomDao roomDao;
|
|
|
|
|
|
@Autowired
|
|
@@ -68,9 +57,6 @@ public class RoomServiceImpl implements RoomService {
|
|
|
private UserDao userDao;
|
|
|
|
|
|
@Autowired
|
|
|
- private MessageService messageService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
private IMProperties imProperties;
|
|
|
|
|
|
@Autowired
|
|
@@ -79,6 +65,12 @@ public class RoomServiceImpl implements RoomService {
|
|
|
@Autowired
|
|
|
private EduUserFeignService eduUserFeignService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private TeacherAttendanceDao teacherAttendanceDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private StudentAttendanceDao studentAttendanceDao;
|
|
|
+
|
|
|
@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
|
@Override
|
|
|
public RoomResult joinRoom(String roomId, boolean isAudience, boolean isDisableCamera,boolean isMusicMode) throws ApiException, Exception {
|
|
@@ -97,11 +89,11 @@ public class RoomServiceImpl implements RoomService {
|
|
|
isAssistant = true;
|
|
|
}
|
|
|
}
|
|
|
- String display = "";
|
|
|
+// String display = "";
|
|
|
Date curTime = DateTimeUtils.currentUTC();
|
|
|
List<Room> roomList = roomDao.findByRid(roomId);
|
|
|
if (roomList.isEmpty()) {
|
|
|
- saveRoom(roomId, roomId, curTime, display);
|
|
|
+ saveRoom(roomId, roomId, curTime, null);
|
|
|
IMApiResultInfo resultInfo = imHelper.createGroup(new String[]{userId}, roomId, roomId);
|
|
|
if (!resultInfo.isSuccess()) {
|
|
|
log.error("joinRoom IM error: roomId={}, {}", roomId, resultInfo.getErrorMessage());
|
|
@@ -110,9 +102,9 @@ public class RoomServiceImpl implements RoomService {
|
|
|
// else {
|
|
|
// scheduleManager.addExpiredTask(this, roomId);
|
|
|
// }
|
|
|
- } else {
|
|
|
+ }/* else {
|
|
|
display = roomList.get(0).getDisplay();
|
|
|
- }
|
|
|
+ }*/
|
|
|
RoleEnum roleEnum;
|
|
|
RoomResult roomResult = new RoomResult();
|
|
|
RoomResult.MemberResult userResult = new RoomResult.MemberResult();
|
|
@@ -150,7 +142,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
msg.setUserName(realName);
|
|
|
msg.setCamera(!isDisableCamera);
|
|
|
imHelper.publishMessage(userId, roomId, msg);
|
|
|
- if (roleEnum == RoleEnum.MainTeacher) {
|
|
|
+ /*if (roleEnum == RoleEnum.MainTeacher) {
|
|
|
display = "display://type=0?userId=" + userId + "?uri=";
|
|
|
updateDisplay(roomId, userId, display, 0);
|
|
|
log.info("joinRoom, display changed: roomId={}, {}, userId={}", roomId, display, userId);
|
|
@@ -158,7 +150,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
display = "display://type=1?userId=" + userId + "?uri=";
|
|
|
updateDisplay(roomId, userId, display, 0);
|
|
|
log.info("joinRoom, display changed: roomId={}, {}, userId={}", roomId, display, userId);
|
|
|
- }
|
|
|
+ }*/
|
|
|
|
|
|
List<UserInfo> userInfoList = userDao.findByUid(userId);
|
|
|
if (userInfoList.isEmpty()) {
|
|
@@ -178,7 +170,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
userResult.setUserId(userId);
|
|
|
userResult.setRole(roleEnum.getValue());
|
|
|
roomResult.setUserInfo(userResult);
|
|
|
- roomResult.setDisplay(display);
|
|
|
+// roomResult.setDisplay(display);
|
|
|
roomResult.setRoomId(roomId);
|
|
|
|
|
|
roomResult.setMembers(roomMemberDao.findByRid(roomId));
|
|
@@ -191,7 +183,34 @@ public class RoomServiceImpl implements RoomService {
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
|
public void signIn(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 teacherAttendance = new TeacherAttendance();
|
|
|
+ teacherAttendance.setExamRoomId(examRoom.getId());
|
|
|
+ teacherAttendance.setSignInTime(date);
|
|
|
+ teacherAttendance.setTeacherId(userId);
|
|
|
+ teacherAttendance.setTenantId(examRoom.getTenantId());
|
|
|
+ teacherAttendance.setCreateTime(date);
|
|
|
+ teacherAttendanceDao.save(teacherAttendance);
|
|
|
+ }else {
|
|
|
+ StudentAttendance studentAttendance = new StudentAttendance();
|
|
|
+ studentAttendance.setExamRoomId(examRoom.getId());
|
|
|
+ studentAttendance.setSignInTime(date);
|
|
|
+ studentAttendance.setUserId(userId);
|
|
|
+ studentAttendance.setCreateTime(date);
|
|
|
+ studentAttendanceDao.save(studentAttendance);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private void saveRoom(String roomId, String roomName, Date createTime, String display) {
|
|
@@ -223,13 +242,11 @@ public class RoomServiceImpl implements RoomService {
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
|
@Override
|
|
|
- public Boolean leaveRoom(String roomId) throws Exception {
|
|
|
+ public Boolean leaveRoom(String roomId){
|
|
|
SysUser user = sysUserFeignService.queryUserInfo();
|
|
|
String userId = user.getId().toString();
|
|
|
log.info("leaveRoom: roomId={}, userId={}", roomId,userId);
|
|
|
|
|
|
-
|
|
|
-
|
|
|
CheckUtils.checkArgument(user != null, "user must't be null");
|
|
|
CheckUtils.checkArgument(roomId != null, "roomId must't be null");
|
|
|
List<Room> roomList = roomDao.findByRid(roomId);
|
|
@@ -248,7 +265,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
int userRole = roomMemberList.get(0).getRole();
|
|
|
log.info("leaveRoom: roomId={}, role={}", roomId, RoleEnum.getEnumByValue(userRole));
|
|
|
|
|
|
- if (userRole == RoleEnum.MainTeacher.getValue() || userRole == RoleEnum.AssistantTeacher.getValue()) {
|
|
|
+ /*if (userRole == RoleEnum.MainTeacher.getValue() || userRole == RoleEnum.AssistantTeacher.getValue()) {
|
|
|
if (isUserDisplay(roomList.get(0), userId)) {
|
|
|
updateDisplay(roomId, userId, "", 0);
|
|
|
log.info("clear display cause speaker leave: roomId={}", roomId);
|
|
@@ -257,7 +274,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
}
|
|
|
} else {
|
|
|
log.info("don't update current display: room={}, userRole={}", roomList.get(0), RoleEnum.getEnumByValue(userRole));
|
|
|
- }
|
|
|
+ }*/
|
|
|
|
|
|
if (roomMemberDao.countByRid(roomId) == 1) {
|
|
|
IMApiResultInfo apiResultInfo = null;
|
|
@@ -296,7 +313,6 @@ public class RoomServiceImpl implements RoomService {
|
|
|
}
|
|
|
}
|
|
|
userDao.deleteByUid(userId);
|
|
|
-
|
|
|
return true;
|
|
|
}
|
|
|
|