فهرست منبع

管乐迷曲目来源内容平台

zouxuan 1 سال پیش
والد
کامیت
eb6112910d

+ 41 - 9
mec-application/src/main/java/com/ym/mec/web/controller/MusicSheetApplicationExtendController.java

@@ -1,6 +1,7 @@
 package com.ym.mec.web.controller;
 
 import com.alibaba.fastjson.JSONObject;
+import com.dayaedu.cbs.domain.wrapper.MusicSheetWrapper;
 import com.dayaedu.cbs.openfeign.client.MusicFeignClientService;
 import com.dayaedu.cbs.openfeign.properties.OpenFeignClientConfigProperties;
 import com.dayaedu.cbs.openfeign.service.CbsMusicSheetService;
@@ -8,15 +9,18 @@ import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetApplicationExtendCli
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetCategoryWrapper;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetExtendWrapper;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
+import com.dayaedu.cbs.openfeign.wrapper.musicInstrument.CbsMusicalInstrumentWrapper;
 import com.microsvc.toolkit.common.response.paging.PageInfo;
 import com.microsvc.toolkit.common.response.template.R;
 import com.microsvc.toolkit.common.webportal.exception.BizException;
 import com.ym.mec.biz.dal.entity.SysMusicScore;
 import com.ym.mec.biz.service.SysMusicScoreService;
+import com.ym.mec.vo.PageUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -25,9 +29,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -52,26 +54,56 @@ public class MusicSheetApplicationExtendController {
 
     @PreAuthorize("@pcs.hasPermissions('musicSheetApplicationExtend/pageByApplication')")
     @PostMapping({"/pageByApplication"})
-    public R<PageInfo<CbsMusicSheetWrapper.MusicSheetApplication>> musicSheetPageByApplication(@RequestBody CbsMusicSheetWrapper.MusicSheetApplicationQuery var1) {
+    public R<com.ym.mec.common.page.PageInfo<MusicSheetWrapper.MusicSheetApplication>> musicSheetPageByApplication(@RequestBody CbsMusicSheetWrapper.MusicSheetApplicationQuery var1) {
         var1.setApplicationId(Long.parseLong(openFeignClientConfigProperties.getAppId()));
         try {
             PageInfo<CbsMusicSheetWrapper.MusicSheetApplication> feignedData = this.musicFeignClientService.musicSheetPageByApplication(var1).feignData();
             List<CbsMusicSheetWrapper.MusicSheetApplication> rows = feignedData.getRows();
             if (CollectionUtils.isEmpty(rows)) {
-                return R.from(feignedData);
+                return R.from(PageUtil.pageInfo(feignedData, new ArrayList<>()));
             }
+            String instrumentIds = rows.stream().map(CbsMusicSheetWrapper.MusicSheetApplication::getMusicalInstrumentIds).collect(Collectors.joining(","));
+            //获取乐器名称
+            CbsMusicalInstrumentWrapper.MusicalInstrumentQuery musicalInstrumentQuery = new CbsMusicalInstrumentWrapper.MusicalInstrumentQuery();
+            musicalInstrumentQuery.setIds(Arrays.stream(instrumentIds.split(",")).map(Integer::parseInt).distinct().collect(Collectors.toList()));
+            musicalInstrumentQuery.setPage(1);
+            musicalInstrumentQuery.setRows(9999);
+            R<PageInfo<CbsMusicalInstrumentWrapper.MusicalInstrumentQueryDto>> infoR = musicFeignClientService.musicalInstrumentPage(musicalInstrumentQuery);
+            if(infoR.getCode() != 200){
+                throw new BizException("获取乐器信息失败,{}",infoR.getMessage());
+            }
+            Map<Integer,CbsMusicalInstrumentWrapper.MusicalInstrumentQueryDto> musicalInstrumentQueryMap = infoR.feignData().getRows().stream()
+                    .collect(Collectors.toMap(CbsMusicalInstrumentWrapper.MusicalInstrumentQueryDto::getId, o -> o, (o1, o2) -> o1));
             List<Long> cbsMusicIds = rows.stream().map(CbsMusicSheetWrapper.MusicSheetApplication::getId).collect(Collectors.toList());
             List<SysMusicScore> musicSheetList = sysMusicScoreService.getDao().findByCbsId(cbsMusicIds);
             Map<String, SysMusicScore> map = musicSheetList.stream().collect(Collectors.toMap(SysMusicScore::getCbsMusicSheetId, o -> o, (o1, o2) -> o1));
 
+            List<MusicSheetWrapper.MusicSheetApplication> musicSheetApplications = new ArrayList<>();
             for (CbsMusicSheetWrapper.MusicSheetApplication row : rows) {
-                SysMusicScore musicSheet = map.get(row.getId().toString());
+                MusicSheetWrapper.MusicSheetApplication musicSheetApplication = JSONObject.parseObject(JSONObject.toJSONString(row), MusicSheetWrapper.MusicSheetApplication.class);
+                musicSheetApplication.setId(row.getId().toString());
+                SysMusicScore musicSheet = map.get(musicSheetApplication.getId());
                 if (Objects.nonNull(musicSheet)) {
-                    row.setBizId(musicSheet.getId().longValue());
+                    musicSheetApplication.setBizId(musicSheet.getId().toString());
+                }
+                if(StringUtils.isNotEmpty(musicSheetApplication.getMusicalInstrumentIds())){
+                    String[] split = musicSheetApplication.getMusicalInstrumentIds().split(",");
+                    for (String s : split) {
+                        StringBuffer sb = new StringBuffer();
+                        CbsMusicalInstrumentWrapper.MusicalInstrumentQueryDto musicalInstrumentQueryDto = musicalInstrumentQueryMap.get(Integer.parseInt(s));
+                        if(Objects.nonNull(musicalInstrumentQueryDto)){
+                            if(sb.length() > 0){
+                                sb.append(",");
+                            }
+                            sb.append(musicalInstrumentQueryDto.getName());
+                        }
+                        musicSheetApplication.setSubjectNames(sb.toString());
+                    }
                 }
+                musicSheetApplications.add(musicSheetApplication);
             }
-            feignedData.setRows(rows);
-            return R.from(feignedData);
+//            feignedData.setRows(rows);
+            return R.from(PageUtil.pageInfo(feignedData, musicSheetApplications));
         } catch (Exception e) {
             log.error("查询曲目应用拓展表异常", e);
             if (e instanceof BizException) {

+ 204 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/MusicSheetWrapper.java

@@ -3,13 +3,16 @@ package com.dayaedu.cbs.domain.wrapper;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+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 io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 import java.util.Optional;
 
 import lombok.AllArgsConstructor;
@@ -243,4 +246,205 @@ public class MusicSheetWrapper {
             return JSON.parseObject(json, MusicSheet.class);
         }
     }
+
+    @Data
+    public static class MusicSheetApplication{
+
+        @ApiModelProperty("主键")
+        private String id;
+
+        @ApiModelProperty("业务平台曲目ID")
+        private String bizId;
+
+        @ApiModelProperty("曲目封面图")
+        private String musicCover;
+
+        @ApiModelProperty("曲目名称")
+        private String name;
+
+        @ApiModelProperty("是否审核版本")
+        private Boolean appAuditFlag;
+
+        @ApiModelProperty("曲目声部(多个,用逗号分隔)")
+        private String subjectIds;
+
+        @ApiModelProperty("曲目声部code")
+        private String subjectCodes;
+
+        @ApiModelProperty("曲目声部名称")
+        private String subjectNames;
+
+        @ApiModelProperty("评测标准 节奏 AMPLITUDE 音准 FREQUENCY 分贝 DECIBELS")
+        private EEvaluationStandard evaluationStandard;
+
+        @ApiModelProperty("曲目声部名称")
+        private String subjectIdNames;
+
+        @ApiModelProperty("曲目乐器(多个,用逗号分隔)")
+        private String musicalInstrumentIds;
+
+        @ApiModelProperty("曲目乐器名称")
+        private String musicalInstrumentNames;
+
+        @ApiModelProperty("作曲人/音乐人")
+        private String composer;
+
+        @ApiModelProperty("曲目类型(SINGLE:单曲 CONCERT:合奏)")
+        private EMusicSheetType musicSheetType;
+
+        @ApiModelProperty("是否使用系统节拍器(0:否;1:是)")
+        private Boolean isUseSystemBeat;
+
+        @ApiModelProperty("是否可评测(0:否;1:是)") //  midi默认1, mp3 有伴奏1
+        private Boolean isEvaluated;
+
+        @ApiModelProperty("是否可转谱(0:否; 1:是)") // 固定调,首调 有值 1
+        private Boolean isConvertibleScore;
+
+        @ApiModelProperty("是否展示指法(0:否;1:是)") // moren 1
+        private Boolean isShowFingering;
+
+        @ApiModelProperty("是否播入节拍器(0: 否 1:是)")
+        private Boolean isPlayBeat;
+
+        @ApiModelProperty("多声轨选择")
+        private String multiTracksSelection;
+
+        @ApiModelProperty("播放速度")
+        private String playSpeed;
+
+        @ApiModelProperty("播放模式(MIDI;MP3)")
+        private EMusicPlayMode playMode;
+
+        @ApiModelProperty("XML文件")
+        private String xmlFileUrl;
+
+        @ApiModelProperty("MIDI文件(保留字段)")
+        private String midiFileUrl;
+
+        @ApiModelProperty("曲目JSON")
+        private String musicJson;
+
+        @ApiModelProperty("曲目缓存JSON(后续使用)")
+        private String musicSvgJson;
+
+        @ApiModelProperty("曲目缓存")
+        private String musicSvg;
+
+        @ApiModelProperty("简谱缓存")
+        private String musicJianSvg;
+
+        @ApiModelProperty("首调缓存")
+        private String musicFirstSvg;
+
+        @ApiModelProperty("谱面图片JSON(后续使用)")
+        private String musicImgJson;
+
+        @ApiModelProperty("五线谱图片")
+        private String musicImg;
+
+        @ApiModelProperty("首调图片")
+        private String musicFirstImg;
+
+        @ApiModelProperty("固定调图片")
+        private String musicJianImg;
+
+        @ApiModelProperty("谱面参数设置")
+        private String extConfigJson;
+
+        @ApiModelProperty("谱面样式参数设置")
+        private String extStyleConfigJson;
+
+        @ApiModelProperty("可用类型(PLATFORM: 平台; ORG: 机构; PERSON: 个人)") // 暂时没有
+        private EMusicAvailableType availableType;
+
+        @ApiModelProperty("来源类型/作者属性(PLATFORM: 平台; ORG: 机构; PERSON: 个人)") // 作者属性
+        private EMusicSourceType sourceType;
+
+        @ApiModelProperty("音频类型(HOMEMODE: 自制 COMMON: 普通)")
+        private EAudioType audioType;
+
+        @ApiModelProperty("曲目状态(0:停用,1:启用)")
+        private Boolean status;
+
+        @ApiModelProperty("停用原因")
+        private String reason;
+
+        @ApiModelProperty("备注")
+        private String remark;
+
+        @ApiModelProperty("逻辑删除标识(0: 未删 1:已删)")
+        private Boolean delFlag;
+
+        @ApiModelProperty("更新人")
+        private Long updateBy;
+
+        @ApiModelProperty("更新时间")
+        private Date updateTime;
+
+        @ApiModelProperty("创建人")
+        private Long createBy;
+
+        @ApiModelProperty("上传人名称")
+        private String createByName;
+
+        @ApiModelProperty("创建时间")
+        private Date createTime;
+
+        @ApiModelProperty("应用扩展ID")
+        private Long applicationExtendId;
+
+        @ApiModelProperty("应用ID")
+        private Long applicationId;
+
+        @ApiModelProperty("所属人ID")
+        private Long userId;
+
+        @ApiModelProperty("所属人")
+        private String userName;
+
+        @ApiModelProperty("分类ID")
+        private Long musicSheetCategoryId;
+
+        @ApiModelProperty("分类名称")
+        private String musicSheetCategoryName;
+
+        @ApiModelProperty("启用状态")
+        private Boolean clientStatus;
+
+        @ApiModelProperty("排序")
+        private Integer sortNo;
+
+        @ApiModelProperty("收费类型(FREE:免费;VIP:会员;CHARGE:单曲收费)")
+        private String paymentType;
+
+        @ApiModelProperty("是否置顶(0:否;1:是)")
+        private Boolean topFlag;
+
+        @ApiModelProperty("精品标志")
+        private Boolean exquisiteFlag;
+
+        @ApiModelProperty("曲目标签(多个标签用逗号分隔)")
+        private String musicTagIds;
+
+        @ApiModelProperty("曲目标签名称")
+        private String musicTagNames;
+
+        @ApiModelProperty("曲目价格")
+        private BigDecimal musicPrice;
+
+
+        @ApiModelProperty("曲目伴奏")
+        private List<CbsMusicSheetWrapper.MusicSheetAccompaniment> musicSheetAccompanimentList;
+
+
+        @ApiModelProperty("曲目原音")
+        private List<CbsMusicSheetWrapper.MusicSheetSound> musicSheetSoundList;
+
+
+        @ApiModelProperty("所属人信息")
+        private CbsMusicSheetWrapper.MusicSheetExtend musicSheetExtend;
+
+    }
+
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java

@@ -1,7 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
 import com.dayaedu.cbs.openfeign.client.MusicFeignClientService;
-import com.dayaedu.cbs.openfeign.client.SubjectFeignClientService;
 import com.dayaedu.cbs.openfeign.wrapper.musicInstrument.CbsMusicalInstrumentWrapper;
 import com.microsvc.toolkit.common.response.template.R;
 import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
@@ -265,6 +264,7 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject> implem
                 CbsMusicalInstrumentWrapper.MusicalInstrumentQueryDto dto = map.get(subject.getCbsSubjectId());
                 if (dto != null) {
                     subject.setInstrumentName(dto.getName());
+                    subject.setInstrumentIds(dto.getId().toString());
                 }
             }
         }