shangke 1 年之前
父节点
当前提交
64fa80bcc7

+ 1 - 1
mec-im/src/main/java/com/ym/dao/RoomDao.java

@@ -18,7 +18,7 @@ import java.util.List;
 public interface RoomDao extends JpaRepository<Room, Long> {
     Room findByRid(String rid);
 
-    @Query(value = "select * from rongyun_room where rid=?1", nativeQuery = true)
+    @Query(value = "select * from rongyun_room where rid=?1 FOR UPDATE", nativeQuery = true)
     Room findByLockRid(String rid);
 
     @Modifying

+ 6 - 2
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -758,8 +758,11 @@ public class RoomServiceImpl implements RoomService {
         if (roleEnum != RoleStudent && isUserDisplay(room, userId)) {
             updateDisplay(roomId, userId, "", 0);
         }
-        if (roomMemberDao.countByRid(roomId) <= 1) {
 
+        List<String> collect = roomMemberDao.findByRid(roomId).stream()
+                .map(RoomMember::getUid).distinct().collect(Collectors.toList());
+        int roomMembers = roomMemberDao.countByRid(roomId);
+        if (roomMembers <= 1 || CollectionUtils.size(collect) <= 1) {
             // 删除群组用户信息
             roomMemberDao.deleteUserByRidAndUid(roomId, userId);
             // 删除群组信息
@@ -770,7 +773,8 @@ public class RoomServiceImpl implements RoomService {
             this.dismissImGroup(userId, roomId, courseSchedule.getServiceProvider());
             //关闭所有曲目播放
             courseScheduleStudentMusicScoreDao.closePlayStatus(courseSchedule.getId(), null, null);
-            log.info("leaveRoomSuccess dismiss the room: {},userId: {}", roomId, userId);
+            log.info("leaveRoomSuccess dismiss the room: {}, userId: {}, userIds={}, roomMembers={}, role={}", roomId, userId,
+                    JSON.toJSONString(collect), roomMembers, roleEnum.name());
         } else {
             roomMemberDao.deleteUserByRidAndUid(roomId, userId);
 

+ 13 - 1
mec-im/src/test/resources/application.yml

@@ -2,4 +2,16 @@
 # JPA配置
 spring:
   jpa:
-    show-sql: true
+    show-sql: true
+    properties:
+      hibernate:
+        show_sql: true
+        format_sql: true
+        use_sql_comments: true
+    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+
+# JPA参数打印
+logging:
+  level:
+    org.hibernate.SQL: debug
+    org.hibernate.type.descriptor.sql.BasicBinder: trace