刘俊驰 3 months ago
parent
commit
edbfc3fd31

+ 16 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/MusicSheetCbsController.java

@@ -204,4 +204,20 @@ public class MusicSheetCbsController extends BaseController {
         IPage<MusicSheetWrapper.MusicSheetCloud> musicSheetCloudIPage = musicSheetService.cloudPage(query);
         return HttpResponseResult.succeed(PageUtil.pageInfo(musicSheetCloudIPage));
     }
+
+
+    /**
+     * 查询单条
+     */
+    @PostMapping("/detailSmall")
+    @ApiOperation(value = "详情")
+    public HttpResponseResult<MusicSheetWrapper.MusicSheetDetail> detailSmall(@RequestBody @Valid MusicSheetWrapper.MusicSheetDetailQuery query) {
+
+        SysUser sysUser = sysUserService.getUser();
+        query.setClient(ClientEnum.STUDENT);
+
+
+        return succeed(musicSheetService.detailSmall(query,sysUser));
+    }
+
 }

+ 17 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetCbsController.java

@@ -34,6 +34,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import javax.validation.Valid;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
@@ -208,4 +209,20 @@ public class MusicSheetCbsController extends BaseController {
         IPage<MusicSheetWrapper.MusicSheetCloud> musicSheetCloudIPage = musicSheetService.cloudPage(query);
         return HttpResponseResult.succeed(PageUtil.pageInfo(musicSheetCloudIPage));
     }
+
+
+
+    /**
+     * 查询单条
+     */
+    @PostMapping("/detailSmall")
+    @ApiOperation(value = "详情")
+    public HttpResponseResult<MusicSheetWrapper.MusicSheetDetail> detailSmall(@RequestBody @Valid MusicSheetWrapper.MusicSheetDetailQuery query) {
+
+        SysUser sysUser = sysUserService.getUser();
+        query.setClient(ClientEnum.TEACHER);
+
+
+        return succeed(musicSheetService.detailSmall(query,sysUser));
+    }
 }

+ 0 - 13
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetController.java

@@ -95,19 +95,6 @@ public class MusicSheetController extends BaseController {
         return succeed(detail);
     }
 
-
-
-    /**
-     * 查询单条
-     */
-    @PostMapping("/detailSmall")
-    @ApiOperation(value = "详情")
-    public HttpResponseResult<MusicSheetDetailVo> detail() {
-
-        return succeed(detail);
-    }
-
-
     @GetMapping("/detailUse/{id}")
     @ApiOperation(value = "是否可使用")
     public HttpResponseResult<MusicSheetWrapper.MusicUse> detailUse(@ApiParam(value = "曲谱编号", required = true) @PathVariable("id") String id,

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

@@ -429,4 +429,10 @@ public interface MusicSheetService extends IService<MusicSheet> {
     CbsMusicSheetWrapper.MusicSheet cbsDetail(Long cbsMusicSheetId);
 
     IPage<MusicSheetWrapper.MusicSheetCloud> cloudPage(MusicSheetWrapper.MusicSheetCloudQuery query);
+
+    /**
+     * 获取简单的曲谱详情
+     *
+     */
+    MusicSheetWrapper.MusicSheetDetail detailSmall(MusicSheetWrapper.MusicSheetDetailQuery query,SysUser sysUser);
 }

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

@@ -2659,6 +2659,100 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         return musicSheetCloudIPage;
     }
 
+
+    /**
+     * 获取简单的曲谱详情
+     *
+     */
+    @Override
+    public MusicSheetWrapper.MusicSheetDetail detailSmall(MusicSheetWrapper.MusicSheetDetailQuery query,SysUser sysUser) {
+        // 曲目信息
+        MusicSheet musicSheet = musicSheetService.getDao().get(query.getMusicSheetId());
+        if (Objects.isNull(musicSheet)) {
+            throw new BizException("曲目信息不存在");
+        }
+        if (musicSheet.getCbsMusicSheetId() ==null) {
+            throw new BizException("曲目信息异常");
+        }
+
+        // 设置查询机构 还是平台数据
+        if (StringUtils.isBlank(query.getTenantAlbumId()) && StringUtils.isNotBlank(query.getProviderType())) {
+            if (SourceTypeEnum.PLATFORM.name().equals(query.getProviderType())) {
+                query.setTenantAlbumId(null);
+            } else {
+                query.setTenantAlbumId("-1");
+            }
+        }
+
+        CbsMusicSheetWrapper.MusicSheet cbsMusicSheet = musicSheetService.cbsDetail(musicSheet.getCbsMusicSheetId());
+        cbsMusicSheet.setBizId(query.getMusicSheetId());
+
+        MusicSheetWrapper.MusicSheetDetail musicSheetDetail = JSON.parseObject(JSON.toJSONString(cbsMusicSheet), MusicSheetWrapper.MusicSheetDetail.class);
+
+        MusicSheetDetailVo detail = musicSheetService.detail(query.getMusicSheetId().toString(), sysUser,query.getClient(), query.getTenantAlbumId());
+        if (detail != null) {
+            // 设置曲目付费类型
+            musicSheetDetail.setPaymentType(detail.getPaymentType());
+            // 设置业务端曲目分类
+            musicSheetDetail.setScoreType(detail.getScoreType());
+            musicSheetDetail.setIsConvertibleScore(detail.getNotation() ==YesOrNoEnum.YES);
+            musicSheetDetail.setPlay(detail.getPlay());
+            musicSheetDetail.setMusicPrice(detail.getMusicPrice());
+            musicSheetDetail.setFavorite(detail.getFavorite());
+            musicSheetDetail.setFavoriteCount(detail.getFavoriteCount());
+            musicSheetDetail.setCoursewareId(detail.getCoursewareId());
+            musicSheetDetail.setCoursewareStatus(detail.getCoursewareStatus());
+            musicSheetDetail.setOrderStatus(detail.getOrderStatus());
+            musicSheetDetail.setUserName(detail.getUserName());
+            musicSheetDetail.setMusicSubject(detail.getMusicSubject());
+        }
+        musicSheetDetail.setFavoriteCount(musicSheet.getFavoriteCount());
+        //获取曲目专辑数量
+        musicSheetDetail.setAlbumNums(musicSheetService.getDao().selectMusicAlbumNum(query.getMusicSheetId()));
+        musicSheetDetail.setExquisiteFlag(musicSheet.getExquisiteFlag());
+        musicSheetDetail.setMusicSubject(musicSheet.getMusicSubject());
+        musicSheetDetail.setUserId(musicSheet.getUserId());
+
+        //mp3Url 如果是合奏 取伴奏,
+        if (musicSheetDetail.getMusicSheetType() == EMusicSheetType.CONCERT) {
+            if (CollectionUtils.isNotEmpty(cbsMusicSheet.getMusicSheetAccompanimentList())) {
+                Optional<CbsMusicSheetWrapper.MusicSheetAccompaniment> first = cbsMusicSheet.getMusicSheetAccompanimentList().stream()
+                        .filter(o -> o.getAudioPlayType() == EAudioPlayType.PLAY).collect(Collectors.toList()).stream().findFirst();
+                first.ifPresent(musicSheetAccompaniment -> musicSheetDetail.setMp3Url(musicSheetAccompaniment.getAudioFileUrl()));
+            }
+        } else if (CollectionUtils.isNotEmpty(cbsMusicSheet.getMusicSheetSoundList())) {
+            // 按乐器取原音 有乐器按乐器来,没乐器用声部,都不匹配取第一个
+            List<CbsMusicSheetWrapper.MusicSheetSound> sheetSoundList = cbsMusicSheet.getMusicSheetSoundList().stream().filter(o -> o.getAudioPlayType() == EAudioPlayType.PLAY).collect(Collectors.toList());
+            if (query.getInstrumentId() !=null) {
+                Optional<CbsMusicSheetWrapper.MusicSheetSound> first =sheetSoundList.stream()
+                        .filter(o -> o.getMusicalInstrumentId().equals(query.getInstrumentId().toString())).findFirst();
+                if (first.isPresent()) {
+                    musicSheetDetail.setMp3Url(first.get().getAudioFileUrl());
+                    musicSheetDetail.setMusicSheetSoundList(Collections.singletonList(first.get()));
+                }
+            } else if (query.getSubjectId() != null){
+                Subject subject = subjectService.get(query.getSubjectId());
+                if (subject != null && subject.getInstrumentId() !=null) {
+                    Optional<CbsMusicSheetWrapper.MusicSheetSound> first = sheetSoundList.stream()
+                            .filter(o -> o.getMusicalInstrumentId().equals(subject.getInstrumentId().toString())).findFirst();
+                    if (first.isPresent()) {
+                        musicSheetDetail.setMp3Url(first.get().getAudioFileUrl());
+                        musicSheetDetail.setMusicSheetSoundList(Collections.singletonList(first.get()));
+                    }
+                }
+
+            } else {
+                Optional<CbsMusicSheetWrapper.MusicSheetSound> first = sheetSoundList.stream().findFirst();
+                if (first.isPresent()) {
+                    musicSheetDetail.setMp3Url(first.get().getAudioFileUrl());
+                    musicSheetDetail.setMusicSheetSoundList(Collections.singletonList(first.get()));
+                }
+            }
+
+        }
+        return musicSheetDetail;
+    }
+
     private Map<Long,MusicSheet> getMapByCbsIds(List<Long> cbsMusicSheetIds) {
         if (CollectionUtils.isEmpty(cbsMusicSheetIds)) {
             return new HashMap<>();

+ 107 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/MusicSheetWrapper.java

@@ -11,7 +11,6 @@ import com.dayaedu.cbs.common.enums.music.*;
 import com.dayaedu.cbs.common.enums.school.EMusicSheetType;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
-import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheetAccompaniment;
 import com.yonge.cooleshow.biz.dal.enums.*;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
@@ -1065,7 +1064,114 @@ public class MusicSheetWrapper {
     }
 
     @Data
+    public  static class MusicSheetDetailQuery {
+
+        @ApiModelProperty("曲谱ID")
+        @NotNull(message = "曲谱ID不能为空")
+        private Long musicSheetId;
+
+        @ApiModelProperty("机构专辑ID")
+        private String tenantAlbumId;
+
+        @ApiModelProperty("数据提供方")
+        private String providerType;
+
+        @ApiModelProperty("乐器ID")
+        private Long instrumentId;
+
+        @ApiModelProperty("声部ID")
+        private Long subjectId;
+
+        private ClientEnum client;
+
+    }
+
+
+    @Data
     public  static class MusicSheetDetail {
 
+
+        @ApiModelProperty("收藏0:否,1:是")
+        private YesOrNoEnum favorite;
+
+        @ApiModelProperty(value = "收藏数")
+        private Integer favoriteCount;
+
+        @ApiModelProperty("课件id")
+        private Long coursewareId;
+
+        @ApiModelProperty("是否为课件")
+        private YesOrNoEnum coursewareStatus = YesOrNoEnum.NO;
+
+        @ApiModelProperty(value = "精品标志(0:否;1:是)")
+        private YesOrNoEnum exquisiteFlag;
+
+        @ApiModelProperty("订单状态(WAIT_PAY:待支付;PAYING:支付中,PAID:已付款)")
+        private OrderStatusEnum orderStatus;
+
+        @ApiModelProperty("是否能播放(0:否,1:是) 学生端进入小酷Ai判断 试用/完整 播放")
+        private YesOrNoEnum play;
+
+        @ApiModelProperty("单曲专辑数")
+        private Long albumNums;
+
+        @ApiModelProperty(value = "曲谱价格")
+        private java.math.BigDecimal musicPrice;  //曲谱价格
+        @ApiModelProperty(value = "收费类型(FREE:免费;VIP:会员;CHARGE:单曲收费)")
+        private String paymentType;
+
+
+        @ApiModelProperty(value = "MP3原声音频文件URL")
+        private String mp3Url;  //
+
+        @ApiModelProperty("谱面类型")
+        private String scoreType;
+        @ApiModelProperty("上传老师名称")
+        private String userName;
+
+        @ApiModelProperty(value = "曲谱来源(平台用户ID或者是老师ID)")
+        private Long userId;  //曲谱来源(平台用户ID或者是老师ID)
+
+        @ApiModelProperty("声部Id")
+        private String musicSubject;
+        @ApiModelProperty("是否可转谱(0:否; 1:是)")
+        private Boolean isConvertibleScore;
+
+// 上面业务逻辑字段
+
+        @ApiModelProperty("主键")
+        private Long id;
+        @ApiModelProperty("业务平台曲目ID")
+        private Long bizId;
+        @ApiModelProperty("曲目封面图")
+        private String musicCover;
+        @ApiModelProperty("曲目名称")
+        private String name;
+
+
+        @ApiModelProperty("是否总谱渲染")
+        private Boolean isScoreRender;
+        @ApiModelProperty("多声轨选择")
+        private String multiTracksSelection;
+        @ApiModelProperty("曲目类型(SINGLE:单曲 CONCERT:合奏)")
+        private EMusicSheetType musicSheetType;
+        @ApiModelProperty("曲目原音")
+        private List<CbsMusicSheetWrapper.MusicSheetSound> musicSheetSoundList;
+
+        @ApiModelProperty("五线谱PDF文件")
+        private String musicPdfUrl;
+        @ApiModelProperty("首调PDF文件")
+        private String firstPdfUrl;
+        @ApiModelProperty("固定调PDF文件")
+        private String jianPdfUrl;
+        @ApiModelProperty("演奏是否默认展示总谱渲染")
+        private Boolean defaultScoreRender;
+
+        @ApiModelProperty("来源类型/作者属性(PLATFORM: 平台; ORG: 机构; PERSON: 个人)")
+        private EMusicSourceType sourceType;
+        @ApiModelProperty("作曲人/音乐人")
+        private String composer;
+
+
     }
 }