Browse Source

网络教室

zouxuan 3 years ago
parent
commit
0abad816b9

+ 62 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ImNetworkControlDeviceNotifyMessage.java

@@ -0,0 +1,62 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+
+import com.yonge.cooleshow.biz.dal.entity.BaseMessage;
+
+public class ImNetworkControlDeviceNotifyMessage extends BaseMessage {
+
+    private int action;
+//    private String ticket;
+    private int type;
+    private String opUserId;
+    private String opUserName;
+
+    public ImNetworkControlDeviceNotifyMessage(int action) {
+        this.action = action;
+    }
+
+    public int getAction() {
+        return action;
+    }
+
+    public void setAction(int action) {
+        this.action = action;
+    }
+
+//    public String getTicket() {
+//        return ticket;
+//    }
+//
+//    public void setTicket(String ticket) {
+//        this.ticket = ticket;
+//    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public String getOpUserId() {
+        return opUserId;
+    }
+
+    public void setOpUserId(String opUserId) {
+        this.opUserId = opUserId;
+    }
+
+    public String getOpUserName() {
+        return opUserName;
+    }
+
+    public void setOpUserName(String opUserName) {
+        this.opUserName = opUserName;
+    }
+
+    @Override
+    public String getObjectName() {
+        return "SC:CDNMsg";
+    }
+}

+ 105 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ImNetworkDeviceControlDto.java

@@ -0,0 +1,105 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+import com.yonge.cooleshow.biz.dal.enums.ImNetworkDeviceTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+public class ImNetworkDeviceControlDto {
+	@ApiModelProperty(value = "需要操作的类型",required = true)
+	private ImNetworkDeviceTypeEnum deviceType;
+
+	@ApiModelProperty(value = "开关",required = true)
+	private Boolean enable;
+
+	@ApiModelProperty(value = "房间号",required = true)
+	private String roomId;
+
+	@ApiModelProperty(value = "用户编号",required = true)
+	private Long userId;
+
+	@ApiModelProperty(value = "ticket",required = true)
+	private String ticket;
+
+	@ApiModelProperty(value = "状态",required = true)
+	private Integer status;
+
+	@ApiModelProperty(value = "原音",required = true)
+	private Integer examSongId;
+
+	@ApiModelProperty(value = "伴奏",required = true)
+	private Integer musicScoreAccompanimentId;
+
+	@ApiModelProperty(value = "伴奏音量",required = true)
+	private Integer soundVolume = 100;
+
+	public ImNetworkDeviceTypeEnum getDeviceType() {
+		return deviceType;
+	}
+
+	public void setDeviceType(ImNetworkDeviceTypeEnum deviceType) {
+		this.deviceType = deviceType;
+	}
+
+	public Boolean getEnable() {
+		return enable;
+	}
+
+	public void setEnable(Boolean enable) {
+		this.enable = enable;
+	}
+
+	public String getRoomId() {
+		return roomId;
+	}
+
+	public void setRoomId(String roomId) {
+		this.roomId = roomId;
+	}
+
+	public Long getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Long userId) {
+		this.userId = userId;
+	}
+
+	public String getTicket() {
+		return ticket;
+	}
+
+	public void setTicket(String ticket) {
+		this.ticket = ticket;
+	}
+
+	public Integer getStatus() {
+		return status;
+	}
+
+	public void setStatus(Integer status) {
+		this.status = status;
+	}
+
+	public Integer getExamSongId() {
+		return examSongId;
+	}
+
+	public void setExamSongId(Integer examSongId) {
+		this.examSongId = examSongId;
+	}
+
+	public Integer getMusicScoreAccompanimentId() {
+		return musicScoreAccompanimentId;
+	}
+
+	public void setMusicScoreAccompanimentId(Integer musicScoreAccompanimentId) {
+		this.musicScoreAccompanimentId = musicScoreAccompanimentId;
+	}
+
+	public Integer getSoundVolume() {
+		return soundVolume;
+	}
+
+	public void setSoundVolume(Integer soundVolume) {
+		this.soundVolume = soundVolume;
+	}
+}

+ 71 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ImNetworkDeviceStateChangedMessage.java

@@ -0,0 +1,71 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+
+import com.yonge.cooleshow.biz.dal.entity.BaseMessage;
+
+public class ImNetworkDeviceStateChangedMessage extends BaseMessage {
+    private boolean enable;
+    private int type;
+    private Integer musicScoreAccompanimentId;
+    private String userId;
+    private String userName;
+    private Integer soundVolume = 100;
+
+    public ImNetworkDeviceStateChangedMessage(int type, boolean enable) {
+        this.type = type;
+        this.enable = enable;
+    }
+
+    public boolean isEnable() {
+        return enable;
+    }
+
+    public void setEnable(boolean enable) {
+        this.enable = enable;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public Integer getMusicScoreAccompanimentId() {
+        return musicScoreAccompanimentId;
+    }
+
+    public void setMusicScoreAccompanimentId(Integer musicScoreAccompanimentId) {
+        this.musicScoreAccompanimentId = musicScoreAccompanimentId;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public Integer getSoundVolume() {
+        return soundVolume;
+    }
+
+    public void setSoundVolume(Integer soundVolume) {
+        this.soundVolume = soundVolume;
+    }
+
+    @Override
+    public String getObjectName() {
+        return "SC:DRMsg";
+    }
+}

+ 61 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ImNetworkDisplayDataDto.java

@@ -0,0 +1,61 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+import com.yonge.cooleshow.biz.dal.enums.ImNetworkDisplayEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+public class ImNetworkDisplayDataDto {
+
+	@ApiModelProperty(value = "房间号",required = true)
+    private String roomId;
+
+	@ApiModelProperty(value = "类型",required = true)
+    private ImNetworkDisplayEnum type;
+
+	@ApiModelProperty(value = "即将展示的对应人的 userId",required = true)
+    private String userId;
+
+	@ApiModelProperty(value = "display uri",required = true)
+    private String uri;
+
+	public String getRoomId() {
+		return roomId;
+	}
+
+	public void setRoomId(String roomId) {
+		this.roomId = roomId;
+	}
+
+	public ImNetworkDisplayEnum getType() {
+		return type;
+	}
+
+	public void setType(ImNetworkDisplayEnum type) {
+		this.type = type;
+	}
+
+	public String getUserId() {
+		return userId;
+	}
+
+	public void setUserId(String userId) {
+		this.userId = userId;
+	}
+
+	public String getUri() {
+		return uri;
+	}
+
+	public void setUri(String uri) {
+		this.uri = uri;
+	}
+
+	@Override
+	public String toString() {
+		return "ImNetworkDisplayDataDto{" +
+				"roomId='" + roomId + '\'' +
+				", type=" + type +
+				", userId='" + userId + '\'' +
+				", uri='" + uri + '\'' +
+				'}';
+	}
+}

+ 83 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ImNetworkMusicSheetDownDto.java

@@ -0,0 +1,83 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+public class ImNetworkMusicSheetDownDto {
+	@ApiModelProperty(value = "房间号",required = true)
+	private String roomId;
+
+	@ApiModelProperty(value = "伴奏编号",required = true)
+	private Long musicSheetAccompanimentId;
+
+	@ApiModelProperty(value = "曲目编号",required = true)
+	private Long musicSheetId;
+
+	@ApiModelProperty(value = "用户编号",required = true)
+	private Long userId;
+
+	@ApiModelProperty(value = "0学生1老师")
+	private Integer userType;
+
+	@ApiModelProperty(value = "伴奏下载状态(1下载成功0下载中2下载失败)")
+	private Integer status;
+
+	public String getRoomId() {
+		return roomId;
+	}
+
+	public void setRoomId(String roomId) {
+		this.roomId = roomId;
+	}
+
+	public Long getMusicSheetAccompanimentId() {
+		return musicSheetAccompanimentId;
+	}
+
+	public void setMusicSheetAccompanimentId(Long musicSheetAccompanimentId) {
+		this.musicSheetAccompanimentId = musicSheetAccompanimentId;
+	}
+
+	public Long getMusicSheetId() {
+		return musicSheetId;
+	}
+
+	public void setMusicSheetId(Long musicSheetId) {
+		this.musicSheetId = musicSheetId;
+	}
+
+	public Long getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Long userId) {
+		this.userId = userId;
+	}
+
+	public Integer getUserType() {
+		return userType;
+	}
+
+	public void setUserType(Integer userType) {
+		this.userType = userType;
+	}
+
+	public Integer getStatus() {
+		return status;
+	}
+
+	public void setStatus(Integer status) {
+		this.status = status;
+	}
+
+	@Override
+	public String toString() {
+		return "ImNetworkMusicScoreDownDto{" +
+				"roomId='" + roomId + '\'' +
+				", musicSheetAccompanimentId=" + musicSheetAccompanimentId +
+				", musicSheetId=" + musicSheetId +
+				", userId=" + userId +
+				", userType=" + userType +
+				", status=" + status +
+				'}';
+	}
+}

+ 38 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ImNetworkMusicSheetDownloadStatusMessage.java

@@ -0,0 +1,38 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+
+import com.yonge.cooleshow.biz.dal.entity.BaseMessage;
+
+import java.util.List;
+
+public class ImNetworkMusicSheetDownloadStatusMessage extends BaseMessage {
+    private Integer studentId;
+
+    private List<CourseScheduleStudentMusicSheetResult> studentMusicScores;
+
+    public ImNetworkMusicSheetDownloadStatusMessage(Integer studentId, List<CourseScheduleStudentMusicSheetResult> studentMusicScores) {
+        this.studentId = studentId;
+        this.studentMusicScores = studentMusicScores;
+    }
+
+    public Integer getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Integer studentId) {
+        this.studentId = studentId;
+    }
+
+    public List<CourseScheduleStudentMusicSheetResult> getStudentMusicScores() {
+        return studentMusicScores;
+    }
+
+    public void setStudentMusicScores(List<CourseScheduleStudentMusicSheetResult> studentMusicScores) {
+        this.studentMusicScores = studentMusicScores;
+    }
+
+    @Override
+    public String getObjectName() {
+        return "DY:MSDSMsg";
+    }
+}

+ 24 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/ImNetworkActionEnum.java

@@ -0,0 +1,24 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.yonge.toolset.base.enums.BaseEnum;
+
+public enum ImNetworkActionEnum implements BaseEnum<String,ImNetworkActionEnum> {
+    INVITE("邀请"),
+    REJECT("拒绝"),
+    APPROVE("同意");
+
+    private String msg;
+
+    ImNetworkActionEnum(String msg) {
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.name();
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+}

+ 28 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/ImNetworkDeviceTypeEnum.java

@@ -0,0 +1,28 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.yonge.toolset.base.enums.BaseEnum;
+
+public enum ImNetworkDeviceTypeEnum implements BaseEnum<String,ImNetworkDeviceTypeEnum> {
+    MICROPHONE("麦克风"),
+    CAMERA("摄像头"),
+    MUSIC_MODE("音乐模式"),
+    HAND_UP("举手"),
+    EXAM_SONG("伴奏陪练"),
+    MUSIC_SHEET("原音"),
+    ACCOMPANIMENT("伴奏");
+
+    private String msg;
+
+    ImNetworkDeviceTypeEnum(String msg) {
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.name();
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+}

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

@@ -0,0 +1,33 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+// Display 定义格式如下:
+// display://type=1?userId=xxx?uri=xxxxx
+// 0,1,3 时,userId 有效,对应此人的 id,uri 无效
+// 2 时,展示白板,必须携带白板 uri
+// 4 时,清空当前 room 的 display
+
+import com.yonge.toolset.base.enums.BaseEnum;
+
+public enum ImNetworkDisplayEnum implements BaseEnum<String, ImNetworkDisplayEnum> {
+    TEACHER("老师"),
+    WHITE_BOARD("白板"),
+    SCREEN("屏幕"),
+    //清空当前 room 的 display
+    NONE("清空"),
+    STUDENT("学员");
+
+    private String msg;
+
+    ImNetworkDisplayEnum(String msg) {
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.name();
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+}

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

@@ -53,6 +53,7 @@ public interface ImNetworkRoomService extends IService<ImNetworkRoom> {
     //学员拒绝打开,麦克风、摄像头等权限请求
     //学员拒绝打开,麦克风、摄像头等权限请求
     void rejectControlDevice(ImNetworkDeviceControlDto deviceControl) throws Exception;
     void rejectControlDevice(ImNetworkDeviceControlDto deviceControl) throws Exception;
 
 
-    void adjustExamSong(ImNetworkMusicSheetDownDto downDto) throws Exception;
+    //学员伴奏下载状态回调
+    void musicSheetDownNotify(String roomId, Long accompanimentId, Integer status) throws Exception;
 }
 }
 
 

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

@@ -473,30 +473,27 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
 
 
     @Override
     @Override
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
-    public void adjustExamSong(ImNetworkMusicSheetDownDto downDto) throws Exception {
+    public void musicSheetDownNotify(String roomId, Long accompanimentId, Integer status) throws Exception {
+        log.info("musicSheetDownNotify: roomId={},accompanimentId={},status={}", roomId,accompanimentId,status);
         SysUser sysUser = Optional.ofNullable(sysUserFeignService.queryUserInfo()).
         SysUser sysUser = Optional.ofNullable(sysUserFeignService.queryUserInfo()).
                 orElseThrow(()-> new BizException("请登录"));
                 orElseThrow(()-> new BizException("请登录"));
-        log.info("adjustExamSong: downDto={}", downDto);
-        MusicSheet musicSheet = Optional.ofNullable(musicSheetService.getById(downDto.getMusicSheetId())).
-                orElseThrow(()-> new BizException("曲目信息不存在"));
-        long scheduleId = Long.parseLong(downDto.getRoomId());
-        String examJson = courseScheduleStudentPaymentService.getDao().getMusicSheetByCourseIdAndUserId(scheduleId, sysUser.getId());
-        ImNetworkRoomMusicSheetDownloadData msg;
-        if (StringUtils.isEmpty(examJson)) {
-            msg = new ImNetworkRoomMusicSheetDownloadData();
-            msg.setMusicSheetName(musicSheet.getMusicSheetName());
-            msg.setUrl(musicSheet.getUrl());
-            msg.setStatus(downDto.getStatus());
-            msg.setMusicSheetId(musicSheet.getId());
-        } else {
-            msg = JSON.parseObject(examJson, ImNetworkRoomMusicSheetDownloadData.class);
-            msg.setStatus(downDto.getStatus());
+        Long scheduleId = Long.parseLong(roomId);
+        List<CourseScheduleStudentMusicSheetResult> studentMusicSheetResults = courseScheduleStudentMusicSheetService.getDao().queryBySheetIdAndCourseId(accompanimentId, scheduleId, sysUser.getId(), null, null);
+        if(CollectionUtils.isEmpty(studentMusicSheetResults)){
+            return;
+        }
+        if (accompanimentId != null) {
+            Optional.ofNullable(musicSheetAccompanimentService.getById(accompanimentId)).
+                    orElseThrow(()-> new BizException("曲目信息不存在"));
+            //修改下载状态
+            CourseScheduleStudentMusicSheetResult musicSheetResult = studentMusicSheetResults.get(0);
+            musicSheetResult.setDownStatus(status);
+            courseScheduleStudentMusicSheetService.updateById(musicSheetResult);
         }
         }
-        courseScheduleStudentPaymentService.getDao().adjustExamSong(scheduleId,sysUser.getId(),JSON.toJSONString(msg));
         //给老师发送学员曲目下载状态
         //给老师发送学员曲目下载状态
         CourseSchedule courseSchedule = courseScheduleService.getById(scheduleId);
         CourseSchedule courseSchedule = courseScheduleService.getById(scheduleId);
-        ImNetworkMusicSheetDownloadStatusMessage deviceResourceMessage = new ImNetworkMusicSheetDownloadStatusMessage(downDto.getStatus(), sysUser.getId(), downDto.getMusicSheetId());
-        imHelper.publishMessage(sysUser.getId().toString(), courseSchedule.getTeacherId().toString(), downDto.getRoomId(), deviceResourceMessage);
+        ImNetworkMusicSheetDownloadStatusMessage statusMessage = new ImNetworkMusicSheetDownloadStatusMessage(status,studentMusicSheetResults);
+        imHelper.publishMessage(sysUser.getId().toString(), courseSchedule.getTeacherId().toString(), roomId, statusMessage);
     }
     }
 
 
     //校验用户是否提前进入教室
     //校验用户是否提前进入教室

+ 8 - 3
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImNetworkRoomController.java

@@ -143,10 +143,15 @@ public class ImNetworkRoomController extends BaseController {
         return succeed();
         return succeed();
     }
     }
 
 
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "roomId", dataType = "String", value = "房间号",required = true),
+            @ApiImplicitParam(name = "accompanimentId", dataType = "Long", value = "伴奏编号",required = false),
+            @ApiImplicitParam(name = "status", dataType = "Integer", value = "伴奏下载状态(1下载成功0下载中2下载失败)",required = true)
+    })
     @ApiOperation(value = "学员伴奏下载状态回调")
     @ApiOperation(value = "学员伴奏下载状态回调")
-    @PostMapping(value = "/adjustExamSong", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
-    public HttpResponseResult adjustExamSong(@RequestBody ImNetworkMusicSheetDownDto downDto) throws Exception {
-        imNetworkRoomService.adjustExamSong(downDto);
+    @PostMapping(value = "musicSheetDownNotify", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    public HttpResponseResult adjustMusicScore(String roomId,Long accompanimentId,Integer status) throws Exception {
+        imNetworkRoomService.musicSheetDownNotify(roomId,accompanimentId,status);
         return succeed();
         return succeed();
     }
     }
 }
 }