Преглед изворни кода

管乐迷曲目来源内容平台

zouxuan пре 1 година
родитељ
комит
c9df1bf0ad

+ 1 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/SysMusicScoreAccompanimentService.java

@@ -15,8 +15,7 @@ public interface SysMusicScoreAccompanimentService extends BaseService<String, S
 
     List<SysMusicScoreAccompaniment> queryAll(SysExamSongQueryInfo queryInfo);
 
-    SysMusicScoreAccompaniment initSysMusicScoreAccompaniment(CbsMusicSheetWrapper.MusicSheetApplication musicSheetApplication,
-                                                              CbsMusicSheetWrapper.MusicSheetSound sound);
+    SysMusicScoreAccompaniment initSysMusicScoreAccompaniment(CbsMusicSheetWrapper.MusicSheetAccApplication musicSheetApplication);
 
     List<SysMusicScoreAccompaniment> queryAccPage(SysExamSongQueryInfo queryInfo);
 

+ 7 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicScoreAccompanimentServiceImpl.java

@@ -174,8 +174,7 @@ public class SysMusicScoreAccompanimentServiceImpl extends BaseServiceImpl<Strin
 	}
 
 	@Override
-	public SysMusicScoreAccompaniment initSysMusicScoreAccompaniment(CbsMusicSheetWrapper.MusicSheetApplication musicSheetApplication,
-																	 CbsMusicSheetWrapper.MusicSheetSound sound){
+	public SysMusicScoreAccompaniment initSysMusicScoreAccompaniment(CbsMusicSheetWrapper.MusicSheetAccApplication musicSheetApplication){
 		SysMusicScoreAccompaniment record = new SysMusicScoreAccompaniment();
 //		record.setType(accompaniment.getType());
 		record.setRankIds("FREE".equals(musicSheetApplication.getPaymentType()) ? null : "1");
@@ -194,20 +193,16 @@ public class SysMusicScoreAccompanimentServiceImpl extends BaseServiceImpl<Strin
 		record.setExamSongName(musicSheetApplication.getName());
 		record.setCategoriesName(musicSheetApplication.getMusicSheetCategoryName());
 		record.setSpeed(musicSheetApplication.getPlaySpeed());
-		record.setMetronomeMp3Url(sound.getAudioFileUrl());
-		record.setTrack(sound.getTrack());
-		record.setSubjectName(sound.getTrack());
+		record.setTrack(musicSheetApplication.getTrack());
+		record.setSubjectName(musicSheetApplication.getTrack());
 		record.setXmlUrl(musicSheetApplication.getXmlFileUrl());
 		record.setMidiUrl(musicSheetApplication.getMidiFileUrl());
 		record.setEnableEvaluation(musicSheetApplication.getIsEvaluated());
 		record.setIsOpenMetronome(musicSheetApplication.getIsUseSystemBeat());
-		List<CbsMusicSheetWrapper.MusicSheetAccompaniment> accompanimentList = musicSheetApplication.getMusicSheetAccompanimentList();
-		if (CollectionUtils.isNotEmpty(accompanimentList)) {
-			record.setMetronomeUrl(accompanimentList.get(0).getAudioFileUrl());
-			record.setUrl(accompanimentList.get(0).getAudioFileUrl());
-		}
-		record.setMetronomeMp3Url(sound.getAudioFileUrl());
-		record.setMp3Url(sound.getAudioFileUrl());
+		record.setMetronomeUrl(musicSheetApplication.getUrl());
+		record.setUrl(musicSheetApplication.getUrl());
+		record.setMetronomeMp3Url(musicSheetApplication.getMp3Url());
+		record.setMp3Url(musicSheetApplication.getMp3Url());
 		record.setIsShowFingering(musicSheetApplication.getIsShowFingering());
 		return record;
 	}

+ 6 - 2
mec-im/src/main/java/com/ym/pojo/RoomResult.java

@@ -2,18 +2,21 @@ package com.ym.pojo;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
 import com.microsvc.toolkit.middleware.rtc.message.RTCRoomConfig;
 import com.ym.mec.biz.dal.entity.CourseScheduleStudentMusicScore;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Getter;
 import lombok.Setter;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -107,8 +110,9 @@ public class RoomResult {
             result.setHandUpOn(member.isHand());
             result.setHeadUrl(member.getHeadUrl());
             result.setPlayMidiJson(JSONObject.parseObject(midiMap.get(Integer.parseInt(member.getUid())),CustomMessage.class));
-            if(scheduleStudentMusicScores != null && scheduleStudentMusicScores.size() > 0){
-                result.setScheduleStudentMusicScores(scheduleStudentMusicScores.stream().filter(e->e.getUserId().equals(Integer.parseInt(result.getUserId()))).collect(Collectors.toList()));
+            if(CollectionUtils.isNotEmpty(scheduleStudentMusicScores)){
+                result.setScheduleStudentMusicScores(scheduleStudentMusicScores.stream()
+                        .filter(e->e.getUserId().equals(Integer.parseInt(result.getUserId()))).collect(Collectors.toList()));
             }
             ExamSongDownloadData examSongDownloadData;
             String json = examSongMap.get(Integer.parseInt(member.getUid()));

+ 45 - 33
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -6,8 +6,6 @@ import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
-import com.microsvc.toolkit.common.response.paging.PageInfo;
-import com.microsvc.toolkit.common.response.template.R;
 import com.microsvc.toolkit.middleware.rtc.RTCRoomPluginContext;
 import com.microsvc.toolkit.middleware.rtc.RTCRoomPluginService;
 import com.microsvc.toolkit.middleware.rtc.enums.EMemberAction;
@@ -601,8 +599,10 @@ public class RoomServiceImpl implements RoomService {
             }
         }
         //已下载的伴奏列表
-        if (scheduleStudentMusicScores != null && scheduleStudentMusicScores.size() > 0) {
-            List<CourseScheduleStudentMusicScore> musicScores = scheduleStudentMusicScores.stream().filter(e -> e.getUserId().equals(sysUser.getId())).collect(Collectors.toList());
+        this.initCourseScheduleStudentMusicScore(scheduleStudentMusicScores);
+        if (CollectionUtils.isNotEmpty(scheduleStudentMusicScores)) {
+            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);
@@ -642,17 +642,8 @@ public class RoomServiceImpl implements RoomService {
             Set<String> userIds = roomMemberList.stream().map(RoomMember::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()));
+            this.initCourseScheduleStudentMusicScore(scheduleStudentMusicScores);
             roomResult.setMembers(roomMemberList, midiMap, examSongMap, scheduleStudentMusicScores);
-
-            // 全员静音状态开启
-            /*if (muteAll && TencentCloudRTCPlugin.PLUGIN_NAME.equals(courseSchedule.getServiceProvider())) {
-                for (RoomResult.MemberResult item : roomResult.getMembers()) {
-                    // 重置学生用户当前静音状态
-                    if (RoleStudent.getValue() == item.getRole()) {
-                        item.setMicrophone(false);
-                    }
-                }
-            }*/
         }
         roomResult.setWhiteboards(whiteboardDao.findByRid(roomId));
         if (room != null) {
@@ -674,6 +665,27 @@ public class RoomServiceImpl implements RoomService {
         businessLogger.info("join room: roomId = {}, userId = {}, userName={}, role = {}", roomId, userId, userName, roleEnum);
     }
 
+    private void initCourseScheduleStudentMusicScore(List<CourseScheduleStudentMusicScore> scheduleStudentMusicScores) {
+        if(CollectionUtils.isEmpty(scheduleStudentMusicScores)){
+            return;
+        }
+        List<Long> musicSheetSoundIds = scheduleStudentMusicScores.stream().map(e->Long.parseLong(e.getMusicScoreAccompanimentId())).collect(Collectors.toList());
+        List<CbsMusicSheetWrapper.MusicSheetAccApplication> sheetApplications = this.getSheetApplications(musicSheetSoundIds);
+        Map<Long, CbsMusicSheetWrapper.MusicSheetAccApplication> sheetApplicationMap = sheetApplications.stream()
+                .collect(Collectors.toMap(CbsMusicSheetWrapper.MusicSheetAccApplication::getId, Function.identity()));
+        for (CourseScheduleStudentMusicScore studentMusicScore : scheduleStudentMusicScores) {
+            CbsMusicSheetWrapper.MusicSheetAccApplication sheetApplication =
+                    sheetApplicationMap.get(Long.parseLong(studentMusicScore.getMusicScoreAccompanimentId()));
+            if(sheetApplication == null) {
+                continue;
+            }
+            studentMusicScore.setMusicScoreName(sheetApplication.getName());
+            studentMusicScore.setMp3Url(sheetApplication.getMp3Url());
+            studentMusicScore.setUrl(sheetApplication.getUrl());
+            courseScheduleStudentMusicScoreDao.update(studentMusicScore);
+        }
+    }
+
     private void joinImGroup(String roomId, Integer actualTeacherId, CourseSchedule courseSchedule) throws Exception {
 
         String joinImGroupKey = "joinImGroup:" + roomId;
@@ -2225,6 +2237,7 @@ public class RoomServiceImpl implements RoomService {
             Set<String> userIds = roomMemberList.stream().map(RoomMember::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)));
+            this.initCourseScheduleStudentMusicScore(scheduleStudentMusicScores);
             roomResult.setMembers(roomMemberList, midiMap, examSongMap, scheduleStudentMusicScores);
 
             // 全员静音开启状态
@@ -2704,22 +2717,26 @@ public class RoomServiceImpl implements RoomService {
         courseScheduleStudentPaymentDao.adjustPlayMidi(Long.parseLong(roomId.substring(1)), playMidiMessageData.getUserId(), content);
     }
 
-    private CbsMusicSheetWrapper.MusicSheetApplication getSheetApplication(String musicSheetSoundId){
+    private CbsMusicSheetWrapper.MusicSheetAccApplication getSheetApplication(String musicSheetSoundId){
         CbsMusicSheetWrapper.MusicSheetApplicationQuery query = sysMusicScoreService.getMusicSheetApplicationQuery();
         query.setRows(1);
         query.setMusicSheetSoundId(Long.parseLong(musicSheetSoundId));
-        List<CbsMusicSheetWrapper.MusicSheetApplication> applications = sysMusicScoreService.queryCbsMusicSheetApplication(query);
+        List<CbsMusicSheetWrapper.MusicSheetAccApplication> applications = sysMusicScoreService.queryCbsMusicSheetSoundApplication(query).getRows();
         if (CollectionUtils.isEmpty(applications)) {
             throw new BizException("曲目信息不存在");
         }
-        CbsMusicSheetWrapper.MusicSheetApplication sheetApplication = applications.get(0);
-        if (CollectionUtils.isEmpty(sheetApplication.getMusicSheetSoundList())) {
-            throw new BizException("曲目原音信息不存在");
-        }
-        if (CollectionUtils.isEmpty(sheetApplication.getMusicSheetAccompanimentList())) {
-            throw new BizException("曲目伴奏信息不存在");
+        return applications.get(0);
+    }
+
+    private List<CbsMusicSheetWrapper.MusicSheetAccApplication> getSheetApplications(List<Long> musicSheetSoundIds){
+        CbsMusicSheetWrapper.MusicSheetApplicationQuery query = sysMusicScoreService.getMusicSheetApplicationQuery();
+        query.setRows(musicSheetSoundIds.size());
+        query.setMusicSheetSoundIds(musicSheetSoundIds);
+        List<CbsMusicSheetWrapper.MusicSheetAccApplication> applications = sysMusicScoreService.queryCbsMusicSheetSoundApplication(query).getRows();
+        if (CollectionUtils.isEmpty(applications)) {
+            throw new BizException("曲目信息不存在");
         }
-        return sheetApplication;
+        return applications;
     }
 
     @Override
@@ -2732,9 +2749,7 @@ public class RoomServiceImpl implements RoomService {
                 courseScheduleStudentMusicScoreDao.queryByScoreIdAndCourseId(musicScoreData.getMusicScoreAccompanimentId(),
                         courseScheduleId, null, null, 0);
         //获取曲目信息
-        CbsMusicSheetWrapper.MusicSheetApplication sheetApplication = this.getSheetApplication(musicScoreData.getMusicScoreAccompanimentId());
-        //获取曲目原音信息
-        List<CbsMusicSheetWrapper.MusicSheetSound> soundList = sheetApplication.getMusicSheetSoundList();
+        CbsMusicSheetWrapper.MusicSheetAccApplication sheetApplication = this.getSheetApplication(musicScoreData.getMusicScoreAccompanimentId());
         if (scheduleStudentMusicScores.size() == 0) {
             //第一次下载,生成数据
             List<CourseScheduleStudentPayment> courseScheduleStudentPayments = courseScheduleStudentPaymentDao.findByCourseSchedule(courseScheduleId);
@@ -2756,8 +2771,7 @@ public class RoomServiceImpl implements RoomService {
             scheduleStudentMusicScores.add(musicScore);
             courseScheduleStudentMusicScoreDao.batchInsert(scheduleStudentMusicScores);
         }
-        CbsMusicSheetWrapper.MusicSheetSound sheetSound = soundList.get(0);
-        SysMusicScoreAccompaniment accompaniment = sysMusicScoreAccompanimentService.initSysMusicScoreAccompaniment(sheetApplication, sheetSound);
+        SysMusicScoreAccompaniment accompaniment = sysMusicScoreAccompanimentService.initSysMusicScoreAccompaniment(sheetApplication);
         accompaniment.setId(musicScoreData.getMusicScoreAccompanimentId());
         MusicScoreMessage musicScoreMessage = JSON.parseObject(JSON.toJSONString(accompaniment), MusicScoreMessage.class);
         // 发送消息
@@ -2844,13 +2858,11 @@ public class RoomServiceImpl implements RoomService {
             if (CollectionUtils.isEmpty(studentMusicScores)) {
                 throw new BizException("学员不存在此下载曲目");
             }
-            CbsMusicSheetWrapper.MusicSheetApplication sheetApplication = this.getSheetApplication(accompanimentId);
+            CbsMusicSheetWrapper.MusicSheetAccApplication sheetApplication = this.getSheetApplication(accompanimentId);
             for (CourseScheduleStudentMusicScore studentMusicScore : studentMusicScores) {
                 studentMusicScore.setMusicScoreName(sheetApplication.getName());
-                CbsMusicSheetWrapper.MusicSheetSound sound = sheetApplication.getMusicSheetSoundList().get(0);
-                studentMusicScore.setMp3Url(sound.getAudioFileUrl());
-                CbsMusicSheetWrapper.MusicSheetAccompaniment accompaniment = sheetApplication.getMusicSheetAccompanimentList().get(0);
-                studentMusicScore.setUrl(accompaniment.getAudioFileUrl());
+                studentMusicScore.setMp3Url(sheetApplication.getMp3Url());
+                studentMusicScore.setUrl(sheetApplication.getUrl());
                 courseScheduleStudentMusicScoreDao.update(studentMusicScore);
             }
             CourseScheduleStudentMusicScore studentMusicScore = studentMusicScores.get(0);