|
@@ -2,25 +2,22 @@ package com.ym.service.Impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.alibaba.fastjson.serializer.SerializerFeature;
|
|
|
import com.ym.common.ApiException;
|
|
|
import com.ym.common.BaseResponse;
|
|
|
import com.ym.common.DisplayEnum;
|
|
|
import com.ym.common.ErrorEnum;
|
|
|
import com.ym.config.IMProperties;
|
|
|
import com.ym.config.RoomProperties;
|
|
|
-import com.ym.dao.RoomDao;
|
|
|
-import com.ym.dao.RoomMemberDao;
|
|
|
-import com.ym.dao.UserDao;
|
|
|
-import com.ym.dao.WhiteboardDao;
|
|
|
+import com.ym.dao.*;
|
|
|
import com.ym.job.ScheduleManager;
|
|
|
import com.ym.mec.auth.api.client.SysUserFeignService;
|
|
|
import com.ym.mec.auth.api.entity.SysUser;
|
|
|
import com.ym.mec.biz.dal.dao.*;
|
|
|
+import com.ym.mec.biz.dal.dao.CourseScheduleStudentMusicScoreDao;
|
|
|
import com.ym.mec.biz.dal.dto.BasicUserDto;
|
|
|
import com.ym.mec.biz.dal.dto.RongyunBasicUserDto;
|
|
|
-import com.ym.mec.biz.dal.entity.CourseSchedule;
|
|
|
-import com.ym.mec.biz.dal.entity.SysExamSong;
|
|
|
-import com.ym.mec.biz.dal.entity.Teacher;
|
|
|
+import com.ym.mec.biz.dal.entity.*;
|
|
|
import com.ym.mec.biz.dal.enums.GroupType;
|
|
|
import com.ym.mec.biz.dal.enums.TeachModeEnum;
|
|
|
import com.ym.mec.biz.service.StudentAttendanceService;
|
|
@@ -95,6 +92,10 @@ public class RoomServiceImpl implements RoomService {
|
|
|
@Autowired
|
|
|
private SysConfigDao sysConfigDao;
|
|
|
@Autowired
|
|
|
+ private CourseScheduleStudentMusicScoreDao courseScheduleStudentMusicScoreDao;
|
|
|
+ @Autowired
|
|
|
+ private SysMusicScoreAccompanimentDao sysMusicScoreAccompanimentDao;
|
|
|
+ @Autowired
|
|
|
private RedisTemplate<String,String> redisTemplate;
|
|
|
|
|
|
@Override
|
|
@@ -206,6 +207,8 @@ public class RoomServiceImpl implements RoomService {
|
|
|
userResult.setJoinTime(member.getJoinDt());
|
|
|
}
|
|
|
|
|
|
+ List<CourseScheduleStudentMusicScore> scheduleStudentMusicScores = courseScheduleStudentMusicScoreDao.queryByScoreIdAndCourseId(null, courseId,null, null, null);
|
|
|
+
|
|
|
String display = "";
|
|
|
if (roleEnum == RoleTeacher) {
|
|
|
display = "display://type=1?userId=" + userId + "?uri=";
|
|
@@ -226,6 +229,13 @@ public class RoomServiceImpl implements RoomService {
|
|
|
display = room.getDisplay();
|
|
|
}
|
|
|
}
|
|
|
+ //已下载的伴奏列表
|
|
|
+ if(scheduleStudentMusicScores != null && scheduleStudentMusicScores.size() > 0){
|
|
|
+ List<CourseScheduleStudentMusicScore> musicScores = scheduleStudentMusicScores.stream().filter(e -> e.getUserId().equals(sysUser.getId())).collect(Collectors.toList());
|
|
|
+ String toJSONString = JSON.toJSONString(musicScores, SerializerFeature.DisableCircularReferenceDetect);
|
|
|
+ List<CourseScheduleStudentMusicScore> lists = JSON.parseArray(toJSONString, CourseScheduleStudentMusicScore.class);
|
|
|
+ userResult.setScheduleStudentMusicScores(lists);
|
|
|
+ }
|
|
|
|
|
|
userResult.setUserName(userName);
|
|
|
userResult.setUserId(userId);
|
|
@@ -248,7 +258,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
Set<String> userIds = roomMemberList.stream().map(e -> e.getUid()).collect(Collectors.toSet());
|
|
|
Map<Integer,String> midiMap = MapUtil.convertMybatisMap(courseScheduleStudentPaymentDao.queryMidiByUserIdsAndCourseId(userIds,courseId.toString()));
|
|
|
Map<Integer,String> examSongMap = MapUtil.convertMybatisMap(courseScheduleStudentPaymentDao.queryExamSongByUserIdsAndCourseId(userIds,courseId.toString()));
|
|
|
- roomResult.setMembers(roomMemberList,midiMap,examSongMap);
|
|
|
+ roomResult.setMembers(roomMemberList,midiMap,examSongMap,scheduleStudentMusicScores);
|
|
|
}
|
|
|
roomResult.setWhiteboards(whiteboardDao.findByRid(roomId));
|
|
|
log.info("join room: roomId = {}, userId = {}, userName={}, role = {}", roomId, userId, userName, roleEnum);
|
|
@@ -436,6 +446,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
CourseSchedule courseSchedule = courseScheduleDao.get(firstCourseId.longValue());
|
|
|
if(teacher != null && teacher.getId().equals(courseSchedule.getActualTeacherId())){
|
|
|
roleEnum = RoleTeacher;
|
|
|
+ courseScheduleStudentMusicScoreDao.closePlayStatus(courseSchedule.getId(),null,null);
|
|
|
}else {
|
|
|
roleEnum = RoleStudent;
|
|
|
}
|
|
@@ -477,6 +488,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
roomDao.deleteByRid(roomId);
|
|
|
deleteWhiteboardByUser(roomId, userId);
|
|
|
imHelper.dismiss(userId, roomId);
|
|
|
+ courseScheduleStudentMusicScoreDao.closePlayStatus(courseSchedule.getId(),null,null);
|
|
|
log.info("leaveRoomSuccess dismiss the room: {},userId: {}", roomId,userId);
|
|
|
} else {
|
|
|
roomMemberDao.deleteUserByRidAndUid(roomId, userId);
|
|
@@ -676,10 +688,8 @@ public class RoomServiceImpl implements RoomService {
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public String createWhiteBoard(String roomId) throws Exception {
|
|
|
CheckUtils.checkArgument(roomId != null, "roomId must't be null");
|
|
|
-// CheckUtils.checkArgument(roomDao.existsByRid(roomId), "room not exist");
|
|
|
SysUser authUser = sysUserFeignService.queryUserInfo();
|
|
|
String userId = authUser.getId().toString();
|
|
|
-// CheckUtils.checkArgument(roomMemberDao.existsByRidAndUid(roomId, userId), "room member not exist");
|
|
|
|
|
|
log.info("createWhiteBoard: roomId = {}", roomId);
|
|
|
|
|
@@ -794,10 +804,35 @@ public class RoomServiceImpl implements RoomService {
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public Boolean controlDevice(String roomId, String userId, DeviceTypeEnum typeEnum, boolean enable) throws Exception {
|
|
|
- CheckUtils.checkArgument(roomId != null, "roomId must't be null");
|
|
|
- CheckUtils.checkArgument(userId != null, "userId must't be null");
|
|
|
- CheckUtils.checkArgument(roomDao.existsByRid(roomId), "room not exist");
|
|
|
+ public Boolean controlDevice(ReqDeviceControlData data) throws Exception {
|
|
|
+ String roomId = data.getRoomId();
|
|
|
+ String userId = data.getUserId();
|
|
|
+ DeviceTypeEnum typeEnum;
|
|
|
+ boolean enable;
|
|
|
+ if (data.getCameraOn() != null) {
|
|
|
+ typeEnum = DeviceTypeEnum.Camera;
|
|
|
+ enable = data.getCameraOn();
|
|
|
+ } else if (data.getMicrophoneOn() != null) {
|
|
|
+ typeEnum = DeviceTypeEnum.Microphone;
|
|
|
+ enable = data.getMicrophoneOn();
|
|
|
+ } else if (data.getMusicModeOn() != null) {
|
|
|
+ typeEnum = DeviceTypeEnum.MusicMode;
|
|
|
+ enable = data.getMusicModeOn();
|
|
|
+ } else if (data.getHandUpOn() != null) {
|
|
|
+ typeEnum = DeviceTypeEnum.HandUp;
|
|
|
+ enable = data.getHandUpOn();
|
|
|
+ }else if (data.getExamSongOn() != null) {
|
|
|
+ typeEnum = DeviceTypeEnum.ExamSong;
|
|
|
+ enable = data.getExamSongOn();
|
|
|
+ }else if (data.getMusicScoreOn() != null) {
|
|
|
+ typeEnum = DeviceTypeEnum.MusicScore;
|
|
|
+ enable = data.getMusicScoreOn();
|
|
|
+ }else if (data.getAccompanimentOn() != null) {
|
|
|
+ typeEnum = DeviceTypeEnum.MusicScoreAccompaniment;
|
|
|
+ enable = data.getAccompanimentOn();
|
|
|
+ } else {
|
|
|
+ throw new ApiException(ErrorEnum.ERR_REQUEST_PARA_ERR);
|
|
|
+ }
|
|
|
SysUser authUser = sysUserFeignService.queryUserInfo();
|
|
|
log.info("controlDevice: userId={}, typeEnum={}, onOff={}", userId, typeEnum, enable);
|
|
|
|
|
@@ -816,6 +851,25 @@ public class RoomServiceImpl implements RoomService {
|
|
|
DeviceStateChangedMessage deviceResourceMessage = new DeviceStateChangedMessage(typeEnum.ordinal(), enable);
|
|
|
deviceResourceMessage.setUserId(userId);
|
|
|
imHelper.publishMessage(authUser.getId().toString(), roomId, deviceResourceMessage, 1);
|
|
|
+ }else if(typeEnum.equals(DeviceTypeEnum.MusicScore)){
|
|
|
+ long scheduleId = Long.parseLong(roomId.substring(1));
|
|
|
+ //关闭所有曲目播放
|
|
|
+ courseScheduleStudentMusicScoreDao.closePlayStatus(scheduleId,Integer.parseInt(userId),null);
|
|
|
+ //原音
|
|
|
+ courseScheduleStudentMusicScoreDao.openPlayStatus(scheduleId,data.getMusicScoreAccompanimentId());
|
|
|
+ DeviceStateChangedMessage deviceResourceMessage = new DeviceStateChangedMessage(typeEnum.ordinal(), enable);
|
|
|
+ deviceResourceMessage.setMusicScoreAccompanimentId(data.getMusicScoreAccompanimentId());
|
|
|
+ deviceResourceMessage.setUserId(userId);
|
|
|
+ imHelper.publishMessage(authUser.getId().toString(), roomId, deviceResourceMessage, 1);
|
|
|
+ }else if(typeEnum.equals(DeviceTypeEnum.MusicScoreAccompaniment)){
|
|
|
+ long scheduleId = Long.parseLong(roomId.substring(1));
|
|
|
+ //关闭所有曲目播放
|
|
|
+ courseScheduleStudentMusicScoreDao.closePlayStatus(scheduleId,Integer.parseInt(userId),null);
|
|
|
+ courseScheduleStudentMusicScoreDao.openAccompanimentPlayStatus(scheduleId,data.getMusicScoreAccompanimentId());
|
|
|
+ DeviceStateChangedMessage deviceResourceMessage = new DeviceStateChangedMessage(typeEnum.ordinal(), enable);
|
|
|
+ deviceResourceMessage.setMusicScoreAccompanimentId(data.getMusicScoreAccompanimentId());
|
|
|
+ deviceResourceMessage.setUserId(userId);
|
|
|
+ imHelper.publishMessage(authUser.getId().toString(), roomId, deviceResourceMessage, 1);
|
|
|
}else {
|
|
|
String ticket = IdentifierUtils.uuid();
|
|
|
ControlDeviceTaskInfo taskInfo = new ControlDeviceTaskInfo();
|
|
@@ -851,6 +905,14 @@ public class RoomServiceImpl implements RoomService {
|
|
|
msg.setEnable(enable);
|
|
|
}
|
|
|
courseScheduleStudentPaymentDao.adjustExamSong(scheduleId,Integer.parseInt(userId),JSON.toJSONString(msg));
|
|
|
+ }else if(typeEnum.equals(DeviceTypeEnum.MusicScore)){
|
|
|
+ long scheduleId = Long.parseLong(roomId.substring(1));
|
|
|
+ //关闭所有曲目播放
|
|
|
+ courseScheduleStudentMusicScoreDao.closePlayStatus(scheduleId,Integer.parseInt(userId),null);
|
|
|
+ }else if(typeEnum.equals(DeviceTypeEnum.MusicScoreAccompaniment)){
|
|
|
+ long scheduleId = Long.parseLong(roomId.substring(1));
|
|
|
+ //关闭所有曲目播放
|
|
|
+ courseScheduleStudentMusicScoreDao.closePlayStatus(scheduleId,Integer.parseInt(userId),null);
|
|
|
}else {
|
|
|
roomMemberDao.updateMusicByRidAndUid(roomId, userId, false);
|
|
|
}
|
|
@@ -881,39 +943,33 @@ public class RoomServiceImpl implements RoomService {
|
|
|
if(roomMembers.size() == 0){
|
|
|
return false;
|
|
|
}
|
|
|
- boolean result = true;
|
|
|
- if (data.getCameraOn() != null) {
|
|
|
- for (RoomMember e:roomMembers) {
|
|
|
- controlDevice(data.getRoomId(), e.getUid(), DeviceTypeEnum.Camera, data.getCameraOn());
|
|
|
- }
|
|
|
- } else if (data.getMicrophoneOn() != null) {
|
|
|
- for (RoomMember e:roomMembers) {
|
|
|
- controlDevice(data.getRoomId(), e.getUid(), DeviceTypeEnum.Microphone, data.getMicrophoneOn());
|
|
|
- }
|
|
|
- } else if (data.getMusicModeOn() != null) {
|
|
|
- for (RoomMember e:roomMembers) {
|
|
|
- controlDevice(data.getRoomId(), e.getUid(), DeviceTypeEnum.MusicMode, data.getMusicModeOn());
|
|
|
- }
|
|
|
- } else if (data.getExamSongOn() != null) {
|
|
|
+ if (data.getExamSongOn() != null) {
|
|
|
if(StringUtils.isNotEmpty(data.getUserId())){
|
|
|
for (RoomMember e:roomMembers) {
|
|
|
- controlDevice(data.getRoomId(), e.getUid(), DeviceTypeEnum.ExamSong, data.getExamSongOn());
|
|
|
+ data.setUserId(e.getUid());
|
|
|
+ controlDevice(data);
|
|
|
}
|
|
|
}else {
|
|
|
List<BasicUserDto> students = courseScheduleStudentPaymentDao.findStudents(Long.parseLong(data.getRoomId().substring(1)));
|
|
|
for (BasicUserDto e:students) {
|
|
|
- controlDevice(data.getRoomId(), e.getUserId().toString(), DeviceTypeEnum.ExamSong, data.getExamSongOn());
|
|
|
+ data.setUserId(e.getUserId().toString());
|
|
|
+ controlDevice(data);
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- throw new ApiException(ErrorEnum.ERR_REQUEST_PARA_ERR);
|
|
|
+ for (RoomMember e:roomMembers) {
|
|
|
+ data.setUserId(e.getUid());
|
|
|
+ controlDevice(data);
|
|
|
+ }
|
|
|
}
|
|
|
- return result;
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public Boolean approveControlDevice(String roomId, String ticket) throws Exception {
|
|
|
+ public Boolean approveControlDevice(ReqDeviceControlData data) throws Exception {
|
|
|
+ String ticket = data.getTicket();
|
|
|
+ String roomId = data.getRoomId();
|
|
|
CheckUtils.checkArgument(ticket != null, "ticket must't be null");
|
|
|
SysUser authUser = sysUserFeignService.queryUserInfo();
|
|
|
String userId = authUser.getId().toString();
|
|
@@ -921,7 +977,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
ControlDeviceTaskInfo taskInfo = (ControlDeviceTaskInfo) scheduleManager.executeTask(ticket);
|
|
|
if (taskInfo.getTypeEnum().equals(DeviceTypeEnum.Camera)) {
|
|
|
roomMemberDao.updateCameraByRidAndUid(roomId, userId, taskInfo.isOnOff());
|
|
|
- }if (taskInfo.getTypeEnum().equals(DeviceTypeEnum.ExamSong)) {
|
|
|
+ }else if (taskInfo.getTypeEnum().equals(DeviceTypeEnum.ExamSong)) {
|
|
|
long scheduleId = Long.parseLong(roomId.substring(1));
|
|
|
ExamSongDownloadData msg;
|
|
|
String examJson = courseScheduleStudentPaymentDao.getExamJsonByCourseIdAndUserId(scheduleId, authUser.getId());
|
|
@@ -932,7 +988,7 @@ public class RoomServiceImpl implements RoomService {
|
|
|
msg.setEnable(true);
|
|
|
}
|
|
|
courseScheduleStudentPaymentDao.adjustExamSong(scheduleId,authUser.getId(),JSON.toJSONString(msg));
|
|
|
- } else {
|
|
|
+ }else {
|
|
|
roomMemberDao.updateMicByRidAndUid(roomId, userId, taskInfo.isOnOff());
|
|
|
}
|
|
|
ControlDeviceNotifyMessage msg = new ControlDeviceNotifyMessage(ActionEnum.Approve.ordinal());
|
|
@@ -966,20 +1022,38 @@ public class RoomServiceImpl implements RoomService {
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public Boolean syncDeviceState(String roomId, DeviceTypeEnum type, boolean enable) throws Exception {
|
|
|
- CheckUtils.checkArgument(roomId != null, "roomId must't be null");
|
|
|
- CheckUtils.checkArgument(roomDao.existsByRid(roomId), "room not exist");
|
|
|
+ public Boolean syncDeviceState(ReqDeviceControlData data) throws Exception {
|
|
|
+ String roomId = data.getRoomId();
|
|
|
+ DeviceTypeEnum type;
|
|
|
+ boolean enable;
|
|
|
+ if (data.getCameraOn() != null) {
|
|
|
+ type = DeviceTypeEnum.Camera;
|
|
|
+ enable = data.getCameraOn();
|
|
|
+ } else if (data.getMicrophoneOn() != null) {
|
|
|
+ type = DeviceTypeEnum.Microphone;
|
|
|
+ enable = data.getMicrophoneOn();
|
|
|
+ } else if (data.getMusicModeOn() != null) {
|
|
|
+ type = DeviceTypeEnum.MusicMode;
|
|
|
+ enable = data.getMusicModeOn();
|
|
|
+ } else if (data.getHandUpOn() != null) {
|
|
|
+ type = DeviceTypeEnum.HandUp;
|
|
|
+ enable = data.getHandUpOn();
|
|
|
+ } else if (data.getExamSongOn() != null) {
|
|
|
+ type = DeviceTypeEnum.ExamSong;
|
|
|
+ enable = data.getExamSongOn();
|
|
|
+ }else {
|
|
|
+ throw new ApiException(ErrorEnum.ERR_REQUEST_PARA_ERR);
|
|
|
+ }
|
|
|
SysUser authUser = sysUserFeignService.queryUserInfo();
|
|
|
String userId = authUser.getId().toString();
|
|
|
|
|
|
- int result;
|
|
|
DeviceStateChangedMessage deviceResourceMessage = new DeviceStateChangedMessage(type.ordinal(), enable);
|
|
|
if (type.equals(DeviceTypeEnum.Camera)) {
|
|
|
- result = roomMemberDao.updateCameraByRidAndUid(roomId, userId, enable);
|
|
|
+ roomMemberDao.updateCameraByRidAndUid(roomId, userId, enable);
|
|
|
} else if (type.equals(DeviceTypeEnum.Microphone)){
|
|
|
- result = roomMemberDao.updateMicByRidAndUid(roomId, userId, enable);
|
|
|
+ roomMemberDao.updateMicByRidAndUid(roomId, userId, enable);
|
|
|
} else if (type.equals(DeviceTypeEnum.HandUp)){
|
|
|
- result = roomMemberDao.updateHandByRidAndUid(roomId, userId, enable);
|
|
|
+ roomMemberDao.updateHandByRidAndUid(roomId, userId, enable);
|
|
|
} else if (type.equals(DeviceTypeEnum.ExamSong)){
|
|
|
long scheduleId = Long.parseLong(roomId.substring(1));
|
|
|
ExamSongDownloadData msg;
|
|
@@ -990,13 +1064,13 @@ public class RoomServiceImpl implements RoomService {
|
|
|
msg = JSON.parseObject(examJson, ExamSongDownloadData.class);
|
|
|
msg.setEnable(enable);
|
|
|
}
|
|
|
- result = courseScheduleStudentPaymentDao.adjustExamSong(scheduleId,authUser.getId(),JSON.toJSONString(msg));
|
|
|
+ courseScheduleStudentPaymentDao.adjustExamSong(scheduleId,authUser.getId(),JSON.toJSONString(msg));
|
|
|
}else {
|
|
|
- result = roomMemberDao.updateMusicByRidAndUid(roomId, userId, enable);
|
|
|
+ roomMemberDao.updateMusicByRidAndUid(roomId, userId, enable);
|
|
|
}
|
|
|
deviceResourceMessage.setUserId(userId);
|
|
|
imHelper.publishMessage(userId, roomId, deviceResourceMessage, 1);
|
|
|
- log.info("syncDeviceState : {}, {}, result = {}", roomId, enable, result);
|
|
|
+ log.info("syncDeviceState : {}, {}, result = {}", roomId, enable);
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -1006,11 +1080,12 @@ public class RoomServiceImpl implements RoomService {
|
|
|
CheckUtils.checkArgument(roomId != null, "roomId must't be null");
|
|
|
List<RoomMember> roomMemberList = roomMemberDao.findByRid(roomId);
|
|
|
if(roomMemberList != null && roomMemberList.size() > 0){
|
|
|
+ List<CourseScheduleStudentMusicScore> scheduleStudentMusicScores = courseScheduleStudentMusicScoreDao.queryByScoreIdAndCourseId(null, Long.parseLong(roomId.substring(1)), null, null, null);
|
|
|
RoomResult roomResult = new RoomResult();
|
|
|
Set<String> userIds = roomMemberList.stream().map(e -> e.getUid()).collect(Collectors.toSet());
|
|
|
Map<Integer,String> midiMap = MapUtil.convertMybatisMap(courseScheduleStudentPaymentDao.queryMidiByUserIdsAndCourseId(userIds,roomId.substring(1)));
|
|
|
Map<Integer,String> examSongMap = MapUtil.convertMybatisMap(courseScheduleStudentPaymentDao.queryExamSongByUserIdsAndCourseId(userIds,roomId.substring(1)));
|
|
|
- roomResult.setMembers(roomMemberList,midiMap,examSongMap);
|
|
|
+ roomResult.setMembers(roomMemberList,midiMap,examSongMap,scheduleStudentMusicScores);
|
|
|
return roomResult.getMembers();
|
|
|
}
|
|
|
return null;
|
|
@@ -1430,6 +1505,42 @@ public class RoomServiceImpl implements RoomService {
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
+ public void pushDownloadMusicScoreMsg(MusicScoreData musicScoreData) throws Exception {
|
|
|
+ SysUser authUser = sysUserFeignService.queryUserInfo();
|
|
|
+ String roomId = musicScoreData.getRoomId();
|
|
|
+ Long courseScheduleId = Long.parseLong(roomId.substring(1));
|
|
|
+ List<CourseScheduleStudentMusicScore> scheduleStudentMusicScores =
|
|
|
+ courseScheduleStudentMusicScoreDao.queryByScoreIdAndCourseId(musicScoreData.getMusicScoreAccompanimentId(),
|
|
|
+ courseScheduleId,null,null,0);
|
|
|
+ SysMusicScoreAccompaniment accompaniment = sysMusicScoreAccompanimentDao.get(musicScoreData.getMusicScoreAccompanimentId());
|
|
|
+ if(scheduleStudentMusicScores.size() == 0){
|
|
|
+ //第一次下载,生成数据
|
|
|
+ List<CourseScheduleStudentPayment> courseScheduleStudentPayments = courseScheduleStudentPaymentDao.findByCourseSchedule(courseScheduleId);
|
|
|
+ Set<Integer> studentIds = courseScheduleStudentPayments.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
|
|
|
+ studentIds.forEach(e->{
|
|
|
+ CourseScheduleStudentMusicScore musicScore = new CourseScheduleStudentMusicScore();
|
|
|
+ musicScore.setMusicScoreAccompanimentId(accompaniment.getId());
|
|
|
+ musicScore.setSpeed(accompaniment.getSpeed());
|
|
|
+ musicScore.setCourseScheduleId(courseScheduleId);
|
|
|
+ musicScore.setUserId(e);
|
|
|
+ scheduleStudentMusicScores.add(musicScore);
|
|
|
+ });
|
|
|
+ CourseScheduleStudentMusicScore musicScore = new CourseScheduleStudentMusicScore();
|
|
|
+ musicScore.setMusicScoreAccompanimentId(accompaniment.getId());
|
|
|
+ musicScore.setSpeed(accompaniment.getSpeed());
|
|
|
+ musicScore.setCourseScheduleId(courseScheduleId);
|
|
|
+ musicScore.setUserId(authUser.getId());
|
|
|
+ musicScore.setUserType(1);
|
|
|
+ scheduleStudentMusicScores.add(musicScore);
|
|
|
+ courseScheduleStudentMusicScoreDao.batchInsert(scheduleStudentMusicScores);
|
|
|
+ }
|
|
|
+ MusicScoreMessage musicScoreMessage = JSON.parseObject(JSON.toJSONString(accompaniment), MusicScoreMessage.class);
|
|
|
+ MusicScoreDownloadMessageMessage msg = new MusicScoreDownloadMessageMessage(musicScoreMessage);
|
|
|
+ imHelper.publishMessage(authUser.getId().toString(), roomId, msg, 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public void pushDownloadExamSongMsg(String roomId, Integer examSongId) throws Exception {
|
|
|
SysUser authUser = sysUserFeignService.queryUserInfo();
|
|
|
|
|
@@ -1460,6 +1571,34 @@ public class RoomServiceImpl implements RoomService {
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
+ public void adjustMusicScore(MusicScoreData musicScoreData) throws Exception {
|
|
|
+ SysUser authUser = sysUserFeignService.queryUserInfo();
|
|
|
+ Integer studentId = authUser.getId();
|
|
|
+ String roomId = musicScoreData.getRoomId();
|
|
|
+ Long scheduleId = Long.parseLong(roomId.substring(1));
|
|
|
+ Integer accompanimentId = musicScoreData.getMusicScoreAccompanimentId();
|
|
|
+ List<CourseScheduleStudentMusicScore> studentMusicScores = courseScheduleStudentMusicScoreDao.queryByScoreIdAndCourseId(accompanimentId,scheduleId,studentId,null,null);
|
|
|
+ if(accompanimentId != null){
|
|
|
+ SysMusicScoreAccompaniment accompaniment = sysMusicScoreAccompanimentDao.get(accompanimentId);
|
|
|
+ if(accompaniment == null){
|
|
|
+ throw new BizException("曲目信息不存在");
|
|
|
+ }
|
|
|
+ //修改下载状态
|
|
|
+ if(studentMusicScores == null || studentMusicScores.size() == 0){
|
|
|
+ throw new BizException("学员不存在此下载曲目");
|
|
|
+ }
|
|
|
+ CourseScheduleStudentMusicScore studentMusicScore = studentMusicScores.get(0);
|
|
|
+ studentMusicScore.setDownStatus(musicScoreData.getStatus());
|
|
|
+ courseScheduleStudentMusicScoreDao.update(studentMusicScore);
|
|
|
+ }
|
|
|
+ //给老师发送学员曲目下载状态
|
|
|
+ CourseSchedule courseSchedule = courseScheduleDao.get(scheduleId);
|
|
|
+ MusicScoreDownloadStatusMessage statusMessage = new MusicScoreDownloadStatusMessage(studentId,studentMusicScores);
|
|
|
+ imHelper.publishMessage(studentId.toString(),courseSchedule.getActualTeacherId().toString(), roomId,statusMessage);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public void adjustExamSong(String roomId, Integer status,Integer examSongId) throws Exception {
|
|
|
if(roomId == null || status == null || examSongId == null){
|
|
|
throw new BizException("参数校验失败");
|