浏览代码

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

liujc 1 年之前
父节点
当前提交
3d8cc625b1

+ 59 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/entity/BaseResponse.java

@@ -0,0 +1,59 @@
+package com.yonge.cooleshow.common.entity;
+
+import com.yonge.cooleshow.common.enums.ErrorEnum;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import static com.yonge.cooleshow.common.enums.ErrorEnum.ERR_SUCCESS;
+
+@Data
+public class BaseResponse<T> {
+    private @Getter int errCode;
+    private @Setter @Getter String errMsg;
+    private @Setter @Getter String errDetail;
+    private @Getter BaseResponseResult data;
+
+
+    public void setData(T data) {
+        this.data = new BaseResponseResult<T>(data);
+    }
+
+    public static <T> BaseResponse<T> success(T data) {
+        BaseResponse<T> response = success();
+        response.setData(data);
+        return response;
+    }
+
+    public static <T> BaseResponse<T> success() {
+        BaseResponse<T> response = new BaseResponse();
+        response.setErr(ERR_SUCCESS);
+        return response;
+    }
+
+    public static <T> BaseResponse<T> failed(ErrorEnum err,T data) {
+        BaseResponse<T> response = failed(err);
+        response.setData(data);
+        return response;
+    }
+
+    public static <T> BaseResponse<T> failed(ErrorEnum err) {
+        BaseResponse<T> response = new BaseResponse();
+        response.setErr(err);
+        return response;
+    }
+
+    public void setErr(ErrorEnum error) {
+        this.errCode = error.getErrCode();
+        this.errMsg = error.getErrMsg();
+        this.errDetail = error.getErrMsg();
+    }
+
+    class BaseResponseResult<R> {
+        private @Setter @Getter R result;
+
+        BaseResponseResult(R result) {
+            this.result = result;
+        }
+    }
+}

+ 61 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/ErrorEnum.java

@@ -0,0 +1,61 @@
+package com.yonge.cooleshow.common.enums;
+
+import lombok.Getter;
+
+/**
+ * Created by weiqinxiao on 2019/2/25.
+ */
+public enum ErrorEnum {
+    ERR_SUCCESS(0x0000, "OK"),
+    ERR_OTHER(0x00FF, "Error"),
+    ERR_BIZ_EX(500, "业务异常"),
+
+    ERR_REQUEST_PARA_ERR(1, "Missing or invalid parameter"),
+    ERR_INVALID_AUTH(2, "Invalid or expired authorization"),
+    ERR_ACCESS_DENIED(3, "Access denied"),
+    ERR_BAD_REQUEST(4, "Bad request"),
+
+    //IM error
+    ERR_IM_TOKEN_ERROR(10, "IM token error"),
+    ERR_CREATE_ROOM_ERROR(11, "Create room error"),
+    ERR_JOIN_ROOM_ERROR(12, "Join room error"),
+    JOIN_ROOM_ERROR(35, "加入房间失败,请前往线下教室"),
+    ROOM_NOT_START(36, "网络教室暂未开启,请稍后重试"),
+    CLOUD_BALANCE_NOT_FEE(37, "云教室受限不可进入,请联系教务老师。"),
+    ERR_MESSAGE_ERROR(13, "IM Message send error"),
+
+
+    //room error
+    ERR_ROOM_NOT_EXIST(20, "Room not exist"),
+    ERR_USER_NOT_EXIST_IN_ROOM(21, "User not exist in room"),
+    ERR_EXIT_ROOM_ERROR(22, "Exit room error"),
+    ERR_TEACHER_NOT_EXIST_IN_ROOM(23, "Teacher not exist in room"),
+    ERR_ASSISTANT_NOT_EXIST_IN_ROOM(24, "Assistant not exist in room"),
+    ERR_CREATE_WHITE_BOARD(25, "Create whiteboard error"),
+    ERR_WHITE_BOARD_NOT_EXIST(26, "Whiteboard not exist"),
+    ERR_DELETE_WHITE_BOARD(27, "Delete whiteboard error"),
+    ERR_USER_EXIST_IN_ROOM(28, "User exist in room"),
+    ERR_CHANGE_SELF_ROLE(29, "Can not change self role"),
+    ERR_APPLY_TICKET_INVALID(30, "Apply ticket invalid"),
+    ERR_OVER_MAX_COUNT(31, "云教室人数已超上线"),
+    ERR_TEACHER_EXIST_IN_ROOM(32, "Teacher exist in room"),
+    ERR_DOWNGRADE_ROLE(33, "Can't downgrade role"),
+    ERR_CHANGE_ROLE(34, "Only change student to teacher");
+
+    private @Getter int errCode;
+    private @Getter String errMsg;
+    private ErrorEnum(int errCode, String errMsg) {
+        this.errCode = errCode;
+        this.errMsg = errMsg;
+    }
+
+    public static ErrorEnum getEnumByValue(long errCode) {
+        for(ErrorEnum item : ErrorEnum.values()) {
+            if(item.getErrCode() == errCode) {
+                return item;
+            }
+        }
+
+        throw new IllegalArgumentException();
+    }
+}

+ 2 - 16
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ImNetworkBaseDto.java

@@ -2,7 +2,9 @@ package com.yonge.cooleshow.biz.dal.dto;
 
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
+@Data
 public class ImNetworkBaseDto {
 
     @ApiModelProperty(value = "房间号(课程编号)",required = true)
@@ -10,20 +12,4 @@ public class ImNetworkBaseDto {
 
     @ApiModelProperty("客户端类型 ")
     private ClientEnum clientType;
-
-    public Long getRoomId() {
-        return roomId;
-    }
-
-    public void setRoomId(Long roomId) {
-        this.roomId = roomId;
-    }
-
-    public ClientEnum getClientType() {
-        return clientType;
-    }
-
-    public void setClientType(ClientEnum clientType) {
-        this.clientType = clientType;
-    }
 }

+ 9 - 57
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ImNetworkCustomMessage.java

@@ -3,8 +3,10 @@ package com.yonge.cooleshow.biz.dal.dto;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import io.rong.messages.BaseMessage;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import org.apache.commons.lang3.StringUtils;
 
+@Data
 public class ImNetworkCustomMessage extends BaseMessage {
     @ApiModelProperty(value = "节拍器开关",required = true)
     private boolean enable;
@@ -21,67 +23,17 @@ public class ImNetworkCustomMessage extends BaseMessage {
     @ApiModelProperty(value = "学员编号列表,都还分割",required = true)
     private String userId;
 
-    @ApiModelProperty(value = "房间号(课程编号)",required = true)
-    private Long roomId;
+    @ApiModelProperty(value = "当前用户")
+    private Long currentUserId;
+
+    @ApiModelProperty(value = "房间号",required = true)
+    private String roomId;
 
     @ApiModelProperty("客户端类型")
     private ClientEnum clientType;
 
-    public Long getRoomId() {
-        return roomId;
-    }
-
-    public void setRoomId(Long roomId) {
-        this.roomId = roomId;
-    }
-
-    public int getPlayVolume() {
-        return playVolume;
-    }
-
-    public void setPlayVolume(int playVolume) {
-        this.playVolume = playVolume;
-    }
-
-    public Boolean getEnable() {
-        return enable;
-    }
-
-    public void setEnable(Boolean enable) {
-        this.enable = enable;
-    }
-
-    public int getCustomType() {
-        return customType;
-    }
-
-    public void setCustomType(int customType) {
-        this.customType = customType;
-    }
-
-    public int getRate() {
-        return rate;
-    }
-
-    public void setRate(int rate) {
-        this.rate = rate;
-    }
-
-    public String getUserId() {
-        return userId;
-    }
-
-    public void setUserId(String userId) {
-        this.userId = userId;
-    }
-
-    public ClientEnum getClientType() {
-        return clientType;
-    }
-
-    public void setClientType(ClientEnum clientType) {
-        this.clientType = clientType;
-    }
+    @ApiModelProperty("服务提供方")
+    private String serviceProvider;
 
     @Override
     public String getType() {

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ImNetworkMetronomeMessage.java

@@ -23,7 +23,7 @@ public class ImNetworkMetronomeMessage extends BaseMessage {
 
     @Override
     public String toString() {
-        return "{\"enable\":" + content.getEnable() +
+        return "{\"enable\":" + content.isEnable() +
                 ", \"customType\":" + content.getCustomType() +
                 ", \"rate\":" + content.getRate() +
                 ", \"playVolume\":" + content.getPlayVolume() +

+ 2 - 30
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ImNetworkMusicSheetDto.java

@@ -1,8 +1,9 @@
 package com.yonge.cooleshow.biz.dal.dto;
 
-import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
+@Data
 public class ImNetworkMusicSheetDto extends ImNetworkBaseDto{
 
     @ApiModelProperty(value = "伴奏编号",required = true)
@@ -11,35 +12,6 @@ public class ImNetworkMusicSheetDto extends ImNetworkBaseDto{
     @ApiModelProperty(value = "伴奏下载状态(1下载成功0下载中2下载失败)",required = true)
     private Integer status;
 
-    @ApiModelProperty("客户端类型 ")
-    private ClientEnum clientType;
-
-    public Long getAccompanimentId() {
-        return accompanimentId;
-    }
-
-    public void setAccompanimentId(Long accompanimentId) {
-        this.accompanimentId = accompanimentId;
-    }
-
-    public Integer getStatus() {
-        return status;
-    }
-
-    public void setStatus(Integer status) {
-        this.status = status;
-    }
-
-    @Override
-    public ClientEnum getClientType() {
-        return clientType;
-    }
-
-    @Override
-    public void setClientType(ClientEnum clientType) {
-        this.clientType = clientType;
-    }
-
     @Override
     public String toString() {
         return "ImNetworkMusicSheetDto{" +

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

@@ -6,6 +6,7 @@ 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;
@@ -21,7 +22,7 @@ public interface ImNetworkRoomService extends IService<ImNetworkRoom> {
     ImNetworkRoomDao getDao();
 
     //加入网络教室
-    HttpResponseResult<ImNetworkRoomResult> joinRoom(Long courseScheduleId, ClientEnum clientType) throws Exception;
+    BaseResponse<ImNetworkRoomResult> joinRoom(Long courseScheduleId, ClientEnum clientType) throws Exception;
 
     //加入网络教室成功
     void joinRoomSuccess(String roomId, String imUserId) throws Exception;

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImService.java

@@ -1,7 +1,9 @@
 package com.yonge.cooleshow.biz.dal.service;
 
+import com.yonge.cooleshow.biz.dal.dto.ImNetworkCustomMessage;
 import com.yonge.cooleshow.biz.dal.entity.ImNetworkRoom;
 import com.yonge.cooleshow.biz.dal.entity.ImNetworkRoomMember;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 网络教室成员(ImNetworkRoomMember)表服务接口
@@ -17,5 +19,7 @@ public interface ImService{
 
     //发送display改动通知
     void sendDisplay(String imUserId, ImNetworkRoom room,String serviceProvider) throws Exception;
+
+    void sendImPlayMidiMessage(ImNetworkCustomMessage customMessage) throws Exception;
 }
 

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

@@ -24,8 +24,10 @@ 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;
 import org.apache.commons.lang3.StringUtils;
@@ -101,7 +103,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public HttpResponseResult<ImNetworkRoomResult> joinRoom(Long courseScheduleId, ClientEnum clientType) throws Exception {
+    public BaseResponse<ImNetworkRoomResult> joinRoom(Long courseScheduleId, ClientEnum clientType) throws Exception {
         // 当前登录用户ID
         Long userId = sysUserService.getUserId();
         CourseSchedule courseSchedule = Optional.ofNullable(courseScheduleService.getById(courseScheduleId)).
@@ -119,7 +121,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         courseSchedule.setUpdatedTime(now);
         //是否提前进入教室
         if (roomNotStart(courseSchedule)) {
-            return HttpResponseResult.failed(ImNetworkRoomErrorEnum.ROOM_NOT_START.getRemark());
+            return BaseResponse.failed(ErrorEnum.ROOM_NOT_START);
         }
         String roomId = courseScheduleId.toString();
         ImNetworkRoomResult joinRoomResult = new ImNetworkRoomResult();
@@ -162,7 +164,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         //获取腾讯所需基本信息配置
         joinRoomResult.setRtcRoomConfig(roomService.getRtcRoomConfig(courseSchedule.getServiceProvider(),sysUser));
         joinRoomResult.setGroupId(roomId);
-        return HttpResponseResult.succeed(joinRoomResult);
+        return BaseResponse.success(joinRoomResult);
     }
 
     private void setMusicSheetList(List<ImNetworkRoomMember> roomMemberList,Long courseScheduleId){
@@ -183,14 +185,12 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void joinRoomSuccess(String roomId, String imUserId) throws Exception {
-
+        log.info("joinRoomSuccess: roomId={}, imUserId={}", roomId, imUserId);
         // 用户ID
         Long userId = Long.parseLong(imGroupService.analysisImUserId(imUserId));
-
         // 客户端类型
         ClientEnum clientType = ClientEnum.valueOf(imGroupService.analysisImUserClient(imUserId));
 
-        log.info("joinRoomSuccess: roomId={}, userId={}", roomId, userId);
         CourseSchedule courseSchedule = Optional.ofNullable(courseScheduleService.getById(roomId)).
                 orElseThrow(()->new BizException("房间信息不存在"));
         BasicUserInfo sysUser = Optional.ofNullable(teacherDao.getBasicUserInfo(userId)).
@@ -251,17 +251,12 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void quitRoomSuccess(String roomId, String imUserId) throws Exception {
-
         // 用户ID
         Long userId = Long.parseLong(imGroupService.analysisImUserId(imUserId));
-
         // 客户端类型
         ClientEnum clientType = ClientEnum.valueOf(imGroupService.analysisImUserClient(imUserId));
-
-
         // 客户端类型
         UserRoleEnum userRole = UserRoleEnum.convert(clientType);
-
         log.info("quitRoomSuccess: roomId={}, userId={}", roomId, userId);
         //防止幂等
         StringBuffer sb  = new StringBuffer(QUIT_ROOM_SUCCESS).append(roomId).append(userId);
@@ -300,50 +295,18 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void sendImPlayMidiMessage(ImNetworkCustomMessage customMessage) throws Exception {
-        SysUser user = sysUserService.getUser();
-        Long userId = user.getId();
-        Long roomId = customMessage.getRoomId();
-        log.info("sendImPlayMidiMessage: roomId={}, userId={}", roomId, userId);
-        ImNetworkMetronomeMessage displayMessage = new ImNetworkMetronomeMessage(customMessage);
-
-        String imUserId = imGroupService.getImUserId(userId,customMessage.getClientType());
-        ImNetworkRoomMember roomMember = imNetworkRoomMemberService.lambdaQuery().eq(ImNetworkRoomMember::getUserId, userId)
-                .eq(ImNetworkRoomMember::getRoomId, roomId).last("LIMIT 1").one();
-        // 获取RTC服务提供方
-        CourseSchedule courseSchedule = courseScheduleService.getById(roomId);
-        RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(courseSchedule.getServiceProvider());
-        if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(pluginService.pluginName())) {
-
-            // 腾讯云RTC服务
-            RTCRoomMessage.MessageContent messageContent = RTCRoomMessage.MessageContent
-                    .builder()
-                    .enable(customMessage.getEnable())
-                    .rate(customMessage.getRate())
-                    .customType(customMessage.getCustomType())
-                    .userId(customMessage.getUserId())
-                    .playVolume(customMessage.getPlayVolume())
-                    .sendUserInfo(getSendUser(user, RoleEnum.getEnumByValue(roomMember.getRole())))
-                    .build();
-
-            RTCRoomMessage roomMessage = RTCRoomMessage.builder()
-                    .objectName(RTCRoomMessage.PLAY_MIDI_MESSAGE)
-                    .content(messageContent)
-                    .toChatRoomId(roomMember.getRoomId())
-                    .fromUserId(imUserId)
-                    .isIncludeSender(1)
-                    .isPersisted(1)
-                    .build();
-
-            pluginService.sendChatRoomMessage(roomMessage);
-        } else {
-            imHelper.publishMessage(imUserId, roomId.toString(), displayMessage, 1);
-        }
-
+        customMessage.setCurrentUserId(sysUserService.getUserId());
+        CourseSchedule courseSchedule = courseScheduleService.getById(customMessage.getRoomId());
+        customMessage.setServiceProvider(courseSchedule.getServiceProvider());
+        //发送节拍器消息
+        imService.sendImPlayMidiMessage(customMessage);
         //记录节拍器信息
         String collect = Arrays.stream(customMessage.getUserId().split(","))
                 .map(x -> x.split(":")[0]).collect(Collectors.joining(","));
-
-        courseScheduleStudentPaymentService.getDao().adjustPlayMidi(roomId, collect, customMessage.toString());
+        imNetworkRoomMemberStatusService.lambdaUpdate()
+                        .eq(ImNetworkRoomMemberStatus::getRoomId,customMessage.getRoomId())
+                                .in(ImNetworkRoomMemberStatus::getUserId,collect)
+                                        .set(ImNetworkRoomMemberStatus::getPlayMidi,customMessage.toString());
     }
 
     @Override

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

@@ -5,14 +5,10 @@ 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.RTCRoomMessage;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.*;
-import com.yonge.cooleshow.biz.dal.entity.CourseSchedule;
 import com.yonge.cooleshow.biz.dal.entity.ImNetworkRoom;
 import com.yonge.cooleshow.biz.dal.entity.ImNetworkRoomMember;
 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.ImNetworkRoomMemberService;
 import com.yonge.cooleshow.biz.dal.service.ImNetworkRoomMemberStatusService;
 import com.yonge.cooleshow.biz.dal.service.ImService;
@@ -21,6 +17,7 @@ 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.Date;
 
@@ -80,7 +77,7 @@ public class ImServiceImpl implements ImService {
             ImNetworkRoomMemberChangedMessage msg = new ImNetworkRoomMemberChangedMessage(roomMember, ImNetworkRoomMemberChangedEnum.JOIN);
             //获取节拍器信息
             ImNetworkCustomMessage imNetworkCustomMessage = imNetworkRoomMemberStatusService.getMemberMidi(roomMember.getRoomId(), roomMember.getUserId());
-            msg.setMetronomeSwitch(imNetworkCustomMessage.getEnable());
+            msg.setMetronomeSwitch(imNetworkCustomMessage.isEnable());
             //获取伴奏信息
             ImNetworkRoomMusicSheetDownloadData musicSheetDownloadData = imNetworkRoomMemberStatusService.getMemberExamSong(roomMember.getRoomId(), roomMember.getUserId());
             msg.setExamSongSwitch(musicSheetDownloadData.getEnable());
@@ -120,6 +117,43 @@ public class ImServiceImpl implements ImService {
         }
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void sendImPlayMidiMessage(ImNetworkCustomMessage customMessage) throws Exception {
+        log.info("sendImPlayMidiMessage: customMessage={}", customMessage);
+        ImNetworkMetronomeMessage displayMessage = new ImNetworkMetronomeMessage(customMessage);
+
+        ImNetworkRoomMember roomMember = imNetworkRoomMemberService.lambdaQuery().eq(ImNetworkRoomMember::getUserId, customMessage.getCurrentUserId())
+                .eq(ImNetworkRoomMember::getRoomId, customMessage.getRoomId()).last("LIMIT 1").one();
+        // 获取RTC服务提供方
+        RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(customMessage.getServiceProvider());
+        if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(pluginService.pluginName())) {
+            // 腾讯云RTC服务
+            RTCRoomMessage.MessageContent messageContent = RTCRoomMessage.MessageContent
+                    .builder()
+                    .enable(customMessage.isEnable())
+                    .rate(customMessage.getRate())
+                    .customType(customMessage.getCustomType())
+                    .userId(customMessage.getUserId())
+                    .playVolume(customMessage.getPlayVolume())
+                    .sendUserInfo(getSendUser(roomMember))
+                    .build();
+
+            RTCRoomMessage roomMessage = RTCRoomMessage.builder()
+                    .objectName(RTCRoomMessage.PLAY_MIDI_MESSAGE)
+                    .content(messageContent)
+                    .toChatRoomId(roomMember.getRoomId())
+                    .fromUserId(roomMember.getImUserId())
+                    .isIncludeSender(1)
+                    .isPersisted(1)
+                    .build();
+
+            pluginService.sendChatRoomMessage(roomMessage);
+        } else {
+            imHelper.publishMessage(roomMember.getImUserId(), roomMember.getRoomId(), displayMessage, 1);
+        }
+    }
+
     private RTCRoomMessage.MessageUser getSendUser(ImNetworkRoomMember roomMember) {
         RTCRoomMessage.MessageUser build = RTCRoomMessage.MessageUser.builder()
                 .sendUserId(roomMember.getImUserId())

+ 0 - 29
cooleshow-user/user-classroom/src/main/java/com/yonge/cooleshow/classroom/controller/ImNetworkRoomMemberController.java

@@ -1,29 +0,0 @@
-package com.yonge.cooleshow.classroom.controller;
-
-
-import com.yonge.cooleshow.biz.dal.service.ImNetworkRoomMemberService;
-import com.yonge.cooleshow.common.controller.BaseController;
-import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-
-/**
- * 网络教室成员(ImNetworkRoomMember)表控制层
- *
- * @author zx
- * @since 2022-03-30 16:36:37
- */
-@Api(tags = "网络教室成员")
-@RestController
-@RequestMapping("/imNetworkRoomMember")
-public class ImNetworkRoomMemberController extends BaseController {
-    /**
-     * 服务对象
-     */
-    @Resource
-    private ImNetworkRoomMemberService imNetworkRoomMemberService;
-
-}
-

+ 28 - 28
cooleshow-user/user-classroom/src/main/java/com/yonge/cooleshow/classroom/controller/ImNetworkRoomController.java → cooleshow-user/user-classroom/src/main/java/com/yonge/cooleshow/classroom/controller/RoomController.java

@@ -8,7 +8,7 @@ import com.yonge.cooleshow.biz.dal.service.ImGroupService;
 import com.yonge.cooleshow.biz.dal.service.ImNetworkRoomService;
 import com.yonge.cooleshow.biz.dal.service.SysUserService;
 import com.yonge.cooleshow.common.controller.BaseController;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.entity.BaseResponse;
 import com.yonge.toolset.base.exception.BizException;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
-import java.text.MessageFormat;
+import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
 
@@ -34,9 +34,9 @@ import java.util.Optional;
 @Api(tags = "网络教室房间")
 @RestController
 @RequestMapping("/room")
-public class ImNetworkRoomController extends BaseController {
+public class RoomController extends BaseController {
 
-    private final static Logger log = LoggerFactory.getLogger(ImNetworkRoomController.class);
+    private final static Logger log = LoggerFactory.getLogger(RoomController.class);
     /**
      * 服务对象
      */
@@ -49,7 +49,7 @@ public class ImNetworkRoomController extends BaseController {
 
     @ApiOperation("加入网络教室")
     @PostMapping(value = "/join")
-    public HttpResponseResult<ImNetworkRoomResult> joinRoom(@RequestBody ImNetworkBaseDto imNetworkBaseDto) throws Exception {
+    public BaseResponse<ImNetworkRoomResult> joinRoom(@RequestBody ImNetworkBaseDto imNetworkBaseDto) throws Exception {
 
         // 设置请求客户端来源
         if (Objects.isNull(imNetworkBaseDto.getClientType())) {
@@ -64,7 +64,7 @@ public class ImNetworkRoomController extends BaseController {
 
     @ApiOperation("加入网络教室状态回调")
     @PostMapping(value = "joinRoomFailure")
-    public HttpResponseResult joinRoomFailure(@RequestBody ImNetworkBaseDto imNetworkBaseDto){
+    public BaseResponse joinRoomFailure(@RequestBody ImNetworkBaseDto imNetworkBaseDto){
 
         // 设置请求客户端来源
         if (Objects.isNull(imNetworkBaseDto.getClientType())) {
@@ -74,7 +74,7 @@ public class ImNetworkRoomController extends BaseController {
         imNetworkRoomService.joinRoomFailure(Optional.ofNullable(imNetworkBaseDto)
                 .map(ImNetworkBaseDto::getRoomId)
                 .orElseThrow(()->new BizException("房间号不可为空")).toString(), imNetworkBaseDto.getClientType());
-        return succeed();
+        return BaseResponse.success();
     }
 
     @PostMapping(value = "/statusSync")
@@ -97,7 +97,7 @@ public class ImNetworkRoomController extends BaseController {
 
     @ApiOperation("退出网络教室")
     @PostMapping(value = "/leave")
-    public HttpResponseResult leaveRoom(@RequestBody ImNetworkBaseDto imNetworkBaseDto) throws Exception {
+    public BaseResponse leaveRoom(@RequestBody ImNetworkBaseDto imNetworkBaseDto) throws Exception {
 
         // 设置请求客户端来源
         if (Objects.isNull(imNetworkBaseDto.getClientType())) {
@@ -118,12 +118,12 @@ public class ImNetworkRoomController extends BaseController {
         imNetworkRoomService.quitRoomSuccess(Optional.ofNullable(imNetworkBaseDto)
                 .map(ImNetworkBaseDto::getRoomId)
                 .orElseThrow(()->new BizException("房间号不可为空")).toString(), imUserId);
-        return succeed();
+        return BaseResponse.success();
     }
 
     @ApiOperation("控制学员节拍器")
     @PostMapping(value = "/sendImPlayMidiMessage")
-    public HttpResponseResult sendImPlayMidiMessage(@RequestBody ImNetworkCustomMessage customMessage) throws Exception {
+    public BaseResponse sendImPlayMidiMessage(@RequestBody ImNetworkCustomMessage customMessage) throws Exception {
 
         // 设置客户端类型
         if (Objects.isNull(customMessage.getClientType())) {
@@ -131,12 +131,12 @@ public class ImNetworkRoomController extends BaseController {
         }
 
         imNetworkRoomService.sendImPlayMidiMessage(customMessage);
-        return succeed();
+        return BaseResponse.success();
     }
 
     @ApiOperation("移动端用来渲染页面")
     @PostMapping(value = "/display")
-    public HttpResponseResult display(@RequestBody ImNetworkDisplayDataDto displayData) throws Exception {
+    public BaseResponse display(@RequestBody ImNetworkDisplayDataDto displayData) throws Exception {
 
         // 设置客户端类型
         if (Objects.isNull(displayData.getClientType())) {
@@ -144,12 +144,12 @@ public class ImNetworkRoomController extends BaseController {
         }
 
         imNetworkRoomService.display(displayData);
-        return succeed();
+        return BaseResponse.success();
     }
 
     @ApiOperation(value = "批量控制学员设备开关")
     @PostMapping(value = "/device/batchControl")
-    public Object batchControlDevice(@RequestBody ImNetworkDeviceControlDto deviceControl)throws Exception {
+    public BaseResponse batchControlDevice(@RequestBody ImNetworkDeviceControlDto deviceControl)throws Exception {
 
         // 设置客户端类型
         if (Objects.isNull(deviceControl.getClientType())) {
@@ -157,12 +157,12 @@ public class ImNetworkRoomController extends BaseController {
         }
 
         imNetworkRoomService.batchControlDevice(deviceControl);
-        return succeed();
+        return BaseResponse.success();
     }
 
     @ApiOperation(value = "控制学员设备开关")
     @PostMapping(value = "/device/control")
-    public HttpResponseResult controlDevice(@RequestBody ImNetworkDeviceControlDto deviceControl)
+    public BaseResponse controlDevice(@RequestBody ImNetworkDeviceControlDto deviceControl)
             throws Exception {
 
         // 设置客户端类型
@@ -171,12 +171,12 @@ public class ImNetworkRoomController extends BaseController {
         }
 
         imNetworkRoomService.controlDevice(deviceControl);
-        return succeed();
+        return BaseResponse.success();
     }
 
     @ApiOperation(value = "学员同意打开,麦克风、摄像头")
     @PostMapping(value = "/device/approve")
-    public HttpResponseResult approveControlDevice(@RequestBody ImNetworkDeviceControlDto deviceControl) throws Exception {
+    public BaseResponse approveControlDevice(@RequestBody ImNetworkDeviceControlDto deviceControl) throws Exception {
         deviceControl.setEnable(true);
 
         // 设置客户端类型
@@ -185,12 +185,12 @@ public class ImNetworkRoomController extends BaseController {
         }
 
         imNetworkRoomService.approveControlDevice(deviceControl);
-        return succeed();
+        return BaseResponse.success();
     }
 
     @ApiOperation(value = "学员拒绝打开,麦克风、摄像头")
     @PostMapping(value = "/device/reject")
-    public HttpResponseResult rejectControlDevice(@RequestBody ImNetworkDeviceControlDto deviceControl)
+    public BaseResponse rejectControlDevice(@RequestBody ImNetworkDeviceControlDto deviceControl)
             throws Exception {
         deviceControl.setEnable(false);
 
@@ -200,7 +200,7 @@ public class ImNetworkRoomController extends BaseController {
         }
 
         imNetworkRoomService.rejectControlDevice(deviceControl);
-        return succeed();
+        return BaseResponse.success();
     }
 
     @ApiOperation(value = "学员设备状态同步")
@@ -214,12 +214,12 @@ public class ImNetworkRoomController extends BaseController {
         }
 
         imNetworkRoomService.deviceStatusSync(deviceControl);
-        return succeed();
+        return BaseResponse.success();
     }
 
     @ApiOperation(value = "老师在网络教室选择完伴奏后、通知学员下载伴奏")
     @PostMapping(value = "pushDownloadMusicSheetMsg")
-    public HttpResponseResult pushDownloadMusicSheetMsg(@RequestBody ImNetworkMusicSheetDto musicSheetDto) throws Exception {
+    public BaseResponse pushDownloadMusicSheetMsg(@RequestBody ImNetworkMusicSheetDto musicSheetDto) throws Exception {
 
         // 设置客户端类型
         if (Objects.isNull(musicSheetDto.getClientType())) {
@@ -227,12 +227,12 @@ public class ImNetworkRoomController extends BaseController {
         }
 
         imNetworkRoomService.pushDownloadMusicSheetMsg(musicSheetDto);
-        return succeed();
+        return BaseResponse.success();
     }
 
     @ApiOperation(value = "学员伴奏下载状态回调")
     @PostMapping(value = "musicSheetDownNotify")
-    public HttpResponseResult adjustMusicScore(@RequestBody ImNetworkMusicSheetDto musicSheetDto) throws Exception {
+    public BaseResponse adjustMusicScore(@RequestBody ImNetworkMusicSheetDto musicSheetDto) throws Exception {
 
         // 设置客户端类型
         if (Objects.isNull(musicSheetDto.getClientType())) {
@@ -240,13 +240,13 @@ public class ImNetworkRoomController extends BaseController {
         }
 
         imNetworkRoomService.musicSheetDownNotify(musicSheetDto);
-        return succeed();
+        return BaseResponse.success();
     }
 
     @ApiOperation(value = "查询不在教室的学员")
     @PostMapping(value = "/queryNoJoinStu")
-    public HttpResponseResult queryNoJoinStu(@RequestBody ImNetworkBaseDto imNetworkBaseDto){
-        return succeed(imNetworkRoomService.queryNoJoinStu(Optional.ofNullable(imNetworkBaseDto)
+    public BaseResponse<List<BasicUserInfo>> queryNoJoinStu(@RequestBody ImNetworkBaseDto imNetworkBaseDto){
+        return BaseResponse.success(imNetworkRoomService.queryNoJoinStu(Optional.ofNullable(imNetworkBaseDto)
                 .map(ImNetworkBaseDto::getRoomId)
                 .orElseThrow(()->new BizException("房间号不可为空"))));
     }