Bladeren bron

IM网络教室调整

Eric 2 jaren geleden
bovenliggende
commit
fe6136318c

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/BasicUserInfo.java

@@ -20,6 +20,9 @@ public class BasicUserInfo {
     @ApiModelProperty(value = "用户头像", required = true)
     private String avatar;
 
+    @ApiModelProperty("IM用户ID")
+    private String imUserId;
+
     public String getAvatar() {
         return avatar;
     }
@@ -51,4 +54,12 @@ public class BasicUserInfo {
     public void setRealName(String realName) {
         this.realName = realName;
     }
+
+    public String getImUserId() {
+        return imUserId;
+    }
+
+    public void setImUserId(String imUserId) {
+        this.imUserId = imUserId;
+    }
 }

+ 12 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImNetworkRoomMember.java

@@ -72,6 +72,10 @@ public class ImNetworkRoomMember implements Serializable {
     @ApiModelProperty(value = "当前用户伴奏信息")
     private List<CourseScheduleStudentMusicSheetResult> musicSheetResults;
 
+    @TableField(exist = false)
+    @ApiModelProperty(value = "IM用户ID")
+    private String imUserId;
+
     public List<CourseScheduleStudentMusicSheetResult> getMusicSheetResults() {
         return musicSheetResults;
     }
@@ -175,5 +179,13 @@ public class ImNetworkRoomMember implements Serializable {
     public void setHandFlag(boolean handFlag) {
         this.handFlag = handFlag;
     }
+
+    public String getImUserId() {
+        return imUserId;
+    }
+
+    public void setImUserId(String imUserId) {
+        this.imUserId = imUserId;
+    }
 }
 

+ 36 - 9
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImNetworkRoomServiceImpl.java

@@ -25,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
+import java.text.MessageFormat;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -116,8 +117,16 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         }
         //课程结束后关闭教室的时间
         joinRoomResult.setAutoCloseNetworkRoomTime(sysConfigDao.findConfigValue(SysConfigConstant.DESTROY_EXPIRED_PRACTICE_ROOM_MINUTE));
+
+        // IM用户ID
+        String imUserId = sysUser.getUserId().toString();
+        if (UserRoleEnum.STUDENT == userRole) {
+            imUserId = MessageFormat.format("{0}:{1}", imUserId, ClientEnum.STUDENT.name());
+        }
+        roomMember.setImUserId(imUserId);
+
         //创建、加入群聊
-        IMApiResultInfo resultInfo = imHelper.joinGroup(new String[]{sysUser.getUserId().toString()}, roomId, roomId);
+        IMApiResultInfo resultInfo = imHelper.joinGroup(new String[]{imUserId}, roomId, roomId);
         if(resultInfo.getCode() != 200){
             log.error("加入群聊失败 resultInfo:{}",resultInfo);
         }
@@ -245,7 +254,10 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         Long roomId = customMessage.getRoomId();
         log.info("sendImPlayMidiMessage: roomId={}, userId={}", roomId, userId);
         ImNetworkMetronomeMessage displayMessage = new ImNetworkMetronomeMessage(customMessage);
-        imHelper.publishMessage(userId.toString(), roomId.toString(), displayMessage, 1);
+
+        // IM用户ID
+        String imUserId = MessageFormat.format("{0}:{1}", String.valueOf(userId), ClientEnum.STUDENT.name());
+        imHelper.publishMessage(imUserId, roomId.toString(), displayMessage, 1);
         //记录节拍器信息
         courseScheduleStudentPaymentService.getDao().adjustPlayMidi(roomId,customMessage.getUserId(),customMessage.toString());
     }
@@ -352,21 +364,27 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void controlDevice(ImNetworkDeviceControlDto deviceControl) throws Exception {
+        // 老师信息
         SysUser sysUser = sysUserService.getUser();
         String roomId = deviceControl.getRoomId();
+        // 学生信息
         Long userId = deviceControl.getUserId();
         Boolean enable = deviceControl.getEnable();
         log.info("controlDevice: roomId:{} ,deviceType:{} ,enable:{} ,userId:{}", roomId,deviceControl.getDeviceType(),enable,userId);
+
+        // IM用户ID
+        String imUserId = MessageFormat.format("{0}:{1}", String.valueOf(userId), ClientEnum.STUDENT.name());
+
         if(enable){
             long scheduleId = Long.parseLong(roomId);
             ImNetworkDeviceStateChangedMessage deviceResourceMessage = new ImNetworkDeviceStateChangedMessage(deviceControl.getDeviceType().ordinal(),enable);
-            deviceResourceMessage.setUserId(userId.toString());
+            deviceResourceMessage.setUserId(imUserId);
             switch (deviceControl.getDeviceType()) {
                 case EXAM_SONG:
                     ImNetworkRoomMusicSheetDownloadData msg = courseScheduleStudentPaymentService.getMemberExamSong(scheduleId, userId);
                     msg.setEnable(enable);
                     courseScheduleStudentPaymentService.getDao().adjustExamSong(scheduleId,userId, JSON.toJSONString(msg));
-                    imHelper.publishMessage(userId.toString(), roomId, deviceResourceMessage, 1);
+                    imHelper.publishMessage(imUserId, roomId, deviceResourceMessage, 1);
                     break;
                 case MUSIC_SHEET:
                     Integer musicSheetId = Optional.ofNullable(deviceControl.getMusicSheetAccompanimentId()).
@@ -376,7 +394,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
                     //打开原音
                     courseScheduleStudentMusicSheetService.getDao().openPlayStatus(scheduleId,musicSheetId,userId);
                     deviceResourceMessage.setMusicSheetAccompanimentId(musicSheetId);
-                    deviceResourceMessage.setUserId(userId.toString());
+                    deviceResourceMessage.setUserId(imUserId);
                     deviceResourceMessage.setSoundVolume(deviceControl.getSoundVolume());
                     imHelper.publishMessage(sysUser.getId().toString(), roomId, deviceResourceMessage, 1);
                     break;
@@ -388,7 +406,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
                     //打开伴奏
                     courseScheduleStudentMusicSheetService.getDao().openAccompanimentPlayStatus(scheduleId,musicSheetAccompanimentId,userId);
                     deviceResourceMessage.setMusicSheetAccompanimentId(musicSheetAccompanimentId);
-                    deviceResourceMessage.setUserId(userId.toString());
+                    deviceResourceMessage.setUserId(imUserId);
                     deviceResourceMessage.setSoundVolume(deviceControl.getSoundVolume());
                     imHelper.publishMessage(sysUser.getId().toString(), roomId, deviceResourceMessage, 1);
                     break;
@@ -398,7 +416,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
                     message.setType(deviceControl.getDeviceType().ordinal());
                     message.setOpUserId(sysUser.getId().toString());
                     message.setOpUserName(sysUser.getUsername());
-                    imHelper.publishMessage(sysUser.getId().toString(), userId.toString(), roomId, message);
+                    imHelper.publishMessage(sysUser.getId().toString(), imUserId, roomId, message);
                     break;
             }
         }else {
@@ -435,7 +453,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
                 imNetworkRoomMemberService.getDao().updateById(roomMember);
             }
             ImNetworkDeviceStateChangedMessage deviceResourceMessage = new ImNetworkDeviceStateChangedMessage(deviceControl.getDeviceType().ordinal(),deviceControl.getEnable());
-            deviceResourceMessage.setUserId(userId.toString());
+            deviceResourceMessage.setUserId(imUserId);
             BasicUserInfo basicUserInfo = teacherDao.getBasicUserInfo(userId);
             if (Objects.nonNull(basicUserInfo)) {
                 deviceResourceMessage.setUserName(basicUserInfo.getUsername());
@@ -524,7 +542,16 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
 
     @Override
     public List<BasicUserInfo> queryNoJoinStu(Long roomId) {
-        return courseScheduleStudentPaymentService.getDao().queryNoJoinStu(roomId);
+
+        List<BasicUserInfo> userInfos = courseScheduleStudentPaymentService.getDao().queryNoJoinStu(roomId);
+
+        for (BasicUserInfo item : userInfos) {
+
+            item.setImUserId(MessageFormat.format("{0}:{1}", String.valueOf(item.getUserId()),
+                    ClientEnum.STUDENT.name()));
+        }
+
+        return userInfos;
     }
 
     //发送设备状态同步消息