|
@@ -60,6 +60,8 @@ import org.springframework.transaction.annotation.Propagation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.CompletableFuture;
|
|
|
+import java.util.concurrent.Executors;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -781,6 +783,9 @@ public class RoomServiceImpl implements RoomService {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ // 异步删除用户,让当前事务失效
|
|
|
+ asyncDeleteRoomMember(roomId, userId);
|
|
|
+
|
|
|
String username;
|
|
|
SysUser sysUser = sysUserFeignService.queryUserById(parseInt);
|
|
|
if (roleEnum == RoleTeacher) {
|
|
@@ -805,11 +810,11 @@ public class RoomServiceImpl implements RoomService {
|
|
|
updateDisplay(roomId, userId, "", 0);
|
|
|
}
|
|
|
|
|
|
- // 删除群组用户信息
|
|
|
- roomMemberDao.deleteUserByRidAndUid(roomId, userId);
|
|
|
-
|
|
|
int roomMembers = roomMemberDao.countByRid(roomId);
|
|
|
if (roomMembers <= 0) {
|
|
|
+ // 删除群组用户信息
|
|
|
+ roomMemberDao.deleteUserByRidAndUid(roomId, userId);
|
|
|
+
|
|
|
// 删除群组信息
|
|
|
roomDao.deleteByRid(roomId);
|
|
|
// 删除白板信息
|
|
@@ -821,7 +826,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
log.info("leaveRoomSuccess dismiss the room: {}, userId: {}, role={}", roomId, userId, roleEnum.name());
|
|
|
|
|
|
} else {
|
|
|
- //roomMemberDao.deleteUserByRidAndUid(roomId, userId);
|
|
|
+ roomMemberDao.deleteUserByRidAndUid(roomId, userId);
|
|
|
|
|
|
// 获取RTC服务提供方
|
|
|
String rtcServiceProvider = Optional.ofNullable(courseSchedule.getServiceProvider()).orElse("rongCloud");
|
|
@@ -863,6 +868,22 @@ public class RoomServiceImpl implements RoomService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 异步删除房间用户
|
|
|
+ * @param roomId 房间编号
|
|
|
+ * @param userId 用户编号
|
|
|
+ */
|
|
|
+ private void asyncDeleteRoomMember(String roomId, String userId) {
|
|
|
+ Executors.newCachedThreadPool().execute(() -> {
|
|
|
+ try {
|
|
|
+ // 删除房间用户信息
|
|
|
+ roomMemberDao.deleteUserByRidAndUid(roomId, userId);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.info("leaveRoomSuccess: roomId={}, userId={}", roomId, userId, e);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 事件回调通知
|
|
|
*
|
|
|
* @param roomId 房间编号
|