Jelajahi Sumber

Merge branch 'feature/0803-im' of http://git.dayaedu.com/yonge/cooleshow into feature/0803-im

liujc 1 tahun lalu
induk
melakukan
699b8361fa
22 mengubah file dengan 188 tambahan dan 368 penghapusan
  1. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleStudentPaymentDao.java
  2. 0 13
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImNetworkRoomMemberDao.java
  3. 14 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/BasicUserInfoDto.java
  4. 6 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ImNetworkRoomResult.java
  5. 2 104
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImNetworkHereWhite.java
  6. 6 10
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImNetworkRoomMember.java
  7. 0 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImNetworkRoomMemberStatus.java
  8. 4 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/ImNetworkDisplayEnum.java
  9. 0 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImNetworkRoomMemberService.java
  10. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImNetworkRoomMemberStatusService.java
  11. 1 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImNetworkRoomService.java
  12. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupServiceImpl.java
  13. 9 29
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImNetworkRoomMemberServiceImpl.java
  14. 6 6
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImNetworkRoomMemberStatusServiceImpl.java
  15. 61 61
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImNetworkRoomServiceImpl.java
  16. 40 39
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImServiceImpl.java
  17. 17 20
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/RoomServiceImpl.java
  18. 5 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/ImHistoryMessageWrapper.java
  19. 3 3
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml
  20. 7 41
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ImNetworkRoomMemberMapper.xml
  21. 0 17
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ImNetworkRoomMemberStatusMapper.xml
  22. 1 1
      cooleshow-user/user-classroom/src/main/java/com/yonge/cooleshow/classroom/controller/RoomController.java

+ 2 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleStudentPaymentDao.java

@@ -1,7 +1,7 @@
 package com.yonge.cooleshow.biz.dal.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.yonge.cooleshow.biz.dal.dto.BasicUserInfo;
+import com.yonge.cooleshow.biz.dal.dto.BasicUserInfoDto;
 import com.yonge.cooleshow.biz.dal.entity.CourseScheduleStudentPayment;
 import com.yonge.cooleshow.biz.dal.vo.CourseScheduleStudentPaymentVo;
 import com.yonge.cooleshow.biz.dal.vo.CourseScheduleStudentVo;
@@ -86,6 +86,6 @@ public interface CourseScheduleStudentPaymentDao extends BaseMapper<CourseSchedu
     //查询报课学员
     List<CourseScheduleStudentVo> selectUser();
 
-    List<BasicUserInfo> queryNoJoinStu(@Param("scheduleId") String scheduleId);
+    List<BasicUserInfoDto> queryNoJoinStu(@Param("scheduleId") String scheduleId);
 }
 

+ 0 - 13
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImNetworkRoomMemberDao.java

@@ -4,8 +4,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.yonge.cooleshow.biz.dal.entity.ImNetworkRoomMember;
 import org.apache.ibatis.annotations.Param;
 
-import java.util.List;
-
 /**
  * 网络教室成员(ImNetworkRoomMember)表数据库访问层
  *
@@ -14,18 +12,7 @@ import java.util.List;
  */
 public interface ImNetworkRoomMemberDao extends BaseMapper<ImNetworkRoomMember> {
 
-    int insertBatch(@Param("entities") List<ImNetworkRoomMember> entities);
-
     int insert(@Param("entity") ImNetworkRoomMember roomMember);
 
-    ImNetworkRoomMember findByRidAndUid(@Param("roomId") String roomId, @Param("userId") Long userId, @Param("userRole") Integer userRole);
-
-    List<ImNetworkRoomMember> queryByRoomId(@Param("roomId") String roomId);
-
-    void delByRidAndUid(@Param("roomId") String roomId, @Param("userId") Long userId, @Param("userRole") Integer userRole);
-
-    int countByRoomId(@Param("roomId") String roomId);
-
-    List<ImNetworkRoomMember> findByRoomAndRole(@Param("roomId") String roomId, @Param("role") int role);
 }
 

+ 14 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/BasicUserInfoDto.java

@@ -0,0 +1,14 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class BasicUserInfoDto {
+    @ApiModelProperty(value = "用户编号", required = true)
+    private String userId;
+
+    private String userName;
+
+    private String headUrl;
+}

+ 6 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ImNetworkRoomResult.java

@@ -20,13 +20,13 @@ public class ImNetworkRoomResult extends ImNetworkRoom {
     private Integer surplusTime;
 
     @ApiModelProperty(value = "房间成员列表,包含当前用户;")
-    private List<ImNetworkRoomMember> roomMemberList;
+    private List<ImNetworkRoomMember> members;
 
     @ApiModelProperty(value = "当前用户")
-    private ImNetworkRoomMember roomMember;
+    private ImNetworkRoomMember userInfo;
 
     @ApiModelProperty(value = "节拍器参数")
-    private ImNetworkMetronomeMessage midiJson = new ImNetworkMetronomeMessage();
+    private ImNetworkMetronomeMessage playMidiJson = new ImNetworkMetronomeMessage();
 
     @ApiModelProperty("RTC接入参数")
     private RTCRoomConfig rtcRoomConfig;
@@ -36,4 +36,7 @@ public class ImNetworkRoomResult extends ImNetworkRoom {
 
     @ApiModelProperty("群组id")
     private String groupId;
+
+    @ApiModelProperty("当前课程所有学员人数")
+    private Integer studentNums;
 }

+ 2 - 104
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImNetworkHereWhite.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -16,6 +17,7 @@ import java.util.Date;
  * @author zx
  * @since 2022-06-13 18:16:23
  */
+@Data
 @ApiModel(value = "im_network_here_white")
 public class ImNetworkHereWhite implements Serializable {
     @TableId(value = "id_", type = IdType.AUTO)
@@ -71,109 +73,5 @@ public class ImNetworkHereWhite implements Serializable {
     private Date createdAt;
 
 
-    public Integer getId() {
-        return id;
-    }
-
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    public Long getCourseScheduleId() {
-        return courseScheduleId;
-    }
-
-    public void setCourseScheduleId(Long courseScheduleId) {
-        this.courseScheduleId = courseScheduleId;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public Integer getLimit() {
-        return limit;
-    }
-
-    public void setLimit(Integer limit) {
-        this.limit = limit;
-    }
-
-    public Integer getTeamId() {
-        return teamId;
-    }
-
-    public void setTeamId(Integer teamId) {
-        this.teamId = teamId;
-    }
-
-    public Integer getAdminId() {
-        return adminId;
-    }
-
-    public void setAdminId(Integer adminId) {
-        this.adminId = adminId;
-    }
-
-    public String getMode() {
-        return mode;
-    }
-
-    public void setMode(String mode) {
-        this.mode = mode;
-    }
-
-    public String getTemplate() {
-        return template;
-    }
-
-    public void setTemplate(String template) {
-        this.template = template;
-    }
-
-    public String getRegion() {
-        return region;
-    }
-
-    public void setRegion(String region) {
-        this.region = region;
-    }
-
-    public String getRoomToken() {
-        return roomToken;
-    }
-
-    public void setRoomToken(String roomToken) {
-        this.roomToken = roomToken;
-    }
-
-    public String getUuid() {
-        return uuid;
-    }
-
-    public void setUuid(String uuid) {
-        this.uuid = uuid;
-    }
-
-    public Date getUpdatedAt() {
-        return updatedAt;
-    }
-
-    public void setUpdatedAt(Date updatedAt) {
-        this.updatedAt = updatedAt;
-    }
-
-    public Date getCreatedAt() {
-        return createdAt;
-    }
-
-    public void setCreatedAt(Date createdAt) {
-        this.createdAt = createdAt;
-    }
-
 }
 

+ 6 - 10
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImNetworkRoomMember.java

@@ -32,8 +32,8 @@ public class ImNetworkRoomMember implements Serializable {
     private String roomId;
 
     @TableField("user_id_")
-    @ApiModelProperty(value = "用户编号")
-    private Long userId;
+    @ApiModelProperty(value = "转换后的第三方用户编号")
+    private String userId;
 
     @TableField("username_")
     @ApiModelProperty(value = "用户名")
@@ -53,26 +53,22 @@ public class ImNetworkRoomMember implements Serializable {
 
     @TableField("camera_flag_")
     @ApiModelProperty(value = "是否开启摄像头;")
-    private boolean cameraFlag;
+    private boolean camera;
 
     @TableField("mic_flag_")
     @ApiModelProperty(value = "是否开启麦克风")
-    private boolean micFlag;
+    private boolean microphone;
 
     @TableField("music_mode_flag_")
     @ApiModelProperty(value = "是否开启音乐模式")
-    private boolean musicModeFlag;
+    private boolean musicModeOn;
 
     @TableField("hand_flag_")
     @ApiModelProperty(value = "是否举手")
-    private boolean handFlag;
+    private boolean handUpOn;
 
     @ApiModelProperty(value = "当前用户伴奏信息")
     @TableField(exist = false)
     private List<CourseScheduleStudentMusicSheetResult> musicSheetResults;
-
-    @TableField("im_user_id_")
-    @ApiModelProperty(value = "IM用户ID")
-    private String imUserId;
 }
 

+ 0 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImNetworkRoomMemberStatus.java

@@ -29,10 +29,6 @@ public class ImNetworkRoomMemberStatus implements Serializable {
 	@TableField(value = "room_id_")
     private String roomId;
 
-    @ApiModelProperty("用户编号") 
-	@TableField(value = "user_id_")
-    private String userId;
-
     @TableField(value = "im_user_id_")
     @ApiModelProperty(value = "IM用户ID")
     private String imUserId;

+ 4 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/ImNetworkDisplayEnum.java

@@ -7,8 +7,11 @@ package com.yonge.cooleshow.biz.dal.enums;
 // 4 时,清空当前 room 的 display
 
 import com.yonge.toolset.base.enums.BaseEnum;
+import lombok.Getter;
 
+@Getter
 public enum ImNetworkDisplayEnum implements BaseEnum<String, ImNetworkDisplayEnum> {
+    ASSISTANT("助教"),
     TEACHER("老师"),
     WHITE_BOARD("白板"),
     SCREEN("屏幕"),
@@ -16,7 +19,7 @@ public enum ImNetworkDisplayEnum implements BaseEnum<String, ImNetworkDisplayEnu
     NONE("清空"),
     STUDENT("学员");
 
-    private String msg;
+    private final String msg;
 
     ImNetworkDisplayEnum(String msg) {
         this.msg = msg;
@@ -27,7 +30,4 @@ public enum ImNetworkDisplayEnum implements BaseEnum<String, ImNetworkDisplayEnu
         return this.name();
     }
 
-    public String getMsg() {
-        return msg;
-    }
 }

+ 0 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImNetworkRoomMemberService.java

@@ -1,14 +1,11 @@
 package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.ImNetworkRoomMemberDao;
 import com.yonge.cooleshow.biz.dal.dto.BasicUserInfo;
 import com.yonge.cooleshow.biz.dal.entity.ImNetworkRoomMember;
 import com.yonge.cooleshow.biz.dal.enums.RoleEnum;
-import com.yonge.cooleshow.biz.dal.enums.UserRoleEnum;
 
-import java.util.Date;
 import java.util.List;
 
 /**
@@ -24,7 +21,5 @@ public interface ImNetworkRoomMemberService extends IService<ImNetworkRoomMember
     //初始化房间用户信息
     ImNetworkRoomMember initRoomMember(String roomId, BasicUserInfo sysUser, RoleEnum userRole,Boolean microphone);
 
-    //获取房间用户列表
-    List<ImNetworkRoomMember> queryByRoomId(String roomId);
 }
 

+ 2 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImNetworkRoomMemberStatusService.java

@@ -15,8 +15,8 @@ public interface ImNetworkRoomMemberStatusService extends IService<ImNetworkRoom
     void add(ImNetworkRoomMember roomMember);
 
     //获取网络教室成员midi
-    ImNetworkMetronomeMessage getMemberMidi(String roomId, Long userId);
+    ImNetworkMetronomeMessage getMemberMidi(ImNetworkRoomMember roomMember);
 
     //获取伴奏信息
-    ImNetworkRoomMusicSheetDownloadData getMemberExamSong(String roomId, Long userId);
+    ImNetworkRoomMusicSheetDownloadData getMemberExamSong(String roomId, String imUserId);
 }

+ 1 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImNetworkRoomService.java

@@ -5,9 +5,7 @@ import com.yonge.cooleshow.biz.dal.dao.ImNetworkRoomDao;
 import com.yonge.cooleshow.biz.dal.dto.*;
 import com.yonge.cooleshow.biz.dal.entity.ImNetworkRoom;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
-import com.yonge.cooleshow.biz.dal.enums.UserRoleEnum;
 import com.yonge.cooleshow.common.entity.BaseResponse;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
 
 import java.util.List;
 
@@ -63,6 +61,6 @@ public interface ImNetworkRoomService extends IService<ImNetworkRoom> {
     void deviceStatusSync(ImNetworkDeviceControlDto deviceStatusSync) throws Exception;
 
     //查询不在教室的学员
-    List<BasicUserInfo> queryNoJoinStu(String roomId);
+    List<BasicUserInfoDto> queryNoJoinStu(String roomId);
 }
 

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupServiceImpl.java

@@ -808,6 +808,8 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
                 privateImportMessage.setTencentMessageBody(list);
                 try {
                     imPluginContext.getPluginService().importPrivateMessage(privateImportMessage);
+                    //为已导入数据更改标识
+                    imGroupService.updateStatus(info);
                 } catch (Exception e) {
                     log.error("导入私聊IM消息失败 msg:{}",list,e);
                 }
@@ -817,7 +819,6 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
                 List<MessageWrapper.GroupImportMessageData> list = new ArrayList<>();
                 MessageWrapper.GroupImportMessageData data1 = new MessageWrapper.GroupImportMessageData();
                 List<TencentRequest.MessageBody> bodyList = new ArrayList<>();
-                TencentRequest.MessageBody body = new TencentRequest.MessageBody();
                 //设置群组Id
                 groupImportMessage.setGroupId(i.getGroupId());
                 //设置发送人

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

@@ -4,21 +4,16 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.biz.dal.dao.ImNetworkRoomMemberDao;
 import com.yonge.cooleshow.biz.dal.dto.BasicUserInfo;
 import com.yonge.cooleshow.biz.dal.entity.ImNetworkRoomMember;
-import com.yonge.cooleshow.biz.dal.entity.ImNetworkRoomMemberStatus;
-import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.RoleEnum;
-import com.yonge.cooleshow.biz.dal.enums.UserRoleEnum;
 import com.yonge.cooleshow.biz.dal.service.ImGroupService;
 import com.yonge.cooleshow.biz.dal.service.ImNetworkRoomMemberService;
 import com.yonge.cooleshow.biz.dal.service.ImNetworkRoomMemberStatusService;
-import com.yonge.cooleshow.common.enums.EStatus;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.List;
 import java.util.Objects;
 
 /**
@@ -46,41 +41,26 @@ public class ImNetworkRoomMemberServiceImpl extends ServiceImpl<ImNetworkRoomMem
     @Override
     @Transactional(rollbackFor = Exception.class)
     public ImNetworkRoomMember initRoomMember(String roomId, BasicUserInfo sysUser, RoleEnum userRole,Boolean microphone) {
-        ImNetworkRoomMember roomMember = baseMapper.findByRidAndUid(roomId, sysUser.getUserId(), userRole.ordinal());
+        sysUser.setImUserId(imGroupService.getImUserId(sysUser.getUserId(),userRole));
+        ImNetworkRoomMember roomMember = this.lambdaQuery().eq(ImNetworkRoomMember::getRoomId,roomId)
+                .eq(ImNetworkRoomMember::getUserId,sysUser.getImUserId())
+                .eq(ImNetworkRoomMember::getRole,userRole.getValue()).last("LIMIT 1").one();
         if(Objects.isNull(roomMember)){
             roomMember = new ImNetworkRoomMember();
             roomMember.setRoomId(roomId);
-            roomMember.setCameraFlag(true);
-            roomMember.setHandFlag(false);
-            roomMember.setMicFlag(microphone);
-            roomMember.setMusicModeFlag(false);
+            roomMember.setCamera(true);
+            roomMember.setHandUpOn(false);
+            roomMember.setMicrophone(microphone);
+            roomMember.setMusicModeOn(false);
             roomMember.setRole(userRole.getValue());
-            roomMember.setUserId(sysUser.getUserId());
             roomMember.setUsername(sysUser.getUsername());
             roomMember.setAvatar(sysUser.getAvatar());
-            roomMember.setImUserId(imGroupService.getImUserId(sysUser.getUserId(),userRole));
+            roomMember.setUserId(sysUser.getImUserId());
             baseMapper.insert(roomMember);
             //生成用户房间状态表
             imNetworkRoomMemberStatusService.add(roomMember);
         }
         return roomMember;
     }
-
-    @Override
-    public List<ImNetworkRoomMember> queryByRoomId(String roomId) {
-        //获取房间所有成员
-        List<ImNetworkRoomMember> roomMemberList = baseMapper.queryByRoomId(roomId);
-        for (ImNetworkRoomMember item : roomMemberList) {
-            if (EStatus.ENABLE.match(item.getRole())) {
-                // 老师
-                item.setImUserId(imGroupService.getImUserId(String.valueOf(item.getUserId()),ClientEnum.TEACHER.name()));
-            } else {
-                // 学生
-                item.setImUserId(imGroupService.getImUserId(String.valueOf(item.getUserId()),ClientEnum.STUDENT.name()));
-            }
-        }
-        return roomMemberList;
-    }
-
 }
 

+ 6 - 6
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImNetworkRoomMemberStatusServiceImpl.java

@@ -27,14 +27,14 @@ public class ImNetworkRoomMemberStatusServiceImpl extends ServiceImpl<ImNetworkR
         ImNetworkRoomMemberStatus roomMemberStatus = new ImNetworkRoomMemberStatus();
         roomMemberStatus.setRoomId(roomMember.getRoomId());
         roomMemberStatus.setRole(roomMember.getRole());
-        roomMemberStatus.setImUserId(roomMember.getImUserId());
+        roomMemberStatus.setImUserId(roomMember.getUserId());
         baseMapper.insert(roomMemberStatus);
     }
 
     @Override
-    public ImNetworkMetronomeMessage getMemberMidi(String roomId, Long userId) {
-        String midi = this.lambdaQuery().eq(ImNetworkRoomMemberStatus::getRoomId,roomId)
-                .eq(ImNetworkRoomMemberStatus::getUserId,userId).last("LIMIT 1").one().getPlayMidi();
+    public ImNetworkMetronomeMessage getMemberMidi(ImNetworkRoomMember roomMember) {
+        String midi = this.lambdaQuery().eq(ImNetworkRoomMemberStatus::getRoomId,roomMember.getRoomId())
+                .eq(ImNetworkRoomMemberStatus::getImUserId,roomMember.getUserId()).last("LIMIT 1").one().getPlayMidi();
         if(StringUtils.isNotEmpty(midi)){
             return JSONObject.parseObject(midi, ImNetworkMetronomeMessage.class);
         }
@@ -42,9 +42,9 @@ public class ImNetworkRoomMemberStatusServiceImpl extends ServiceImpl<ImNetworkR
     }
 
     @Override
-    public ImNetworkRoomMusicSheetDownloadData getMemberExamSong(String roomId, Long userId) {
+    public ImNetworkRoomMusicSheetDownloadData getMemberExamSong(String roomId, String imUserId) {
         String musicSheet = this.lambdaQuery().eq(ImNetworkRoomMemberStatus::getRoomId,roomId)
-                .eq(ImNetworkRoomMemberStatus::getUserId,userId).last("LIMIT 1").one().getMusicSheetDownloadJson();
+                .eq(ImNetworkRoomMemberStatus::getImUserId,imUserId).last("LIMIT 1").one().getMusicSheetDownloadJson();
         if(StringUtils.isNotEmpty(musicSheet)){
             return JSONObject.parseObject(musicSheet, ImNetworkRoomMusicSheetDownloadData.class);
         }

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

@@ -1,32 +1,20 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.google.common.collect.Lists;
-import com.microsvc.toolkit.middleware.rtc.RTCRoomPluginContext;
-import com.microsvc.toolkit.middleware.rtc.RTCRoomPluginService;
-import com.microsvc.toolkit.middleware.rtc.enums.EMemberAction;
-import com.microsvc.toolkit.middleware.rtc.impl.TencentCloudRTCPlugin;
-import com.microsvc.toolkit.middleware.rtc.message.ImGroupMemberWrapper;
-import com.microsvc.toolkit.middleware.rtc.message.RTCRoomConfig;
-import com.microsvc.toolkit.middleware.rtc.message.RTCRoomMessage;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.ImNetworkRoomDao;
-import com.yonge.cooleshow.biz.dal.dao.ImNetworkRoomMemberDao;
 import com.yonge.cooleshow.biz.dal.dao.SysConfigDao;
 import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
 import com.yonge.cooleshow.biz.dal.dto.*;
 import com.yonge.cooleshow.biz.dal.entity.*;
-import com.yonge.cooleshow.biz.dal.enums.*;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.ImNetworkDeviceTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.RoleEnum;
 import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.support.IMHelper;
-import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.entity.BaseResponse;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.cooleshow.common.enums.EStatus;
 import com.yonge.cooleshow.common.enums.ErrorEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.utils.date.DateUtil;
@@ -41,10 +29,8 @@ 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.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -125,13 +111,12 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         //定时销毁房间
         //初始化房间用户信息
         ImNetworkRoomMember roomMember = imNetworkRoomMemberService.initRoomMember(roomId,sysUser,userRole,!courseSchedule.getMuteAll());
-        joinRoomResult.setRoomMember(roomMember);
+        joinRoomResult.setUserInfo(roomMember);
         //获取教室剩余时长
         joinRoomResult.setSurplusTime(DateUtil.secondsBetween(now, courseSchedule.getEndTime()));
         //获取房间所有成员
-        List<ImNetworkRoomMember> roomMemberList = imNetworkRoomMemberService.queryByRoomId(roomId);
-
-        joinRoomResult.setRoomMemberList(roomMemberList);
+        List<ImNetworkRoomMember> roomMemberList = imNetworkRoomMemberService.lambdaQuery().eq(ImNetworkRoomMember::getRoomId,roomId).list();
+        joinRoomResult.setMembers(roomMemberList);
         //如果是老师,
         if(userRole == RoleEnum.RoleTeacher){
             //重置节拍器数据
@@ -141,7 +126,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
             setMusicSheetList(roomMemberList,Long.parseLong(roomId));
         }else {
             //获取节拍器信息
-            joinRoomResult.setMidiJson(imNetworkRoomMemberStatusService.getMemberMidi(roomId, sysUser.getUserId()));
+            joinRoomResult.setPlayMidiJson(imNetworkRoomMemberStatusService.getMemberMidi(roomMember));
         }
         //课程结束后关闭教室的时间
         joinRoomResult.setAutoCloseNetworkRoomTime(sysConfigDao.findConfigValue(SysConfigConstant.DESTROY_EXPIRED_PRACTICE_ROOM_MINUTE));
@@ -154,11 +139,13 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
                 courseScheduleStudentPaymentService.lambdaQuery().eq(CourseScheduleStudentPayment::getCourseId,roomId).list();
         List<Long> studentIds = studentPayments.stream().map(CourseScheduleStudentPayment::getUserId).collect(Collectors.toList());
         //创建并加入群组
+        basicUserInfo.setImUserId(imGroupService.getImUserId(basicUserInfo.getUserId(),RoleEnum.RoleTeacher));
         imGroupService.joinImGroup(roomId, basicUserInfo,
                 courseSchedule.getServiceProvider(), studentIds);
         //获取腾讯所需基本信息配置
         joinRoomResult.setRtcRoomConfig(roomService.getRtcRoomConfig(courseSchedule.getServiceProvider(),roomMember));
         joinRoomResult.setGroupId(roomId);
+        joinRoomResult.setStudentNums(studentIds.size());
         return BaseResponse.success(joinRoomResult);
     }
 
@@ -176,8 +163,6 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
             userRole = RoleEnum.RoleTeacher;
         }
         log.info("joinRoom params:roomId:{},userRole:{},userId:{}",roomId,userRole,userId);
-        BasicUserInfo sysUser = Optional.ofNullable(teacherDao.getBasicUserInfo(userId)).
-                orElseThrow(()-> new BizException("用户信息不存在"));
 
         ImNetworkRoomResult joinRoomResult = new ImNetworkRoomResult();
         //初始化房间信息
@@ -188,28 +173,29 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         BeanUtils.copyProperties(room,joinRoomResult);
         //定时销毁房间
         //初始化房间用户信息
+        String imUserId = imGroupService.getImUserId(userId, userRole);
         ImNetworkRoomMember roomMember = imNetworkRoomMemberService.lambdaQuery().eq(ImNetworkRoomMember::getRoomId,roomId)
-                .eq(ImNetworkRoomMember::getUserId,userId).last("LIMIT 1").one();
-        joinRoomResult.setRoomMember(roomMember);
+                .eq(ImNetworkRoomMember::getUserId,imUserId).last("LIMIT 1").one();
+        joinRoomResult.setUserInfo(roomMember);
         //获取教室剩余时长
         joinRoomResult.setSurplusTime(DateUtil.secondsBetween(new Date(), courseSchedule.getEndTime()));
         //获取房间所有成员
-        List<ImNetworkRoomMember> roomMemberList = imNetworkRoomMemberService.queryByRoomId(roomId);
-
-        joinRoomResult.setRoomMemberList(roomMemberList);
+        List<ImNetworkRoomMember> roomMemberList = imNetworkRoomMemberService.lambdaQuery().eq(ImNetworkRoomMember::getRoomId,roomId).list();
+        joinRoomResult.setMembers(roomMemberList);
         //如果是老师,
         if(userRole == RoleEnum.RoleTeacher){
             //获取所有学员的伴奏下载详情
             setMusicSheetList(roomMemberList,Long.parseLong(roomId));
         }else {
             //获取节拍器信息
-            joinRoomResult.setMidiJson(imNetworkRoomMemberStatusService.getMemberMidi(roomId, sysUser.getUserId()));
+            joinRoomResult.setPlayMidiJson(imNetworkRoomMemberStatusService.getMemberMidi(roomMember));
         }
         //课程结束后关闭教室的时间
         joinRoomResult.setAutoCloseNetworkRoomTime(sysConfigDao.findConfigValue(SysConfigConstant.DESTROY_EXPIRED_PRACTICE_ROOM_MINUTE));
         //获取腾讯所需基本信息配置
         joinRoomResult.setRtcRoomConfig(roomService.getRtcRoomConfig(courseSchedule.getServiceProvider(),roomMember));
         joinRoomResult.setGroupId(roomId);
+        joinRoomResult.setStudentNums(courseScheduleStudentPaymentService.lambdaQuery().eq(CourseScheduleStudentPayment::getCourseId,roomId).count());
         return BaseResponse.success(joinRoomResult);
     }
 
@@ -221,8 +207,9 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
             Map<Long, List<CourseScheduleStudentMusicSheetResult>> musicSheetResultMap = musicSheetResults.stream().
                     collect(Collectors.groupingBy(CourseScheduleStudentMusicSheet::getUserId));
             roomMemberList.forEach(e -> {
-                if (musicSheetResultMap.containsKey(e.getUserId())) {
-                    e.setMusicSheetResults(musicSheetResultMap.get(e.getUserId()));
+                Long userId = Long.parseLong(imGroupService.analysisImUserId(e.getUserId()));
+                if (musicSheetResultMap.containsKey(userId)) {
+                    e.setMusicSheetResults(musicSheetResultMap.get(userId));
                 }
             });
         }
@@ -265,19 +252,20 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void joinRoomFailure(String roomId, ClientEnum clientType) {
-
         // 当前登录用户ID
         Long userId = sysUserService.getUserId();
         log.info("joinRoomFailure: roomId={}, userId={}", roomId, userId);
 
         // 网络教室用户身份
-        UserRoleEnum userRole = UserRoleEnum.TEACHER;
+        RoleEnum userRole = RoleEnum.RoleTeacher;
         if (ClientEnum.STUDENT == clientType) {
-            userRole = UserRoleEnum.STUDENT;
+            userRole = RoleEnum.RoleStudent;
         }
-
         // 删除网络教室学员
-        imNetworkRoomMemberService.getDao().delByRidAndUid(roomId, userId, userRole.ordinal());
+        String imUserId = imGroupService.getImUserId(userId, userRole);
+        imNetworkRoomMemberService.lambdaUpdate().eq(ImNetworkRoomMember::getRoomId,roomId)
+                .eq(ImNetworkRoomMember::getUserId,imUserId)
+                        .eq(ImNetworkRoomMember::getRole,userRole.getValue()).remove();
     }
 
     @Override
@@ -287,8 +275,11 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         Long userId = Long.parseLong(imGroupService.analysisImUserId(imUserId));
         // 客户端类型
         ClientEnum clientType = ClientEnum.valueOf(imGroupService.analysisImUserClient(imUserId));
-        // 客户端类型
-        UserRoleEnum userRole = UserRoleEnum.convert(clientType);
+        // 网络教室用户身份
+        RoleEnum userRole = RoleEnum.RoleTeacher;
+        if (ClientEnum.STUDENT == clientType) {
+            userRole = RoleEnum.RoleStudent;
+        }
         log.info("quitRoomSuccess: roomId={}, userId={}", roomId, userId);
         //防止幂等
         String QUIT_ROOM_SUCCESS = "quitRoomSuccess:";
@@ -297,8 +288,11 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
             log.info("quitRoomSuccess break: roomId={}, userId={}", roomId, userId);
             return;
         }
-
-        ImNetworkRoomMember roomMember = imNetworkRoomMemberService.getDao().findByRidAndUid(roomId, userId, userRole.ordinal());
+        ImNetworkRoomMember roomMember = imNetworkRoomMemberService.lambdaQuery()
+                .eq(ImNetworkRoomMember::getUserId, userId)
+                .eq(ImNetworkRoomMember::getRoomId, roomId)
+                .eq(ImNetworkRoomMember::getRole, userRole.getValue())
+                .last("LIMIT 1").one();
         if(Objects.isNull(roomMember)){
             return;
         }
@@ -316,7 +310,8 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
             studentAttendanceService.signOut(userId,courseSchedule);
         }
 
-        if (roleEnum == RoleEnum.RoleTeacher || imNetworkRoomMemberService.getDao().countByRoomId(roomId) <= 1){
+        if (roleEnum == RoleEnum.RoleTeacher ||
+                imNetworkRoomMemberService.lambdaQuery().eq(ImNetworkRoomMember::getRoomId,roomId).count() <= 1){
             //如果老师退出房间,初始化节拍器和伴奏播放配置
             courseScheduleStudentMusicSheetService.getDao().closePlayStatus(courseScheduleId,null);
         }
@@ -338,7 +333,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
                 .map(x -> x.split(":")[0]).collect(Collectors.joining(","));
         imNetworkRoomMemberStatusService.lambdaUpdate()
                         .eq(ImNetworkRoomMemberStatus::getRoomId,customMessage.getRoomId())
-                                .in(ImNetworkRoomMemberStatus::getUserId,collect)
+                                .in(ImNetworkRoomMemberStatus::getImUserId,collect)
                                         .set(ImNetworkRoomMemberStatus::getPlayMidi,customMessage.getContent());
     }
 
@@ -417,10 +412,12 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
                 }
 
             }else {
-                List<ImNetworkRoomMember> roomMembers = imNetworkRoomMemberService.getDao().findByRoomAndRole(deviceControl.getRoomId(), 0);
+                List<ImNetworkRoomMember> roomMembers = imNetworkRoomMemberService.lambdaQuery()
+                        .eq(ImNetworkRoomMember::getRoomId,deviceControl.getRoomId())
+                        .eq(ImNetworkRoomMember::getRole,RoleEnum.RoleStudent.getValue()).list();
                 if (!CollectionUtils.isEmpty(roomMembers)) {
                     for (ImNetworkRoomMember roomMember : roomMembers) {
-                        deviceControl.setImUserId(imGroupService.getImUserId(String.valueOf(roomMember.getUserId()), ClientEnum.STUDENT.name()));
+                        deviceControl.setImUserId(roomMember.getUserId());
                         controlDevice(deviceControl);
                     }
                 }
@@ -485,18 +482,21 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
     @Transactional(rollbackFor = Exception.class)
     public void approveControlDevice(ImNetworkDeviceControlDto deviceControl) throws Exception {
         log.info("approveControlDevice: roomId:{} ,deviceType:{} ,enable:{}", deviceControl.getRoomId(),deviceControl.getDeviceType(),deviceControl.getEnable());
-        UserRoleEnum userRole = UserRoleEnum.TEACHER;
+        RoleEnum userRole = RoleEnum.RoleTeacher;
         if (ClientEnum.STUDENT == deviceControl.getClientType()) {
-            userRole = UserRoleEnum.STUDENT;
+            userRole = RoleEnum.RoleStudent;
         }
-        ImNetworkRoomMember roomMember = Optional.ofNullable(imNetworkRoomMemberService.getDao().findByRidAndUid(deviceControl.getRoomId(),sysUserService.getUserId(),
-                        userRole.ordinal())).
+        Long userId = sysUserService.getUserId();
+        String imUserId = imGroupService.getImUserId(userId, userRole);
+        ImNetworkRoomMember roomMember = Optional.ofNullable(imNetworkRoomMemberService.lambdaQuery().eq(ImNetworkRoomMember::getRoomId,deviceControl.getRoomId())
+                        .eq(ImNetworkRoomMember::getUserId,imUserId)
+                        .eq(ImNetworkRoomMember::getRole,userRole.getValue()).last("LIMIT 1").one()).
                 orElseThrow(()-> new BizException("用户不在房间内"));
         CourseSchedule courseSchedule = courseScheduleService.getById(deviceControl.getRoomId());
         deviceControl.setServiceProvider(courseSchedule.getServiceProvider());
 
         imService.pushApproveControlDevice(deviceControl,roomMember,
-                teacherDao.getBasicUserInfo(roomMember.getUserId()),
+                teacherDao.getBasicUserInfo(userId),
                 teacherDao.getBasicUserInfo(courseSchedule.getTeacherId()));
     }
 
@@ -506,26 +506,26 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         log.info("deviceStatusSync: enable:{} ,roomId:{} ,deviceType:{}", deviceStatusSync.getEnable(),deviceStatusSync.getRoomId(),deviceStatusSync.getDeviceType());
         SysUser user = sysUserService.getUser();
         Long userId = user.getId();
-
-        UserRoleEnum userRole = UserRoleEnum.TEACHER;
+        RoleEnum userRole = RoleEnum.RoleTeacher;
         if (ClientEnum.STUDENT == deviceStatusSync.getClientType()) {
-            userRole = UserRoleEnum.STUDENT;
+            userRole = RoleEnum.RoleStudent;
         }
 
         CourseSchedule courseSchedule = courseScheduleService.getById(deviceStatusSync.getRoomId());
         deviceStatusSync.setServiceProvider(courseSchedule.getServiceProvider());
-        ImNetworkRoomMember roomMember = Optional.ofNullable(imNetworkRoomMemberService.getDao().
-                        findByRidAndUid(deviceStatusSync.getRoomId(), userId, userRole.ordinal()))
-                .orElseThrow(()-> new BizException("用户不在房间内"));
+        String imUserId = imGroupService.getImUserId(userId, userRole);
+        ImNetworkRoomMember roomMember = Optional.ofNullable(imNetworkRoomMemberService.lambdaQuery().eq(ImNetworkRoomMember::getRoomId,deviceStatusSync.getRoomId())
+                        .eq(ImNetworkRoomMember::getUserId,imUserId)
+                        .eq(ImNetworkRoomMember::getRole,userRole.getValue()).last("LIMIT 1").one()).
+                orElseThrow(()-> new BizException("用户不在房间内"));
         imService.sendDeviceStatusSync(deviceStatusSync,roomMember);
     }
 
     @Override
-    public List<BasicUserInfo> queryNoJoinStu(String roomId) {
-        List<BasicUserInfo> userInfos = courseScheduleStudentPaymentService.getDao().queryNoJoinStu(roomId);
-
-        for (BasicUserInfo item : userInfos) {
-            item.setImUserId(imGroupService.getImUserId(String.valueOf(item.getUserId()),ClientEnum.STUDENT.name()));
+    public List<BasicUserInfoDto> queryNoJoinStu(String roomId) {
+        List<BasicUserInfoDto> userInfos = courseScheduleStudentPaymentService.getDao().queryNoJoinStu(roomId);
+        for (BasicUserInfoDto item : userInfos) {
+            item.setUserId(imGroupService.getImUserId(item.getUserId(),ClientEnum.STUDENT.name()));
         }
         return userInfos;
     }

+ 40 - 39
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImServiceImpl.java

@@ -68,17 +68,16 @@ public class ImServiceImpl implements ImService {
             RTCRoomMessage.MessageContent.MessageContentBuilder action = RTCRoomMessage.MessageContent.builder()
                     .action(EMemberAction.JOIN.getValue());
 
-            action.handUpOn(roomMember.isHandFlag())
-                    .microphone(roomMember.isMicFlag())
+            action.handUpOn(roomMember.isHandUpOn())
+                    .microphone(roomMember.isMicrophone())
                     .timestamp(new Date().getTime())
-                    .camera(roomMember.isCameraFlag())
+                    .camera(roomMember.isCamera())
                     .role(roomMember.getRole())
-                    .microphone(roomMember.isMicFlag())
                     .sendUserInfo(this.getSendUser(roomMember));
 
             RTCRoomMessage roomMessage = RTCRoomMessage.builder()
                     .objectName(RTCRoomMessage.MEMBER_CHANGE_MESSAGE)
-                    .fromUserId(roomMember.getImUserId())
+                    .fromUserId(roomMember.getUserId())
                     .content(action.build())
                     .toChatRoomId(roomMember.getRoomId())
                     .isPersisted(1)
@@ -89,12 +88,12 @@ public class ImServiceImpl implements ImService {
         } else {
             ImNetworkRoomMemberChangedMessage msg = new ImNetworkRoomMemberChangedMessage(roomMember, ImNetworkRoomMemberChangedEnum.JOIN);
             //获取节拍器信息
-            ImNetworkMetronomeMessage imNetworkCustomMessage = imNetworkRoomMemberStatusService.getMemberMidi(roomMember.getRoomId(), roomMember.getUserId());
+            ImNetworkMetronomeMessage imNetworkCustomMessage = imNetworkRoomMemberStatusService.getMemberMidi(roomMember);
             msg.setMetronomeSwitch(imNetworkCustomMessage.getEnable());
             //获取伴奏信息
             ImNetworkRoomMusicSheetDownloadData musicSheetDownloadData = imNetworkRoomMemberStatusService.getMemberExamSong(roomMember.getRoomId(), roomMember.getUserId());
             msg.setExamSongSwitch(musicSheetDownloadData.getEnable());
-            imHelper.publishMessage(roomMember.getImUserId(), roomMember.getRoomId(), msg);
+            imHelper.publishMessage(roomMember.getUserId(), roomMember.getRoomId(), msg);
         }
     }
 
@@ -156,14 +155,14 @@ public class ImServiceImpl implements ImService {
                     .objectName(RTCRoomMessage.PLAY_MIDI_MESSAGE)
                     .content(messageContent)
                     .toChatRoomId(roomMember.getRoomId())
-                    .fromUserId(roomMember.getImUserId())
+                    .fromUserId(roomMember.getUserId())
                     .isIncludeSender(1)
                     .isPersisted(1)
                     .build();
 
             pluginService.sendChatRoomMessage(roomMessage);
         } else {
-            imHelper.publishMessage(roomMember.getImUserId(), roomMember.getRoomId(), playMidiMessage, 1);
+            imHelper.publishMessage(roomMember.getUserId(), roomMember.getRoomId(), playMidiMessage, 1);
         }
     }
 
@@ -234,18 +233,17 @@ public class ImServiceImpl implements ImService {
                 .isPersisted(1)
                 .isIncludeSender(0)
                 .build();
-        String userId = imGroupService.analysisImUserId(deviceControl.getImUserId());
 
         if(deviceControl.getEnable()){
             ImNetworkDeviceStateChangedMessage deviceResourceMessage = new ImNetworkDeviceStateChangedMessage(deviceControl.getDeviceType().ordinal(),true);
             deviceResourceMessage.setUserId(deviceControl.getImUserId());
             switch (deviceControl.getDeviceType()) {
                 case EXAM_SONG:
-                    ImNetworkRoomMusicSheetDownloadData msg = imNetworkRoomMemberStatusService.getMemberExamSong(roomId, Long.parseLong(userId));
+                    ImNetworkRoomMusicSheetDownloadData msg = imNetworkRoomMemberStatusService.getMemberExamSong(roomId, deviceControl.getImUserId());
                     msg.setEnable(true);
                     imNetworkRoomMemberStatusService.lambdaUpdate()
                                     .eq(ImNetworkRoomMemberStatus::getRoomId,roomId)
-                                            .eq(ImNetworkRoomMemberStatus::getUserId,userId)
+                                            .eq(ImNetworkRoomMemberStatus::getImUserId,deviceControl.getImUserId())
                                                     .set(ImNetworkRoomMemberStatus::getMusicSheetDownloadJson,JSON.toJSONString(msg)).update();
 
                     // 消息发送
@@ -287,27 +285,30 @@ public class ImServiceImpl implements ImService {
                     break;
             }
         }else {
-            ImNetworkRoomMember roomMember = Optional.ofNullable(imNetworkRoomMemberService.getDao().findByRidAndUid(roomId, Long.parseLong(userId), UserRoleEnum.STUDENT.ordinal()))
+            ImNetworkRoomMember roomMember = Optional.ofNullable(imNetworkRoomMemberService.lambdaQuery()
+                            .eq(ImNetworkRoomMember::getRoomId,roomId)
+                    .eq(ImNetworkRoomMember::getUserId,deviceControl.getImUserId())
+                    .eq(ImNetworkRoomMember::getRole,RoleEnum.RoleStudent.getValue()).last("LIMIT 1").one())
                     .orElseThrow(()-> new BizException("用户不在房间内"));
             switch (deviceControl.getDeviceType()) {
                 case CAMERA:
-                    roomMember.setCameraFlag(deviceControl.getEnable());
+                    roomMember.setCamera(deviceControl.getEnable());
                     break;
                 case MICROPHONE:
-                    roomMember.setMicFlag(deviceControl.getEnable());
+                    roomMember.setMicrophone(deviceControl.getEnable());
                     break;
                 case HAND_UP:
-                    roomMember.setHandFlag(deviceControl.getEnable());
+                    roomMember.setHandUpOn(deviceControl.getEnable());
                     break;
                 case MUSIC_MODE:
-                    roomMember.setMusicModeFlag(deviceControl.getEnable());
+                    roomMember.setMusicModeOn(deviceControl.getEnable());
                     break;
                 case EXAM_SONG:
                     ImNetworkRoomMusicSheetDownloadData msg = imNetworkRoomMemberStatusService.getMemberExamSong(roomId, roomMember.getUserId());
                     msg.setEnable(false);
                     imNetworkRoomMemberStatusService.lambdaUpdate()
                             .eq(ImNetworkRoomMemberStatus::getRoomId,roomId)
-                            .eq(ImNetworkRoomMemberStatus::getUserId,userId)
+                            .eq(ImNetworkRoomMemberStatus::getImUserId,roomMember.getUserId())
                             .set(ImNetworkRoomMemberStatus::getMusicSheetDownloadJson,JSON.toJSONString(msg)).update();
                     break;
             }
@@ -333,18 +334,18 @@ public class ImServiceImpl implements ImService {
     public void pushApproveControlDevice(ImNetworkDeviceControlDto deviceControl, ImNetworkRoomMember roomMember,BasicUserInfo student,BasicUserInfo teacher) throws Exception {
         switch (deviceControl.getDeviceType()) {
             case CAMERA:
-                roomMember.setCameraFlag(deviceControl.getEnable());
+                roomMember.setCamera(deviceControl.getEnable());
                 break;
             case EXAM_SONG:
                 ImNetworkRoomMusicSheetDownloadData msg = imNetworkRoomMemberStatusService.getMemberExamSong(roomMember.getRoomId(), roomMember.getUserId());
                 msg.setEnable(deviceControl.getEnable());
                 imNetworkRoomMemberStatusService.lambdaUpdate()
                         .eq(ImNetworkRoomMemberStatus::getRoomId,roomMember.getRoomId())
-                        .eq(ImNetworkRoomMemberStatus::getUserId,roomMember.getUserId())
+                        .eq(ImNetworkRoomMemberStatus::getImUserId,roomMember.getUserId())
                         .set(ImNetworkRoomMemberStatus::getMusicSheetDownloadJson,JSON.toJSONString(msg)).update();
                 break;
             case MICROPHONE:
-                roomMember.setMicFlag(deviceControl.getEnable());
+                roomMember.setMicrophone(deviceControl.getEnable());
                 break;
         }
         if(deviceControl.getDeviceType() == ImNetworkDeviceTypeEnum.CAMERA ||
@@ -365,7 +366,7 @@ public class ImServiceImpl implements ImService {
             RTCRoomMessage.MessageContent.MessageContentBuilder action = RTCRoomMessage.MessageContent.builder()
                     .type(ImNetworkActionEnum.APPROVE.ordinal())
                     .enable(deviceControl.getEnable())
-                    .targetId(roomMember.getImUserId())
+                    .targetId(roomMember.getUserId())
                     .targetName(student.getUsername())
                     .sendUserInfo(build);
 
@@ -374,7 +375,7 @@ public class ImServiceImpl implements ImService {
                     .objectName(RTCRoomMessage.CONTROL_DEVICE_NOTIFY_MESSAGE)
                     .content(action.build())
                     .toChatRoomId(roomMember.getRoomId())
-                    .fromUserId(roomMember.getImUserId())
+                    .fromUserId(roomMember.getUserId())
                     .isIncludeSender(1)
                     .isPersisted(1)
                     .build();
@@ -390,7 +391,7 @@ public class ImServiceImpl implements ImService {
             // 腾讯云消息推送
             RTCRoomMessage message = RTCRoomMessage.builder()
                     .objectName(RTCRoomMessage.DEVICE_MESSAGE)
-                    .fromUserId(roomMember.getImUserId())
+                    .fromUserId(roomMember.getUserId())
                     .toChatRoomId(roomMember.getRoomId())
                     .content(action.build())
                     .isPersisted(1)
@@ -401,13 +402,13 @@ public class ImServiceImpl implements ImService {
         }else {
             ImNetworkControlDeviceNotifyMessage msg = new ImNetworkControlDeviceNotifyMessage(ImNetworkActionEnum.APPROVE.ordinal());
             msg.setType(deviceControl.getDeviceType().ordinal());
-            msg.setOpUserId(roomMember.getImUserId());
+            msg.setOpUserId(roomMember.getUserId());
             msg.setOpUserName(student.getUsername());
             //获取老师编号
             String imUserId1 = imGroupService.getImUserId(teacher.getUserId(), RoleEnum.RoleTeacher);
-            imHelper.publishMessage(roomMember.getImUserId(), imUserId1, deviceControl.getRoomId(), msg);
+            imHelper.publishMessage(roomMember.getUserId(), imUserId1, deviceControl.getRoomId(), msg);
             //发送设备状态变更消息
-            this.sendDeviceStateChangedMessage(deviceControl, roomMember.getImUserId());
+            this.sendDeviceStateChangedMessage(deviceControl, roomMember.getUserId());
         }
     }
 
@@ -416,23 +417,23 @@ public class ImServiceImpl implements ImService {
         ImNetworkDeviceTypeEnum deviceType = deviceStatusSync.getDeviceType();
         switch (deviceType) {
             case CAMERA:
-                roomMember.setCameraFlag(deviceStatusSync.getEnable());
+                roomMember.setCamera(deviceStatusSync.getEnable());
                 break;
             case MICROPHONE:
-                roomMember.setMicFlag(deviceStatusSync.getEnable());
+                roomMember.setMicrophone(deviceStatusSync.getEnable());
                 break;
             case HAND_UP:
-                roomMember.setHandFlag(deviceStatusSync.getEnable());
+                roomMember.setHandUpOn(deviceStatusSync.getEnable());
                 break;
             case MUSIC_MODE:
-                roomMember.setMusicModeFlag(deviceStatusSync.getEnable());
+                roomMember.setMusicModeOn(deviceStatusSync.getEnable());
                 break;
             case EXAM_SONG:
                 ImNetworkRoomMusicSheetDownloadData msg = imNetworkRoomMemberStatusService.getMemberExamSong(roomMember.getRoomId(), roomMember.getUserId());
                 msg.setEnable(deviceStatusSync.getEnable());
                 imNetworkRoomMemberStatusService.lambdaUpdate()
                         .eq(ImNetworkRoomMemberStatus::getRoomId,roomMember.getRoomId())
-                        .eq(ImNetworkRoomMemberStatus::getUserId,roomMember.getUserId())
+                        .eq(ImNetworkRoomMemberStatus::getImUserId,roomMember.getUserId())
                         .set(ImNetworkRoomMemberStatus::getMusicSheetDownloadJson,JSON.toJSONString(msg)).update();
                 break;
         }
@@ -456,7 +457,7 @@ public class ImServiceImpl implements ImService {
             // 腾讯云消息推送
             RTCRoomMessage message = RTCRoomMessage.builder()
                     .objectName(RTCRoomMessage.DEVICE_MESSAGE)
-                    .fromUserId(roomMember.getImUserId())
+                    .fromUserId(roomMember.getUserId())
                     .toChatRoomId(deviceStatusSync.getRoomId())
                     .content(messageContent)
                     .isPersisted(1)
@@ -466,7 +467,7 @@ public class ImServiceImpl implements ImService {
             pluginService.sendChatRoomMessage(message);
         } else {
             // 融云消息推送
-            this.sendDeviceStateChangedMessage(deviceStatusSync, roomMember.getImUserId());
+            this.sendDeviceStateChangedMessage(deviceStatusSync, roomMember.getUserId());
         }
     }
 
@@ -484,7 +485,7 @@ public class ImServiceImpl implements ImService {
             RTCRoomMessage.MessageContent.MessageContentBuilder action = RTCRoomMessage.MessageContent.builder()
                     .type(ImNetworkActionEnum.REJECT.ordinal())
                     .enable(deviceControl.getEnable())
-                    .targetId(roomMember.getImUserId())
+                    .targetId(roomMember.getUserId())
                     .targetName(roomMember.getUsername())
                     .sendUserInfo(build);
 
@@ -492,7 +493,7 @@ public class ImServiceImpl implements ImService {
                     .objectName(RTCRoomMessage.CONTROL_DEVICE_NOTIFY_MESSAGE)
                     .content(action.build())
                     .toChatRoomId(roomMember.getRoomId())
-                    .fromUserId(roomMember.getImUserId())
+                    .fromUserId(roomMember.getUserId())
                     .isIncludeSender(1)
                     .isPersisted(1)
                     .build();
@@ -501,16 +502,16 @@ public class ImServiceImpl implements ImService {
         } else {
             ImNetworkControlDeviceNotifyMessage msg = new ImNetworkControlDeviceNotifyMessage(ImNetworkActionEnum.REJECT.ordinal());
             msg.setType(deviceControl.getDeviceType().ordinal());
-            msg.setOpUserId(roomMember.getImUserId());
+            msg.setOpUserId(roomMember.getUserId());
             msg.setOpUserName(roomMember.getUsername());
-            imHelper.publishMessage(roomMember.getImUserId(),
+            imHelper.publishMessage(roomMember.getUserId(),
                     imGroupService.getImUserId(teacher.getUserId(),ClientEnum.TEACHER), roomMember.getRoomId(), msg);
         }
     }
 
     private RTCRoomMessage.MessageUser getSendUser(ImNetworkRoomMember roomMember) {
         RTCRoomMessage.MessageUser build = RTCRoomMessage.MessageUser.builder()
-                .sendUserId(roomMember.getImUserId())
+                .sendUserId(roomMember.getUserId())
                 .sendUserName(roomMember.getUsername())
                 .avatarUrl(roomMember.getAvatar())
                 .build();

+ 17 - 20
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/RoomServiceImpl.java

@@ -16,10 +16,7 @@ import com.yonge.cooleshow.biz.dal.entity.ImNetworkRoomMember;
 import com.yonge.cooleshow.biz.dal.entity.ImNetworkRoomMemberStatus;
 import com.yonge.cooleshow.biz.dal.enums.ImNetworkRoomMemberChangedEnum;
 import com.yonge.cooleshow.biz.dal.enums.RoleEnum;
-import com.yonge.cooleshow.biz.dal.service.ImGroupService;
-import com.yonge.cooleshow.biz.dal.service.ImNetworkRoomMemberStatusService;
-import com.yonge.cooleshow.biz.dal.service.ImService;
-import com.yonge.cooleshow.biz.dal.service.RoomService;
+import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.support.IMHelper;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -49,7 +46,7 @@ public class RoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNetworkRoom
     @Autowired
     private ImNetworkRoomMemberStatusService imNetworkRoomMemberStatusService;
     @Autowired
-    private ImNetworkRoomMemberDao imNetworkRoomMemberDao;
+    private ImNetworkRoomMemberService imNetworkRoomMemberService;
     @Autowired
     private ImService imService;
     @Autowired
@@ -66,7 +63,7 @@ public class RoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNetworkRoom
         ImNetworkRoom room = baseMapper.findByRoomId(roomId);
         String display = "";
         if (userRole == RoleEnum.RoleTeacher) {
-            display = "display://type=0?userId=" + userId + "?uri=";
+            display = "display://type=1?userId=" + userId + "?uri=";
         }
         if(Objects.isNull(room)){
             room = new ImNetworkRoom();
@@ -95,11 +92,11 @@ public class RoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNetworkRoom
             // 腾讯云RTC
             // 用户IM帐号创建
             try {
-                pluginService.register(roomMember.getImUserId(), roomMember.getUsername(), roomMember.getAvatar());
+                pluginService.register(roomMember.getUserId(), roomMember.getUsername(), roomMember.getAvatar());
             } catch (Exception e) {
-                log.error("直播房间用户注册失败: userId={}", roomMember.getImUserId(), e);
+                log.error("直播房间用户注册失败: userId={}", roomMember.getUserId(), e);
             }
-            return rtcRoomPluginContext.getPluginService().getRTCRoomConfig(roomMember.getImUserId());
+            return rtcRoomPluginContext.getPluginService().getRTCRoomConfig(roomMember.getUserId());
         }
         return new RTCRoomConfig();
     }
@@ -108,7 +105,6 @@ public class RoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNetworkRoom
     @Transactional(rollbackFor = Exception.class)
     public void quitRoomSuccess(RoleEnum roleEnum, ImNetworkRoomMember roomMember,String serviceProvider) throws Exception {
         String roomId = roomMember.getRoomId();
-        String imUserId = roomMember.getImUserId();
         ImNetworkRoom room = baseMapper.findByRoomId(roomId);
         if (roleEnum == RoleEnum.RoleTeacher){
             //如果老师退出房间,初始化节拍器和伴奏播放配置
@@ -117,21 +113,22 @@ public class RoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNetworkRoom
                     .set(ImNetworkRoomMemberStatus::getMusicSheetDownloadJson,null).update();
             if (isUserDisplay(room.getDisplay(), roomMember.getUserId())) {
                 room.setDisplay("");
-                this.updateDisplay(imUserId,room,serviceProvider);
+                this.updateDisplay(roomMember.getUserId(),room,serviceProvider);
             }
         }
-        int memberNum = imNetworkRoomMemberDao.countByRoomId(roomId);
+        int memberNum = imNetworkRoomMemberService.lambdaQuery()
+                .eq(ImNetworkRoomMember::getRoomId,roomId).count();
         if (memberNum <= 1) {
-            imHelper.dismiss(imUserId, roomId);
-            log.info("leaveRoomSuccess dismiss the room: {},userId: {}", roomId, imUserId);
+            imHelper.dismiss(roomMember.getUserId(), roomId);
+            log.info("leaveRoomSuccess dismiss the room: {},userId: {}", roomId, roomMember.getUserId());
         } else {
             ImNetworkRoomMemberChangedMessage msg = new ImNetworkRoomMemberChangedMessage(roomMember, ImNetworkRoomMemberChangedEnum.LEAVE);
-            imHelper.publishMessage(imUserId, roomId, msg);
-            imHelper.quit(new String[]{imUserId}, roomId);
-            log.info("leaveRoomSuccess quit group: roomId={},userId: {}", roomId, imUserId);
+            imHelper.publishMessage(roomMember.getUserId(), roomId, msg);
+            imHelper.quit(new String[]{roomMember.getUserId()}, roomId);
+            log.info("leaveRoomSuccess quit group: roomId={},userId: {}", roomId, roomMember.getUserId());
         }
         //删房间用户信息
-        imNetworkRoomMemberDao.deleteById(roomMember.getId());
+        imNetworkRoomMemberService.removeById(roomMember.getId());
     }
 
     //修改节拍器
@@ -173,9 +170,9 @@ public class RoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNetworkRoom
         this.updateDisplay(imUserId,room,serviceProvider);
     }
 
-    public boolean isUserDisplay(String display, Long userId) {
+    public boolean isUserDisplay(String display, String imUserId) {
         boolean result = false;
-        if (!display.isEmpty() && display.contains("userId=" + userId)) {
+        if (!display.isEmpty() && display.contains("userId=" + imUserId)) {
             if (display.contains("type=0") || display.contains("type=2")) {
                 result = true;
             }

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/ImHistoryMessageWrapper.java

@@ -14,18 +14,23 @@ public class ImHistoryMessageWrapper {
     @ApiModel("ImHistoryMessage-iM语音消息")
     public static class TimSoundElem {
 
+        @JSONField(name = "Url")
         @ApiModelProperty("语音下载地址,可通过该 URL 地址直接下载相应语音。")
         private String Url;
 
+        @JSONField(name = "UUID")
         @ApiModelProperty("语音的唯一标识,客户端用于索引语音的键值")
         private String UUID;
 
+        @JSONField(name = "Size")
         @ApiModelProperty("语音数据大小,单位:字节。")
         private Integer Size;
 
+        @JSONField(name = "Second")
         @ApiModelProperty("语音时长,单位:秒。")
         private Integer Second;
 
+        @JSONField(name = "Download_Flag")
         @ApiModelProperty("语音下载方式标记。目前 Download_Flag 取值只能为2,表示可通过Url字段值的 URL 地址直接下载语音。")
         private Integer Download_Flag;
 

+ 3 - 3
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -157,9 +157,9 @@
         AND NOW() &gt;= c.end_time_
         ORDER BY c.end_time_
     </select>
-    <select id="queryNoJoinStu" resultMap="com.yonge.cooleshow.biz.dal.dao.TeacherDao.BasicUserInfo">
-        SELECT CASE WHEN su.username_ IS NULL THEN su.real_name_ ELSE su.username_ END username_,
-        su.avatar_,cssp.user_id_
+    <select id="queryNoJoinStu" resultType="com.yonge.cooleshow.biz.dal.dto.BasicUserInfoDto">
+        SELECT CASE WHEN su.username_ IS NULL THEN su.real_name_ ELSE su.username_ END userName,
+        su.avatar_ headUrl,cssp.user_id_ userId
         FROM course_schedule_student_payment cssp
         LEFT JOIN sys_user su ON su.id_ = cssp.user_id_
         WHERE cssp.course_id_ = #{scheduleId}

+ 7 - 41
cooleshow-user/user-biz/src/main/resources/config/mybatis/ImNetworkRoomMemberMapper.xml

@@ -5,60 +5,26 @@
         <id column="id_" jdbcType="INTEGER" property="id"/>
         <result column="room_id_" jdbcType="VARCHAR" property="roomId"/>
         <result column="user_id_" jdbcType="INTEGER" property="userId"/>
-        <result column="im_user_id_" property="imUserId"/>
         <result column="username_" jdbcType="VARCHAR" property="username"/>
         <result column="avatar_" jdbcType="VARCHAR" property="avatar"/>
         <result column="join_time_" jdbcType="TIMESTAMP" property="joinTime"/>
         <result column="role_" jdbcType="INTEGER" property="role"/>
-        <result column="camera_flag_" jdbcType="BOOLEAN" property="cameraFlag"/>
-        <result column="mic_flag_" jdbcType="BOOLEAN" property="micFlag"/>
-        <result column="music_mode_flag_" jdbcType="BOOLEAN" property="musicModeFlag"/>
-        <result column="hand_flag_" jdbcType="BOOLEAN" property="handFlag"/>
+        <result column="camera_flag_" jdbcType="BOOLEAN" property="camera"/>
+        <result column="mic_flag_" jdbcType="BOOLEAN" property="microphone"/>
+        <result column="music_mode_flag_" jdbcType="BOOLEAN" property="musicModeOn"/>
+        <result column="hand_flag_" jdbcType="BOOLEAN" property="handUpOn"/>
     </resultMap>
 
-    <sql id="Base_Column_List">
-        id_ , room_id_, user_id_, join_time_, role_,
-        camera_flag_, mic_flag_, music_mode_flag_, hand_flag_,username_,avatar_,im_user_id_
-    </sql>
-
-    <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
-            parameterType="com.yonge.cooleshow.biz.dal.entity.ImNetworkRoomMember">
-        insert into im_network_room_member(room_id_, user_id_, join_time_, role_, camera_flag_,
-        mic_flag_, music_mode_flag_, hand_flag_,username_,avatar_,im_user_id_)
-        values
-        <foreach collection="entities" item="entity" separator=",">
-            (#{entity.roomId}, #{entity.userId}, #{entity.joinTime}, #{entity.role},
-            #{entity.cameraFlag}, #{entity.micFlag}, #{entity.musicModeFlag},
-             #{entity.handFlag}, #{entity.username}, #{entity.avatar},#{entity.imUserId})
-        </foreach>
-    </insert>
     <insert id="insert" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
             parameterType="com.yonge.cooleshow.biz.dal.entity.ImNetworkRoomMember">
         INSERT INTO im_network_room_member(room_id_, user_id_, join_time_, role_, camera_flag_,
-                                           mic_flag_, music_mode_flag_, hand_flag_,username_,avatar_,im_user_id_)
+                                           mic_flag_, music_mode_flag_, hand_flag_,username_,avatar_)
         VALUES (#{entity.roomId}, #{entity.userId},NOW(), #{entity.role},
-                #{entity.cameraFlag}, #{entity.micFlag}, #{entity.musicModeFlag},
-                #{entity.handFlag}, #{entity.username}, #{entity.avatar}, #{entity.imUserId})
+                #{entity.camera}, #{entity.microphone}, #{entity.musicModeOn},
+                #{entity.handUpOn}, #{entity.username}, #{entity.avatar})
         ON DUPLICATE KEY UPDATE
         room_id_ = VALUES(room_id_),
         user_id_ = VALUES(user_id_),
         role_ = VALUES(role_)
     </insert>
-    <delete id="delByRidAndUid">
-        DELETE FROM im_network_room_member WHERE room_id_ = #{roomId} AND user_id_ = #{userId} AND role_ = #{userRole}
-    </delete>
-    <select id="findByRidAndUid" resultMap="BaseResultMap">
-        SELECT <include refid="Base_Column_List"/> FROM im_network_room_member
-        WHERE room_id_ = #{roomId} AND user_id_ = #{userId} AND role_ = #{userRole} LIMIT 1
-    </select>
-    <select id="queryByRoomId" resultMap="BaseResultMap">
-        SELECT <include refid="Base_Column_List"/> FROM im_network_room_member WHERE room_id_ = #{roomId}
-    </select>
-    <select id="countByRoomId" resultType="java.lang.Integer">
-        SELECT COUNT(id_) FROM im_network_room_member WHERE room_id_ = #{roomId}
-    </select>
-    <select id="findByRoomAndRole" resultMap="BaseResultMap">
-        SELECT <include refid="Base_Column_List"/> FROM im_network_room_member WHERE room_id_ = #{roomId} AND role_ = #{role}
-    </select>
-
 </mapper>

+ 0 - 17
cooleshow-user/user-biz/src/main/resources/config/mybatis/ImNetworkRoomMemberStatusMapper.xml

@@ -3,21 +3,4 @@
 <mapper namespace="com.yonge.cooleshow.biz.dal.mapper.ImNetworkRoomMemberStatusMapper">
 
 	 
-    
-    <!-- 表字段 -->
-    <sql id="baseColumns">
-         t.id_ AS id
-        , t.room_id_ AS roomId
-        , t.user_id_ AS userId
-        , t.role_ AS role
-        , t.play_midi_ AS playMidi
-        , t.music_sheet_download_json_ AS musicSheetDownloadJson
-        </sql> 
-    
-    <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.entity.ImNetworkRoomMemberStatus">
-		SELECT         
-        	<include refid="baseColumns" />
-		FROM im_network_room_member_status t
-	</select>
-    
 </mapper>

+ 1 - 1
cooleshow-user/user-classroom/src/main/java/com/yonge/cooleshow/classroom/controller/RoomController.java

@@ -288,7 +288,7 @@ public class RoomController extends BaseController {
 
     @ApiOperation(value = "查询不在教室的学员")
     @GetMapping(value = "/queryNoJoinStu")
-    public BaseResponse<List<BasicUserInfo>> queryNoJoinStu(String roomId){
+    public BaseResponse<List<BasicUserInfoDto>> queryNoJoinStu(String roomId){
         return BaseResponse.success(imNetworkRoomService.queryNoJoinStu(roomId));
     }
 }