Browse Source

酷乐秀曲目来源改为内容平台

zouxuan 8 months ago
parent
commit
46e8aea9a7
14 changed files with 139 additions and 97 deletions
  1. 3 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleStudentMusicSheetDao.java
  2. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ImNetworkDeviceControlDto.java
  3. 3 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ImNetworkMusicSheetDownloadMessageContent.java
  4. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ImNetworkMusicSheetDto.java
  5. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CourseScheduleStudentMusicSheet.java
  6. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheetAccompaniment.java
  7. 3 14
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetAccompanimentService.java
  8. 5 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java
  9. 70 29
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImNetworkRoomServiceImpl.java
  10. 10 13
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetAccompanimentServiceImpl.java
  11. 21 16
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  12. 2 11
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleStudentMusicSheetDao.xml
  13. 1 1
      pom.xml
  14. 14 0
      toolset/toolset-mybatis/src/main/java/com/yonge/toolset/mybatis/support/PageUtil.java

+ 3 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleStudentMusicSheetDao.java

@@ -15,17 +15,17 @@ import java.util.List;
  */
 public interface CourseScheduleStudentMusicSheetDao extends BaseMapper<CourseScheduleStudentMusicSheet> {
 
-    List<CourseScheduleStudentMusicSheetResult> queryBySheetIdAndCourseId(@Param("musicSheetAccompanimentId") Long musicSheetAccompanimentId,
+    List<CourseScheduleStudentMusicSheetResult> queryBySheetIdAndCourseId(@Param("musicSheetAccompanimentId") String musicSheetAccompanimentId,
                                                                           @Param("courseId") Long courseId,
                                                                           @Param("userId") Long userId,
                                                                           @Param("downStatus") Integer downStatus,
                                                                           @Param("userType") Integer userType);
     //开启原音播放
     void openPlayStatus(@Param("scheduleId") Long scheduleId,
-                       @Param("musicSheetAccompanimentId") Integer musicSheetAccompanimentId,
+                       @Param("musicSheetAccompanimentId") String musicSheetAccompanimentId,
                        @Param("userId") Long userId);
     void openAccompanimentPlayStatus(@Param("scheduleId") Long scheduleId,
-                                    @Param("musicSheetAccompanimentId") Integer musicSheetAccompanimentId,
+                                    @Param("musicSheetAccompanimentId") String musicSheetAccompanimentId,
                                     @Param("userId") Long userId);
     //关闭伴奏
     void closePlayStatus(@Param("courseId") Long courseId,@Param("userId") Long userId);

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

@@ -26,10 +26,10 @@ public class ImNetworkDeviceControlDto {
 	private Integer status;
 
 	@ApiModelProperty(value = "原音",required = true)
-	private Integer musicSheetId;
+	private String musicSheetId;
 
 	@ApiModelProperty(value = "伴奏",required = true)
-	private Integer musicScoreAccompanimentId;
+	private String musicScoreAccompanimentId;
 
 	@ApiModelProperty(value = "伴奏音量",required = true)
 	private Integer soundVolume = 100;

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

@@ -9,11 +9,11 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
 public class ImNetworkMusicSheetDownloadMessageContent{
     //伴奏编号
     @ApiModelProperty(value = "伴奏编号")
-    private Integer id;
+    private String id;
 
     //曲目编号
     @ApiModelProperty(value = "曲目编号")
-    private Integer examSongId;
+    private String examSongId;
 
     //声部
     @ApiModelProperty(value = "声部")
@@ -29,7 +29,7 @@ public class ImNetworkMusicSheetDownloadMessageContent{
 
     //速度
     @ApiModelProperty(value = "速度")
-    private Integer speed;
+    private String speed;
 
     //xmlUrl
     @ApiModelProperty(value = "xmlUrl")

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

@@ -7,7 +7,7 @@ import lombok.Data;
 public class ImNetworkMusicSheetDto extends ImNetworkBaseDto{
 
     @ApiModelProperty(value = "伴奏编号",required = true)
-    private Long musicScoreAccompanimentId;
+    private String musicScoreAccompanimentId;
 
     @ApiModelProperty(value = "伴奏下载状态(1下载成功0下载中2下载失败)",required = true)
     private Integer status;

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

@@ -38,7 +38,7 @@ public class CourseScheduleStudentMusicSheet implements Serializable {
 
     @TableField("music_sheet_accompaniment_id_")
     @ApiModelProperty(value = "伴奏编号")
-    private Long musicScoreAccompanimentId;
+    private String musicScoreAccompanimentId;
 
     @TableField("play_status_")
     @ApiModelProperty(value = "原音播放状态(1是0否)")
@@ -54,7 +54,7 @@ public class CourseScheduleStudentMusicSheet implements Serializable {
 
     @TableField("speed_")
     @ApiModelProperty(value = "播放速度")
-    private Integer speed = 100;
+    private String speed = "100";
 
     @TableField("create_time_")
     @ApiModelProperty(value = "${column.comment}")

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

@@ -27,7 +27,7 @@ public class MusicSheetAccompaniment extends BaseEntity {
 
     @TableId(value = "id_", type = IdType.AUTO)
     @ApiModelProperty(value = "主键id")
-    private Long id;  //主键ID
+    private String id;  //主键ID
 
     @TableField("music_sheet_id_")
     @ApiModelProperty(value = "曲谱ID")
@@ -64,7 +64,7 @@ public class MusicSheetAccompaniment extends BaseEntity {
 
     @TableField("speed_")
     @ApiModelProperty(value = "速度")
-    private Integer speed;  //速度
+    private String speed;  //速度
 
     @TableField("create_time_")
     @ApiModelProperty(value = "创建时间")

+ 3 - 14
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetAccompanimentService.java

@@ -1,28 +1,17 @@
 package com.yonge.cooleshow.biz.dal.service;
 
+import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
 import com.yonge.cooleshow.biz.dal.dao.MusicSheetAccompanimentDao;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheetAccompaniment;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.util.List;
 
-/**
- * MusicSheetAccompanimentService服务类
- * @author yzp
- * @date 2022-03-25 23:46:28
- * @version v1.0
- **/
 public interface MusicSheetAccompanimentService extends IService<MusicSheetAccompaniment> {
 
-    /**
-     * 删除原音
-     *
-     * @param musicSheetId
-     */
-    void delByMusicSheetId(Long musicSheetId);
     MusicSheetAccompanimentDao getDao();
 
-    List<MusicSheetAccompaniment> getByMusicSheetId(Long musicSheetId);
-
     List<MusicSheetAccompaniment> initMusicSheetAccompaniment(String musicSheetJson,Long musicSheetId);
+
+    MusicSheetAccompaniment initSysMusicScoreAccompaniment(CbsMusicSheetWrapper.MusicSheetAccApplication sheetApplication);
 }

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

@@ -18,6 +18,7 @@ import com.yonge.cooleshow.biz.dal.wrapper.MusicSheetWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.music.MusicCompareWrapper;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.page.PageInfo;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -408,4 +409,8 @@ public interface MusicSheetService extends IService<MusicSheet> {
     void initMusicSheetDetailVo(CbsMusicSheetWrapper.AddMusicSheet addMusicSheet, MusicSheetDetailVo musicSheetAudit);
 
     void sync();
+
+    CbsMusicSheetWrapper.MusicSheetApplicationQuery getMusicSheetApplicationQuery();
+
+    PageInfo<CbsMusicSheetWrapper.MusicSheetAccApplication> queryCbsMusicSheetSoundApplication(CbsMusicSheetWrapper.MusicSheetApplicationQuery query);
 }

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

@@ -4,6 +4,7 @@ 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.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
 import com.google.common.collect.Lists;
 import com.microsvc.toolkit.middleware.rtc.RTCRoomPluginService;
 import com.microsvc.toolkit.middleware.rtc.message.TencentRequest;
@@ -23,6 +24,7 @@ import com.yonge.cooleshow.common.entity.BaseResponse;
 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.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -31,11 +33,11 @@ import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.support.TransactionTemplate;
-import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -85,7 +87,6 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
     private ImService imService;
     @Resource
     private TransactionTemplate transactionTemplate;
-
     @Override
     public ImNetworkRoomDao getDao() {
         return this.baseMapper;
@@ -114,9 +115,8 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
 
         ImNetworkRoomResult joinRoomResult = new ImNetworkRoomResult();
         String imUserId = imGroupService.getImUserId(sysUser.getUserId(), userRole);
-        List<CourseScheduleStudentMusicSheetResult> studentMusicSheetResults =
-                courseScheduleStudentMusicSheetService.getDao().queryBySheetIdAndCourseId(null,
-                        Long.parseLong(roomId), null, null, null);
+        List<CourseScheduleStudentMusicSheetResult> studentMusicSheetResults = this.initCourseScheduleStudentMusicScore(courseScheduleStudentMusicSheetService.getDao()
+                .queryBySheetIdAndCourseId(null,Long.parseLong(roomId), null, null, null));
         //获取学员列表
         List<CourseScheduleStudentPayment> studentPayments =
                 courseScheduleStudentPaymentService.lambdaQuery().eq(CourseScheduleStudentPayment::getCourseId,roomId).list();
@@ -184,6 +184,42 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         return BaseResponse.success(joinRoomResult);
     }
 
+    private List<CourseScheduleStudentMusicSheetResult> initCourseScheduleStudentMusicScore(List<CourseScheduleStudentMusicSheetResult> scheduleStudentMusicScores) {
+        List<CourseScheduleStudentMusicSheetResult> result = new ArrayList<>();
+        if(CollectionUtils.isEmpty(scheduleStudentMusicScores)){
+            return result;
+        }
+        List<Long> musicSheetSoundIds = scheduleStudentMusicScores.stream().map(e->Long.parseLong(e.getMusicScoreAccompanimentId()))
+                .distinct().collect(Collectors.toList());
+        List<CbsMusicSheetWrapper.MusicSheetAccApplication> sheetApplications = this.getSheetApplications(musicSheetSoundIds);
+        Map<Long, CbsMusicSheetWrapper.MusicSheetAccApplication> sheetApplicationMap = sheetApplications.stream()
+                .collect(Collectors.toMap(CbsMusicSheetWrapper.MusicSheetAccApplication::getMusicSheetSoundId, Function.identity()));
+        for (CourseScheduleStudentMusicSheetResult studentMusicScore : scheduleStudentMusicScores) {
+            CbsMusicSheetWrapper.MusicSheetAccApplication sheetApplication =
+                    sheetApplicationMap.get(Long.parseLong(studentMusicScore.getMusicScoreAccompanimentId()));
+            if(sheetApplication == null) {
+                continue;
+            }
+            studentMusicScore.setMusicScoreName(sheetApplication.getName());
+            //管乐迷的历史问题,原音和伴奏反过来
+            studentMusicScore.setMp3Url(sheetApplication.getUrl());
+            studentMusicScore.setUrl(sheetApplication.getMp3Url());
+            result.add(studentMusicScore);
+        }
+        return result;
+    }
+
+    private List<CbsMusicSheetWrapper.MusicSheetAccApplication> getSheetApplications(List<Long> musicSheetSoundIds){
+        CbsMusicSheetWrapper.MusicSheetApplicationQuery query = musicSheetService.getMusicSheetApplicationQuery();
+        query.setRows(musicSheetSoundIds.size());
+        query.setMusicSheetSoundIds(musicSheetSoundIds);
+        List<CbsMusicSheetWrapper.MusicSheetAccApplication> applications = musicSheetService.queryCbsMusicSheetSoundApplication(query).getRows();
+        if (CollectionUtils.isEmpty(applications)) {
+            throw new BizException("曲目信息不存在");
+        }
+        return applications;
+    }
+
     @Override
     public BaseResponse<ImNetworkRoomResult> roomInfo(ImNetworkBaseDto imNetworkBaseDto) {
         // 当前登录用户ID
@@ -211,7 +247,8 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         ImNetworkRoomMember roomMember = imNetworkRoomMemberService.lambdaQuery().eq(ImNetworkRoomMember::getRoomId,roomId)
                 .eq(ImNetworkRoomMember::getUserId,imUserId).last("LIMIT 1").one();
         List<CourseScheduleStudentMusicSheetResult> studentMusicSheetResults =
-                courseScheduleStudentMusicSheetService.getDao().queryBySheetIdAndCourseId(null, Long.parseLong(roomId), null, null, null);
+                this.initCourseScheduleStudentMusicScore(courseScheduleStudentMusicSheetService.getDao()
+                        .queryBySheetIdAndCourseId(null, Long.parseLong(roomId), null, null, null));
         if(!CollectionUtils.isEmpty(studentMusicSheetResults)){
             List<CourseScheduleStudentMusicSheetResult> musicScores = studentMusicSheetResults.stream().
                     filter(e -> e.getUserId().equals(userId)).collect(Collectors.toList());
@@ -249,8 +286,8 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
     }
 
     private void setMusicSheetList(List<ImNetworkRoomMemberResult> roomMemberList,Long courseScheduleId){
-        List<CourseScheduleStudentMusicSheetResult> musicSheetResults = courseScheduleStudentMusicSheetService.getDao().
-                queryBySheetIdAndCourseId(null,courseScheduleId,null,null,null);
+        List<CourseScheduleStudentMusicSheetResult> musicSheetResults = this.initCourseScheduleStudentMusicScore(courseScheduleStudentMusicSheetService.getDao().
+                queryBySheetIdAndCourseId(null,courseScheduleId,null,null,null));
         if (!CollectionUtils.isEmpty(musicSheetResults)) {
             //分组塞到学员列表中
             Map<String, List<CourseScheduleStudentMusicSheetResult>> musicSheetResultMap = musicSheetResults.stream().
@@ -380,14 +417,15 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
     @Transactional(rollbackFor = Exception.class)
     public void pushDownloadMusicSheetMsg(ImNetworkMusicSheetDto musicSheetDto) throws Exception {
         String roomId = Optional.ofNullable(musicSheetDto).map(ImNetworkBaseDto::getRoomId).orElseThrow(() -> new BizException("房间编号不能为空"));
-        Long accompanimentId = Optional.of(musicSheetDto).map(ImNetworkMusicSheetDto::getMusicScoreAccompanimentId).orElseThrow(() -> new BizException("伴奏编号不能为空"));
+        String accompanimentId = Optional.of(musicSheetDto).map(ImNetworkMusicSheetDto::getMusicScoreAccompanimentId).orElseThrow(() -> new BizException("伴奏编号不能为空"));
         log.info("pushDownloadMusicSheetMsg: roomId:{} ,accompanimentId:{}", roomId,accompanimentId);
         Long userId = sysUserService.getUserId();
-        MusicSheetAccompaniment accompaniment = musicSheetAccompanimentService.getById(accompanimentId);
         List<CourseScheduleStudentMusicSheetResult> scheduleStudentMusicSheetResults = courseScheduleStudentMusicSheetService.getDao().
                 queryBySheetIdAndCourseId(accompanimentId, Long.parseLong(roomId), null, null, 0);
 
-        if (scheduleStudentMusicSheetResults.isEmpty()) {
+        //获取曲目信息
+        CbsMusicSheetWrapper.MusicSheetAccApplication sheetApplication = this.getSheetApplication(accompanimentId);
+        if (CollectionUtils.isEmpty(scheduleStudentMusicSheetResults)) {
             //第一次下载,生成数据
             List<CourseScheduleStudentPayment> studentPayments =
                     courseScheduleStudentPaymentService.lambdaQuery().eq(CourseScheduleStudentPayment::getCourseId,roomId).list();
@@ -395,7 +433,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
             studentIds.forEach(e -> {
                 CourseScheduleStudentMusicSheetResult musicSheet = new CourseScheduleStudentMusicSheetResult();
                 musicSheet.setMusicScoreAccompanimentId(accompanimentId);
-                musicSheet.setSpeed(accompaniment.getSpeed());
+                musicSheet.setSpeed(sheetApplication.getPlaySpeed());
                 musicSheet.setCourseScheduleId(Long.parseLong(roomId));
                 musicSheet.setUserId(e);
                 musicSheet.setUserType(0);
@@ -403,7 +441,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
             });
             CourseScheduleStudentMusicSheetResult musicSheet = new CourseScheduleStudentMusicSheetResult();
             musicSheet.setMusicScoreAccompanimentId(accompanimentId);
-            musicSheet.setSpeed(accompaniment.getSpeed());
+            musicSheet.setSpeed(sheetApplication.getPlaySpeed());
             musicSheet.setCourseScheduleId(Long.parseLong(roomId));
             musicSheet.setUserId(userId);
             musicSheet.setUserType(1);
@@ -413,20 +451,14 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         //通知学员下载伴奏
         // IM用户ID
         String imUserId = imGroupService.getImUserId(userId,musicSheetDto.getClientType());
+        MusicSheetAccompaniment accompaniment = musicSheetAccompanimentService.initSysMusicScoreAccompaniment(sheetApplication);
+        accompaniment.setId(accompanimentId);
         ImNetworkMusicSheetDownloadMessageContent content = JSON.parseObject(JSON.toJSONString(accompaniment), ImNetworkMusicSheetDownloadMessageContent.class);
         if(StringUtils.isNotEmpty(accompaniment.getMusicSubjectId())){
             content.setSubjectId(Integer.parseInt(accompaniment.getMusicSubjectId()));
         }
         content.setMp3Url(accompaniment.getAudioFileUrl());
-        if(accompaniment.getMusicSheetId() != null){
-            content.setExamSongId(accompaniment.getMusicSheetId().intValue());
-            MusicSheet musicSheet = musicSheetService.getById(accompaniment.getMusicSheetId());
-            if(musicSheet != null){
-                content.setUrl(StringUtils.isNotEmpty(musicSheet.getAudioFileUrl())?musicSheet.getAudioFileUrl()
-                        :StringUtils.isNotEmpty(musicSheet.getMetronomeUrl())?musicSheet.getMetronomeUrl()
-                        :musicSheet.getUrl());
-            }
-        }
+        content.setUrl(accompaniment.getMetronomeUrl());
         BasicUserInfo basicUserInfo = teacherDao.getBasicUserInfo(userId);
         basicUserInfo.setImUserId(imUserId);
         CourseSchedule courseSchedule = courseScheduleService.getById(roomId);
@@ -543,7 +575,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
             long scheduleId = Long.parseLong(roomId);
             switch (deviceControl.getDeviceType()) {
                 case MUSIC_SHEET:
-                    Integer musicSheetId = Optional.ofNullable(deviceControl.getMusicScoreAccompanimentId()).
+                    String musicSheetId = Optional.ofNullable(deviceControl.getMusicScoreAccompanimentId()).
                             orElseThrow(()-> new BizException("请选择曲目"));
                     //关闭所有曲目播放
                     courseScheduleStudentMusicSheetService.getDao().closePlayStatus(scheduleId,userId);
@@ -551,7 +583,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
                     courseScheduleStudentMusicSheetService.getDao().openPlayStatus(scheduleId,musicSheetId,userId);
                     break;
                 case ACCOMPANIMENT:
-                  Integer musicSheetAccompanimentId = Optional.ofNullable(deviceControl.getMusicScoreAccompanimentId()).
+                    String musicSheetAccompanimentId = Optional.ofNullable(deviceControl.getMusicScoreAccompanimentId()).
                             orElseThrow(()-> new BizException("请选择曲目"));
                     //关闭所有曲目播放
                     courseScheduleStudentMusicSheetService.getDao().closePlayStatus(scheduleId,userId);
@@ -649,17 +681,15 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
     @Transactional(rollbackFor = Exception.class)
     public void musicSheetDownNotify(ImNetworkMusicSheetDto musicSheetDto) throws Exception {
         String roomId = Optional.ofNullable(musicSheetDto).map(ImNetworkBaseDto::getRoomId).orElseThrow(() -> new BizException("房间编号不能为空"));
-        Long accompanimentId = Optional.of(musicSheetDto).map(ImNetworkMusicSheetDto::getMusicScoreAccompanimentId).orElseThrow(() -> new BizException("伴奏编号不能为空"));
+        String accompanimentId = Optional.of(musicSheetDto).map(ImNetworkMusicSheetDto::getMusicScoreAccompanimentId).orElseThrow(() -> new BizException("伴奏编号不能为空"));
         Integer status = Optional.of(musicSheetDto).map(ImNetworkMusicSheetDto::getStatus).orElseThrow(() -> new BizException("伴奏下载状态不能为空"));
         log.info("musicSheetDownNotify: roomId:{} ,accompanimentId:{} ,status:{}", roomId,accompanimentId,status);
         Long userId = sysUserService.getUserId();
-        List<CourseScheduleStudentMusicSheetResult> studentMusicSheetResults = courseScheduleStudentMusicSheetService.getDao().
-                queryBySheetIdAndCourseId(accompanimentId, Long.parseLong(roomId),userId, null, null);
+        List<CourseScheduleStudentMusicSheetResult> studentMusicSheetResults = this.initCourseScheduleStudentMusicScore(courseScheduleStudentMusicSheetService.getDao().
+                queryBySheetIdAndCourseId(accompanimentId, Long.parseLong(roomId),userId, null, null));
         if(CollectionUtils.isEmpty(studentMusicSheetResults)){
             return;
         }
-        Optional.ofNullable(musicSheetAccompanimentService.getById(accompanimentId)).
-                orElseThrow(()-> new BizException("曲目信息不存在"));
         //修改下载状态
         CourseScheduleStudentMusicSheetResult musicSheetResult = studentMusicSheetResults.get(0);
         musicSheetResult.setDownStatus(status);
@@ -691,4 +721,15 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
             return Boolean.TRUE;
         });
     }
+
+    private CbsMusicSheetWrapper.MusicSheetAccApplication getSheetApplication(String musicSheetSoundId){
+        CbsMusicSheetWrapper.MusicSheetApplicationQuery query = musicSheetService.getMusicSheetApplicationQuery();
+        query.setRows(1);
+        query.setMusicSheetSoundId(Long.parseLong(musicSheetSoundId));
+        List<CbsMusicSheetWrapper.MusicSheetAccApplication> applications = musicSheetService.queryCbsMusicSheetSoundApplication(query).getRows();
+        if (org.apache.commons.collections.CollectionUtils.isEmpty(applications)) {
+            throw new BizException("曲目信息不存在");
+        }
+        return applications.get(0);
+    }
 }

+ 10 - 13
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetAccompanimentServiceImpl.java

@@ -37,19 +37,6 @@ public class MusicSheetAccompanimentServiceImpl extends ServiceImpl<MusicSheetAc
     }
 
     @Override
-    public List<MusicSheetAccompaniment> getByMusicSheetId(Long musicSheetId) {
-
-        return this.lambdaQuery()
-                .eq(MusicSheetAccompaniment::getMusicSheetId,musicSheetId)
-                .list();
-    }
-
-    @Override
-    public void delByMusicSheetId(Long musicSheetId) {
-        musicSheetAccompanimentDao.delByMusicSheetId(musicSheetId);
-    }
-
-    @Override
     @Transactional(rollbackFor = Exception.class)
     public List<MusicSheetAccompaniment> initMusicSheetAccompaniment(String musicSheetJson,Long musicSheetId) {
         CbsMusicSheetWrapper.AddMusicSheet addMusicSheet = JSON.parseObject(musicSheetJson, CbsMusicSheetWrapper.AddMusicSheet.class);
@@ -69,4 +56,14 @@ public class MusicSheetAccompanimentServiceImpl extends ServiceImpl<MusicSheetAc
         }
         return background;
     }
+
+    @Override
+    public MusicSheetAccompaniment initSysMusicScoreAccompaniment(CbsMusicSheetWrapper.MusicSheetAccApplication musicSheetApplication) {
+        MusicSheetAccompaniment record = new MusicSheetAccompaniment();
+        record.setSpeed(musicSheetApplication.getPlaySpeed());
+        record.setTrack(musicSheetApplication.getTrack());
+        record.setAudioFileUrl(musicSheetApplication.getMp3Url());
+        record.setMetronomeUrl(musicSheetApplication.getUrl());
+        return record;
+    }
 }

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

@@ -684,22 +684,6 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
                 }
             }
         }
-
-
-
-        /*List<MusicSheetAccompaniment> background = detail.getBackground();
-        if (CollectionUtils.isNotEmpty(background)) {
-            // 兼容管乐迷曲目同步数据
-            long count = background.stream().map(MusicSheetAccompaniment::getSortNumber)
-                .filter(x -> Objects.nonNull(x) && x <= 0).count();
-            if (count == background.size()) {
-                // 管乐迷原音排序字段
-                background.sort(Comparator.comparing(MusicSheetAccompaniment::getId));
-            } else {
-                // 酷乐秀原音排序字段
-                background.sort(Comparator.comparing(MusicSheetAccompaniment::getSortNumber));
-            }
-        }*/
         return detail;
     }
 
@@ -2352,6 +2336,27 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         executorService.shutdown();
     }
 
+    @Override
+    public CbsMusicSheetWrapper.MusicSheetApplicationQuery getMusicSheetApplicationQuery() {
+        CbsMusicSheetWrapper.MusicSheetApplicationQuery query = new CbsMusicSheetWrapper.MusicSheetApplicationQuery();
+        query.setDetailFlag(true);
+        query.setDelFlag(true);
+        query.setPage(1);
+        query.setApplicationId(applicationId);
+        return query;
+    }
+
+    @Override
+    public com.yonge.toolset.base.page.PageInfo<CbsMusicSheetWrapper.MusicSheetAccApplication> queryCbsMusicSheetSoundApplication(CbsMusicSheetWrapper.MusicSheetApplicationQuery query) {
+        R<com.microsvc.toolkit.common.response.paging.PageInfo<CbsMusicSheetWrapper.MusicSheetAccApplication>> pageInfoR =
+                musicFeignClientService.musicSheetAccPageByApplication(query);
+        if(pageInfoR.getCode() != 200){
+            throw new BizException("获取曲目信息失败");
+        }
+        com.microsvc.toolkit.common.response.paging.PageInfo<CbsMusicSheetWrapper.MusicSheetAccApplication> pageInfo = pageInfoR.getData();
+        return PageUtil.pageInfo(pageInfo);
+    }
+
 
     private void syncMusicSheet(MusicSheet record, Date date) {
         List<MusicSheetAccompaniment> list = musicSheetAccompanimentService.lambdaQuery().eq(MusicSheetAccompaniment::getMusicSheetId, record.getId()).list();

+ 2 - 11
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleStudentMusicSheetDao.xml

@@ -53,18 +53,9 @@
         </if>
     </update>
 
-    <resultMap id="CourseScheduleStudentMusicSheetResult" type="com.yonge.cooleshow.biz.dal.dto.CourseScheduleStudentMusicSheetResult" extends="BaseResultMap">
-        <result property="url" column="url"/>
-        <result property="mp3Url" column="audio_file_url_"/>
-        <result property="musicScoreName" column="music_sheet_name_"/>
-    </resultMap>
-    <select id="queryBySheetIdAndCourseId" resultMap="CourseScheduleStudentMusicSheetResult">
-        SELECT cssm.*,ms.music_sheet_name_ ,
-        CASE WHEN ms.audio_file_url_ IS NOT NULL AND ms.audio_file_url_ != '' THEN ms.audio_file_url_
-        WHEN ms.metronome_url_ IS NOT NULL AND ms.metronome_url_ != '' THEN ms.metronome_url_ ELSE ms.url_ END AS url,msa.audio_file_url_
+    <select id="queryBySheetIdAndCourseId" resultMap="BaseResultMap">
+        SELECT cssm.*
         FROM course_schedule_student_music_sheet cssm
-        LEFT JOIN music_sheet_accompaniment msa ON cssm.music_sheet_accompaniment_id_ = msa.id_
-        LEFT JOIN music_sheet ms ON ms.id_ = msa.music_sheet_id_
         <where>
             <if test="courseId != null">
                 AND cssm.course_schedule_id_ = #{courseId}

+ 1 - 1
pom.xml

@@ -23,7 +23,7 @@
 		<google.zxing.version>3.4.0</google.zxing.version>
 		<redisson.version>3.11.5</redisson.version>
 		<maven.test.skip>true</maven.test.skip>
-		<cbs.version>1.0.7</cbs.version>
+		<cbs.version>1.0.11</cbs.version>
 	</properties>
 
 

+ 14 - 0
toolset/toolset-mybatis/src/main/java/com/yonge/toolset/mybatis/support/PageUtil.java

@@ -127,6 +127,20 @@ public class PageUtil {
         return pageInfo;
     }
 
+    public static <T> PageInfo<T> pageInfo(com.microsvc.toolkit.common.response.paging.PageInfo<T> source) {
+        if (Objects.isNull(source)) {
+            return new PageInfo<>(1, 20);
+        }
+        int total = Integer.parseInt(String.valueOf(source.getTotal()));
+        int limit = Integer.parseInt(String.valueOf(source.getLimit()));
+        PageInfo<T> resultPage = new PageInfo<>();
+        resultPage.setRows(source.getRows());
+        resultPage.setPageNo(Long.valueOf(source.getCurrent()).intValue());
+        resultPage.setLimit(limit);
+        resultPage.setTotal(total);
+        return resultPage;
+    }
+
     /**
      * 获取Map中的关键字获取分页数据
      *