Browse Source

内容管理

zouxuan 1 year ago
parent
commit
899b60c936

+ 0 - 16
cooleshow-app/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetController.java

@@ -4,10 +4,8 @@ import com.alibaba.fastjson.JSONObject;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetApplicationExtendClientWrapper;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
 import com.microsvc.toolkit.common.response.template.R;
-import com.yonge.cooleshow.biz.dal.dto.AdjustModel;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicSheetOrderSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.TeacherMusicSheetSearch;
-import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.OrderTypeEnum;
 import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
@@ -98,18 +96,4 @@ public class MusicSheetController extends BaseController {
         return status(musicSheetService.sendBuyMessage(param.getTeacherId(), param.getStudentId(), param.getMusicSheetId(),
                                                        ClientEnum.STUDENT, OrderTypeEnum.MUSIC));
     }
-
-    @PostMapping("music/sheet/adjust")
-    @ApiOperation(value = "曲目调整设置")
-    public HttpResponseResult<Boolean> adjust(@RequestBody @Valid AdjustModel model) {
-
-        MusicSheet musicSheet = new MusicSheet();
-        musicSheet.setId(model.getId());
-        musicSheet.setSortNumber(model.getSort());
-        musicSheet.setExquisiteFlag(model.getExquisiteFlag());
-
-        musicSheetService.updateById(musicSheet);
-
-        return succeed();
-    }
 }

+ 17 - 2
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetController.java

@@ -1,6 +1,8 @@
 package com.yonge.cooleshow.teacher.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
+import com.microsvc.toolkit.common.response.template.R;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.AppMusicSheetVo;
@@ -19,6 +21,7 @@ import com.yonge.cooleshow.biz.dal.enums.album.PurchaseRecordTypeEnum;
 import com.yonge.cooleshow.biz.dal.service.AppVersionInfoService;
 import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
 import com.yonge.cooleshow.biz.dal.service.TeacherService;
+import com.yonge.cooleshow.biz.dal.service.cbs.CbsMusicScoreService;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetShareVo;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
@@ -35,6 +38,8 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -55,7 +60,7 @@ import java.util.Optional;
  * @version v1.0
  **/
 @RestController
-@RequestMapping("${app-config.url.teacher:}/music/sheet")
+@RequestMapping("${app-config.url.teacher:}/")
 @Api(tags = "曲谱表 API接口")
 public class MusicSheetController extends BaseController {
     @Autowired
@@ -70,6 +75,9 @@ public class MusicSheetController extends BaseController {
     @Autowired
     private TeacherService teacherService;
 
+    @Autowired
+    private CbsMusicScoreService cbsMusicScoreService;
+
     /**
      * 查询单条
      */
@@ -122,7 +130,7 @@ public class MusicSheetController extends BaseController {
         }
     }
 
-	@ApiOperation(value = "新增", httpMethod="POST", consumes="application/json", produces="application/json")
+/*	@ApiOperation(value = "新增", httpMethod="POST", consumes="application/json", produces="application/json")
     @PostMapping(value="/create", consumes="application/json", produces="application/json")
     public HttpResponseResult<Object> create(@Valid @RequestBody MusicSheetDto musicSheetDto) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
@@ -151,6 +159,13 @@ public class MusicSheetController extends BaseController {
         musicSheetDto.setCreateTime(new Date());
         musicSheetService.saveMusicSheet(musicSheetDto,sysUser.getId());
         return succeed("新增曲谱成功");
+    }*/
+
+    @ApiOperation(value = "新增/修改", notes = "曲目表- 传入 MusicSheetWrapper.MusicSheet")
+    @PreAuthorize("@auditsvc.hasPermissions('music/sheet/save', {'BACKEND'})")
+    @PostMapping("music/sheet/save")
+    public HttpResponseResult<Long> cbsAdd(@Validated @RequestBody CbsMusicSheetWrapper.AddMusicSheet addMusicSheet) {
+        return succeed(cbsMusicScoreService.musicSheetAdd(addMusicSheet));
     }
 
 

+ 0 - 8
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetController.java

@@ -340,26 +340,18 @@ public class MusicSheetController extends BaseController {
     @GetMapping(value = "/auditDetail/{authMusicSheetId}")
     @ApiOperation(value = "审核中心-乐谱审核详情",  notes = "传入曲目审核id")
     public HttpResponseResult<MusicSheetDetailVo> auditDetail(@PathVariable Long authMusicSheetId) {
-
         return succeed(musicSheetService.auditDetail(authMusicSheetId));
     }
 
-
-
     /**
      * 审核中心-乐谱审核记录列表
      */
     @GetMapping(value = "/auditDetailList/{authMusicSheetId}")
     @ApiOperation(value = "审核中心-乐谱审核详情历史记录",  notes = "传入曲目审核id")
     public HttpResponseResult<List<MusicSheetDetailVo>> auditDetailList(@PathVariable Long authMusicSheetId) {
-
         return succeed(musicSheetService.auditDetailList(authMusicSheetId));
     }
 
-
-
-
-
     @PostMapping(value = "/buySendMessage", consumes="application/json", produces="application/json")
     @ApiOperation(value = "发送学生购买老师曲目信息", httpMethod="POST", consumes="application/json", produces="application/json")
     public HttpResponseResult<Boolean> buySendMessage(@Valid @RequestBody MusicSheetStudentByMessage param) {

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicSheetDao.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetApiWrapper;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetApplicationExtendWrapper;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetExtendWrapper;
 import com.yonge.cooleshow.biz.dal.dto.search.*;
@@ -204,4 +205,8 @@ public interface MusicSheetDao extends BaseMapper<MusicSheet> {
 
     IPage<CbsMusicSheetExtendWrapper.MusicSheetExtend> orgOwnerList(@Param("page") IPage<CbsMusicSheetExtendWrapper.MusicSheetExtend> page,
                                                                  @Param("param") CbsMusicSheetExtendWrapper.MusicSheetExtendQuery query);
+
+    void updateMusicSheet(@Param("param") CbsMusicSheetApiWrapper.MusicSheetUpdate musicSheetUpdate);
+
+    MusicSheet get(Long id);
 }

+ 0 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserPaymentCoreService.java

@@ -4,7 +4,6 @@ import com.microsvc.toolkit.config.jwt.utils.JwtUserInfo;
 import com.microsvc.toolkit.middleware.payment.common.api.entity.PaymentResp;
 import com.microsvc.toolkit.middleware.payment.common.api.entity.RefundResp;
 import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
-import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 用户支付订单服务

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/cbs/CbsMusicScoreService.java

@@ -4,10 +4,14 @@ import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetApplicationExtendCli
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
 import com.microsvc.toolkit.common.response.paging.PageInfo;
 import com.microsvc.toolkit.common.response.template.R;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestBody;
 
 public interface CbsMusicScoreService {
     R<PageInfo<CbsMusicSheetWrapper.MusicSheetApplication>> selectPage(CbsMusicSheetWrapper.MusicSheetApplicationQuery query);
 
+    Long musicSheetAdd(CbsMusicSheetWrapper.AddMusicSheet addMusicSheet);
+
     void update(CbsMusicSheetApplicationExtendClientWrapper.AddMusicSheetApplicationExtend addMusicSheetApplicationExtend);
 
     void updateStatus(CbsMusicSheetApplicationExtendClientWrapper.MusicSheetApplicationExtendStatus status);

+ 43 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/cbs/impl/CbsMusicScoreServiceImpl.java

@@ -6,13 +6,19 @@ import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetApplicationExtendCli
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
 import com.microsvc.toolkit.common.response.paging.PageInfo;
 import com.microsvc.toolkit.common.response.template.R;
+import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
+import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
+import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
 import com.yonge.cooleshow.biz.dal.service.cbs.CbsMusicScoreService;
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.exception.BizException;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.List;
 
 @Slf4j
 @Service
@@ -22,6 +28,8 @@ public class CbsMusicScoreServiceImpl implements CbsMusicScoreService {
     public Long applicationId;
     @Resource
     private MusicFeignClientService musicFeignClientService;
+    @Resource
+    private MusicSheetService musicSheetService;
 
     @Override
     public R<PageInfo<CbsMusicSheetWrapper.MusicSheetApplication>> selectPage(CbsMusicSheetWrapper.MusicSheetApplicationQuery query) {
@@ -30,6 +38,41 @@ public class CbsMusicScoreServiceImpl implements CbsMusicScoreService {
     }
 
     @Override
+    public Long musicSheetAdd(CbsMusicSheetWrapper.AddMusicSheet addMusicSheet) {
+        List<CbsMusicSheetApplicationExtendClientWrapper.AddMusicSheetApplicationExtend> addMusicSheetApplicationExtend = addMusicSheet.getAddMusicSheetApplicationExtend();
+        if(CollectionUtils.isEmpty(addMusicSheetApplicationExtend)){
+            throw new BizException("曲目应用不能为空");
+        }
+        if(addMusicSheet.getId() == null){
+            addMusicSheetApplicationExtend.forEach(item->{
+                item.setApplicationId(applicationId);
+                item.setStatus(false);
+            });
+            addMusicSheet.setDelFlag(true);
+            R<Long> longR = musicFeignClientService.musicSheetAdd(addMusicSheet);
+            if (longR.getCode() != 200) {
+                throw new BizException("添加失败,{}",longR.getMessage());
+            }
+            Long cbsMusicSheetId = longR.getData();
+            //获取本地曲目修改审核状态
+            MusicSheet musicSheet = musicSheetService.lambdaQuery().eq(MusicSheet::getCbsMusicSheetId, cbsMusicSheetId).one();
+            if(musicSheet == null){
+                throw new BizException("曲目上传失败,请联系管理员");
+            }
+            musicSheet.setAuditStatus(AuthStatusEnum.DOING);
+            musicSheetService.updateById(musicSheet);
+        }else {
+            MusicSheet musicSheet = musicSheetService.lambdaQuery().eq(MusicSheet::getId, addMusicSheet.getId()).one();
+            if(musicSheet.getState() == YesOrNoEnum.YES){
+                throw new BizException("曲目已上架,不能修改");
+            }
+            musicSheet.setAuditStatus(AuthStatusEnum.DOING);
+            musicSheetService.updateById(musicSheet);
+        }
+        return null;
+    }
+
+    @Override
     public void update(CbsMusicSheetApplicationExtendClientWrapper.AddMusicSheetApplicationExtend addMusicSheetApplicationExtend) {
         addMusicSheetApplicationExtend.setApplicationId(applicationId);
         R<JSONObject> jsonObjectR = musicFeignClientService.musicSheetApplicationExtendUpdate(addMusicSheetApplicationExtend);

+ 9 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CbsMusicSheetServiceImpl.java

@@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.dayaedu.cbs.common.enums.music.EMusicSourceType;
 import com.dayaedu.cbs.openfeign.service.CbsMusicSheetService;
-import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetApplicationExtendWrapper;
-import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetCategoryWrapper;
-import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetExtendWrapper;
-import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetTagWrapper;
+import com.dayaedu.cbs.openfeign.wrapper.music.*;
 import com.microsvc.toolkit.common.response.paging.PageInfo;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
@@ -42,7 +39,9 @@ public class CbsMusicSheetServiceImpl implements CbsMusicSheetService {
         }
         List<Long> cbsMusicSheetIds = addMusicSheet.stream().map(e -> e.getMusicSheetId()).collect(Collectors.toList());
         //需要修改的曲目
-        List<MusicSheet> musicSheets = musicSheetService.lambdaQuery().in(MusicSheet::getCbsMusicSheetId, cbsMusicSheetIds).list();
+        List<MusicSheet> musicSheets = musicSheetService.lambdaQuery()
+                .in(MusicSheet::getCbsMusicSheetId, cbsMusicSheetIds)
+                .list();
         if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(musicSheets)){
             List<Long> collect = musicSheets.stream().map(e -> e.getCbsMusicSheetId()).collect(Collectors.toList());
             //获取需要修改的曲目
@@ -98,4 +97,9 @@ public class CbsMusicSheetServiceImpl implements CbsMusicSheetService {
             return QueryInfo.pageInfo(musicSheetService.getDao().orgOwnerList(page, queryInfo));
         }
     }
+
+    public boolean updateMusicSheet(CbsMusicSheetApiWrapper.MusicSheetUpdate musicSheetUpdate) {
+        musicSheetService.getDao().updateMusicSheet(musicSheetUpdate);
+        return true;
+    }
 }

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

@@ -5,8 +5,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.additional.update.impl.LambdaUpdateChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dayaedu.cbs.common.enums.music.EMusicSourceType;
+import com.dayaedu.cbs.openfeign.client.MusicFeignClientService;
 import com.dayaedu.cbs.openfeign.service.CbsMusicSheetService;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetApplicationExtendWrapper;
+import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
+import com.dayaedu.cbs.openfeign.wrapper.music.CbsSubjectApiWrapper;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.template.R;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.MusicAlbumDao;
@@ -60,6 +66,7 @@ import com.yonge.cooleshow.biz.dal.enums.*;
 import com.yonge.cooleshow.biz.dal.enums.album.PurchaseRecordTypeEnum;
 import com.yonge.cooleshow.biz.dal.mapper.UserTenantAlbumRecordMapper;
 import com.yonge.cooleshow.biz.dal.service.*;
+import com.yonge.cooleshow.biz.dal.service.cbs.CbsMusicScoreService;
 import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
 import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
@@ -85,6 +92,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -201,6 +209,9 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
     @Autowired
     private TenantAlbumService tenantAlbumService;
 
+    @Autowired
+    private CbsMusicScoreService cbsMusicScoreService;
+
     public MusicSheetDao getDao() {
         return musicSheetDao;
     }
@@ -393,12 +404,97 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         return musicSheetShareVo;
     }
 
-    @Override
-    public MusicSheetDetailVo detail(Long id, SysUser sysUser, ClientEnum userType) {
-        MusicSheetDetailVo detail = baseMapper.detail(id);
-        if (detail == null) {
+    public MusicSheetDetailVo getCbsDetail(Long id) {
+        MusicSheet musicSheet = this.baseMapper.get(id);
+        if (musicSheet == null || musicSheet.getDelFlag()) {
+            throw new BizException("未找到曲目信息");
+        }
+        if(musicSheet.getCbsMusicSheetId() == null){
+            throw new BizException("曲目信息未同步");
+        }
+        R<CbsMusicSheetWrapper.MusicSheet> musicSheetR = cbsMusicScoreService.musicSheetDetail(musicSheet.getCbsMusicSheetId());
+        if(musicSheetR.getCode() != 200){
+            throw new BizException("获取曲目信息失败");
+        }
+        CbsMusicSheetWrapper.MusicSheet musicSheet1 = musicSheetR.getData();
+        if (musicSheet1 == null) {
+            throw new BizException("未找到曲目信息");
+        }
+        MusicSheetDetailVo detailVo = JSON.parseObject(JSON.toJSONString(musicSheet), MusicSheetDetailVo.class);
+        this.initMusicSheetDetailVo(detailVo,musicSheet);
+        return detailVo;
+    }
+
+    public void initMusicSheetDetailVo(MusicSheetDetailVo detailVo,MusicSheet musicSheet) {
+        R<CbsMusicSheetWrapper.MusicSheet> musicSheetR = cbsMusicScoreService.musicSheetDetail(musicSheet.getCbsMusicSheetId());
+        if(musicSheetR.getCode() != 200){
+            throw new BizException("获取曲目信息失败");
+        }
+        CbsMusicSheetWrapper.MusicSheet musicSheet1 = musicSheetR.getData();
+        if (musicSheet1 == null) {
             throw new BizException("未找到曲目信息");
         }
+        CbsMusicSheetWrapper.MusicSheetExtend musicSheetExtend = musicSheet1.getMusicSheetExtend();
+        if (musicSheetExtend != null && musicSheetExtend.getUserId() != null) {
+            detailVo.setUserName(musicSheetExtend.getUserName());
+            detailVo.setUserId(musicSheetExtend.getUserId());
+            //获取用户头像
+            SysUser sysUser = sysUserFeignService.queryUserById(musicSheetExtend.getUserId());
+            if (sysUser != null) {
+                detailVo.setUserAvatar(sysUser.getAvatar());
+            }
+        }
+
+        if(StringUtils.isNotEmpty(musicSheet1.getSubjectIds())){
+            CbsSubjectApiWrapper.SubjectQuery subjectQuery = new CbsSubjectApiWrapper.SubjectQuery();
+            subjectQuery.setCbsSubjectIds(Arrays.stream(musicSheet1.getSubjectIds().split(",")).map(Long::parseLong).collect(Collectors.toList()));
+            List<CbsSubjectApiWrapper.Subject> subjects = subjectService.getDao().queryCbsList(subjectQuery);
+            if(CollectionUtils.isNotEmpty(subjects)){
+                detailVo.setSubjectNames(subjects.stream().map(CbsSubjectApiWrapper.Subject::getSubjectName).collect(Collectors.joining(",")));
+                detailVo.setCode(subjects.stream().map(CbsSubjectApiWrapper.Subject::getCode).collect(Collectors.joining(",")));
+            }
+        }
+        detailVo.setId(musicSheet.getId());
+        detailVo.setCbsMusicSheetId(musicSheet1.getId());
+        detailVo.setAudioType(AudioTypeEnum.valueOf(musicSheet1.getPlayMode().getCode()));
+        detailVo.setCanEvaluate(musicSheet1.getIsEvaluated() ? YesOrNoEnum.YES : YesOrNoEnum.NO);
+        detailVo.setShowFingering(musicSheet1.getIsShowFingering() ? YesOrNoEnum.YES : YesOrNoEnum.NO);
+        detailVo.setMusicTag(musicSheet1.getMusicTag());
+        detailVo.setMusicTagNames(musicSheet1.getMusicTagNames());
+        List<CbsMusicSheetWrapper.MusicSheetAccompaniment> accompanimentList = musicSheet1.getMusicSheetAccompanimentList();
+        if (CollectionUtils.isNotEmpty(accompanimentList)) {
+            detailVo.setAudioFileUrl(accompanimentList.get(0).getAudioFileUrl());
+        }
+        detailVo.setXmlFileUrl(musicSheet1.getXmlFileUrl());
+        detailVo.setMidiUrl(musicSheet1.getMidiFileUrl());
+        detailVo.setAuditVersion(musicSheet1.getAppAuditFlag() ? YesOrNoEnum.YES : YesOrNoEnum.NO);
+        detailVo.setHasBeat((musicSheet1.getIsPlayBeat() && !musicSheet1.getIsUseSystemBeat()) ? YesOrNoEnum.YES : YesOrNoEnum.NO);
+        detailVo.setExtConfigJson(musicSheet1.getExtConfigJson());
+        detailVo.setMusicJSON(musicSheet1.getMusicJson());
+        detailVo.setMusicJianSvg(musicSheet1.getMusicJianSvg());
+        detailVo.setMusicFirstSvg(musicSheet1.getMusicFirstSvg());
+        detailVo.setFirstTone(musicSheet1.getMusicFirstImg());
+        detailVo.setFixedTone(musicSheet1.getMusicJianImg());
+        List<CbsMusicSheetWrapper.MusicSheetSound> soundList = musicSheet1.getMusicSheetSoundList();
+        if (CollectionUtils.isNotEmpty(soundList)) {
+            List<MusicSheetAccompaniment> background = new ArrayList<>();
+            for (CbsMusicSheetWrapper.MusicSheetSound sound : soundList) {
+                MusicSheetAccompaniment accompaniment = new MusicSheetAccompaniment();
+                accompaniment.setMusicSheetId(musicSheet.getId());
+                accompaniment.setAudioFileUrl(sound.getAudioFileUrl());
+                accompaniment.setSortNumber(sound.getSortNumber());
+                accompaniment.setTrack(sound.getTrack());
+                background.add(accompaniment);
+            }
+            //按照sortNumber排序
+            background.sort(Comparator.comparing(MusicSheetAccompaniment::getSortNumber));
+            detailVo.setBackground(background);
+        }
+    }
+
+    @Override
+    public MusicSheetDetailVo detail(Long id, SysUser sysUser, ClientEnum userType) {
+        MusicSheetDetailVo detail = this.getCbsDetail(id);
 
         // 设置收藏人数
         detail.setFavoriteCount(detail.getFavoriteCount() + detail.getVirtualNumber());
@@ -553,14 +649,79 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
                 }
             }
         }
+    }
+
+    public void initMusicSheetVo(MusicSheetVo record,CbsMusicSheetWrapper.MusicSheetApplication musicSheetApplication,Map<Long, CbsSubjectApiWrapper.Subject> subjectMap){
+        if(StringUtils.isNotEmpty(musicSheetApplication.getSubjectIds())){
+            StringBuffer sb = new StringBuffer();
+            for (String s : musicSheetApplication.getSubjectIds().split(",")) {
+                CbsSubjectApiWrapper.Subject subject = subjectMap.get(Long.parseLong(s));
+                if(subject != null){
+                    if (sb.length() > 0) {
+                        sb.append(",");
+                    }
+                    sb.append(subject.getSubjectName());
+                }
+            }
+            record.setSubjectNames(sb.toString());
+        }
+        record.setCbsMusicSheetId(musicSheetApplication.getId());
+        record.setAudioType(AudioTypeEnum.valueOf(musicSheetApplication.getPlayMode().getCode()));
+        record.setCanEvaluate(musicSheetApplication.getIsEvaluated() ? YesOrNoEnum.YES : YesOrNoEnum.NO);
+        record.setShowFingering(musicSheetApplication.getIsShowFingering() ? YesOrNoEnum.YES : YesOrNoEnum.NO);
+        record.setMusicTag(musicSheetApplication.getMusicTagIds());
+        record.setMusicTagNames(musicSheetApplication.getMusicTagNames());
+        List<CbsMusicSheetWrapper.MusicSheetAccompaniment> accompanimentList = musicSheetApplication.getMusicSheetAccompanimentList();
+        if (CollectionUtils.isNotEmpty(accompanimentList)) {
+            record.setAudioFileUrl(accompanimentList.get(0).getAudioFileUrl());
+        }
+        record.setXmlFileUrl(musicSheetApplication.getXmlFileUrl());
+        record.setMidiUrl(musicSheetApplication.getMidiFileUrl());
+        record.setAuditVersion(musicSheetApplication.getAppAuditFlag() ? YesOrNoEnum.YES : YesOrNoEnum.NO);
+        record.setHasBeat((musicSheetApplication.getIsPlayBeat() && !musicSheetApplication.getIsUseSystemBeat()) ? YesOrNoEnum.YES : YesOrNoEnum.NO);
+        record.setExtConfigJson(musicSheetApplication.getExtConfigJson());
+        record.setMusicJSON(musicSheetApplication.getMusicJson());
+        record.setMusicJianSvg(musicSheetApplication.getMusicJianSvg());
+        record.setMusicFirstSvg(musicSheetApplication.getMusicFirstSvg());
+        record.setFirstTone(musicSheetApplication.getMusicFirstImg());
+        record.setFixedTone(musicSheetApplication.getMusicJianImg());
+    }
+
 
+    public void initMusicSheetVos(List<MusicSheetVo> records) {
+        if(CollectionUtils.isNotEmpty(records)){
+            List<Long> cbsMusicSheetIds = records.stream().map(e -> e.getCbsMusicSheetId()).collect(Collectors.toList());
+            CbsMusicSheetWrapper.MusicSheetApplicationQuery query = new CbsMusicSheetWrapper.MusicSheetApplicationQuery();
+            query.setMusicSheetIds(cbsMusicSheetIds);
+            query.setDetailFlag(true);
+            R<PageInfo<CbsMusicSheetWrapper.MusicSheetApplication>> pageInfoR = cbsMusicScoreService.selectPage(query);
+            if(pageInfoR.getCode() != 200){
+                throw new BizException("获取曲目信息失败");
+            }
+            PageInfo<CbsMusicSheetWrapper.MusicSheetApplication> pageInfo = pageInfoR.getData();
+            if(pageInfo != null && CollectionUtils.isNotEmpty(pageInfo.getRows())){
+                Map<Long, CbsMusicSheetWrapper.MusicSheetApplication> musicSheetApplicationMap = pageInfo.getRows()
+                        .stream().collect(Collectors.toMap(CbsMusicSheetWrapper.MusicSheetApplication::getId, Function.identity()));
+                CbsSubjectApiWrapper.SubjectQuery subjectQuery = new CbsSubjectApiWrapper.SubjectQuery();
+                subjectQuery.setCbsSubjectIds(records.stream().map(MusicSheetVo::getMusicSubject).filter(StringUtils::isNotEmpty).map(Long::parseLong).distinct().collect(Collectors.toList()));
+                List<CbsSubjectApiWrapper.Subject> subjects = subjectService.getDao().queryCbsList(subjectQuery);
+                Map<Long, CbsSubjectApiWrapper.Subject> subjectMap = subjects.stream().collect(Collectors.toMap(CbsSubjectApiWrapper.Subject::getSubjectId, Function.identity()));
+                for (MusicSheetVo record : records) {
+                    CbsMusicSheetWrapper.MusicSheetApplication musicSheetApplication = musicSheetApplicationMap.get(record.getCbsMusicSheetId());
+                    if(musicSheetApplication != null){
+                        this.initMusicSheetVo(record,musicSheetApplication,subjectMap);
+                    }
+                }
+            }
+        }
 
     }
 
     @Override
     public IPage<MusicSheetVo> selectStudentPage(IPage<MusicSheetVo> page, StudentMusicSheetSearch query, ClientEnum clientType) {
         List<MusicSheetVo> records = baseMapper.selectStudentMusicPage(page, query, clientType);
-
+        //设置内容平台曲目信息
+        this.initMusicSheetVos(records);
         if (CollectionUtils.isNotEmpty(records)) {
 
             // 统计单曲归属专辑数
@@ -696,6 +857,8 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         query.setDelFlag(null);
 
         List<MusicSheetVo> records = baseMapper.selectMyMusicPage(page, query);
+        //设置内容平台曲目信息
+        this.initMusicSheetVos(records);
 
         // 统计曲目专辑数
         if (CollectionUtils.isNotEmpty(records)) {
@@ -713,6 +876,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         List<MusicSheetVo> records = baseMapper.selectFavoriteMusicPage(page, query, clientType);
 
         if (CollectionUtils.isNotEmpty(records)) {
+            this.initMusicSheetVos(records);
 
             // 更新曲目专辑数量
             musicSheetService.updateMusicAlbumNumInfo(records);
@@ -735,7 +899,10 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         // 设置学生端收藏联系
         query.setClientType(ClientEnum.STUDENT);
         // 构建分页信息
-        page.setRecords(baseMapper.selectPracticeMusicPage(query, practiceMusicIdList));
+        List<MusicSheetVo> musicSheetVos = baseMapper.selectPracticeMusicPage(query, practiceMusicIdList);
+        //设置内容平台曲目信息
+        this.initMusicSheetVos(musicSheetVos);
+        page.setRecords(musicSheetVos);
         page.setPages(practiceMusicIdPage.getPages());
         page.setCurrent(practiceMusicIdPage.getCurrent());
         page.setSize(practiceMusicIdPage.getSize());

+ 57 - 13
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml

@@ -94,11 +94,32 @@
     </sql>
     <insert id="batchInsert">
         insert into music_sheet
-        (cbs_music_sheet_id_,provider_type_,music_tag_,payment_type_,music_price_,top_flag_,exquisite_flag_,sort_number_)
+        (cbs_music_sheet_id_,provider_type_,music_tag_,payment_type_,charge_type_,music_price_,top_flag_,exquisite_flag_,sort_number_,state_,audit_status_
+        <if test="item.musicSheetUpdate != null">
+            ,music_sheet_name_,music_subject_,music_svg_,composer_,title_img_,music_img_,accompaniment_type_,play_speed_,
+         music_price_,notation_,music_sheet_type_,source_type_,create_by_
+        </if>
+        )
         values
         <foreach collection="vos" item="item" separator=",">
-            (#{item.musicSheetId},#{item.availableType},#{item.musicTagIds},#{item.paymentType},
-             #{item.musicPrice},#{item.topFlag},#{item.exquisiteFlag},#{item.sortNo})
+            (#{item.musicSheetId},#{item.availableType},#{item.musicTagIds},#{item.paymentType},#{item.paymentType},
+             #{item.musicPrice},#{item.topFlag},#{item.exquisiteFlag},#{item.sortNo},1,'PASS'
+            <if test="item.musicSheetUpdate != null">
+            ,#{item.musicSheetUpdate.name},
+            #{item.musicSheetUpdate.subjectIds},
+            #{item.musicSheetUpdate.musicSvg},
+            #{item.musicSheetUpdate.composer},
+            #{item.musicSheetUpdate.musicCover},
+            #{item.musicSheetUpdate.musicCover},
+            #{item.musicSheetUpdate.audioType},
+            #{item.musicSheetUpdate.playSpeed},
+            #{item.musicSheetUpdate.musicPrice},
+            #{item.musicSheetUpdate.notation},
+            #{item.musicSheetUpdate.musicSheetType},
+             CASE WHEN #{item.musicSheetUpdate.sourceType} == 'PLATFORM' THEN 'PLATFORM' ELSE 'TEACHER' END,
+            #{item.musicSheetUpdate.userId}
+            </if>
+             )
         </foreach>
     </insert>
 
@@ -118,15 +139,9 @@
             <if test="param.auditVersion != null ">
                 and #{param.auditVersion} = t.audit_version_
             </if>
-            <if test="param.dataRecovery != null">
-                AND (t.music_svg_ = '' OR t.music_svg_ IS NULL OR t.music_first_svg_ = '' OR t.music_first_svg_ IS NULL OR t.music_jian_svg_ = '' OR t.music_jian_svg_ IS NULL)
-            </if>
             <if test="param.notation">
                 AND t.notation_ = #{param.notation}
             </if>
-            <if test="param.DataCorrect != null">
-                AND t.correct_time_ &lt;= '2023-02-07 15:00:00'
-            </if>
         </where>
         order by
         <if test="param.myself == null or param.myself == false ">
@@ -280,11 +295,9 @@
             ,t.metronome_url_ as metronomeUrl
             ,msa.id_ as accompanimentId
             ,msa.music_sheet_id_ as accompanimentMusicSheetId
-            ,msa.music_subject_ as accompanimentMusicSubject
             ,msa.audio_file_url_ as accompanimentAudioFileUrl
             ,msa.sort_number_ as accompanimentSortNumber
             ,msa.create_time_ as accompanimentCreateTime
-            ,msa.metronome_url_ as accompanimentMetronomeUrl
             ,msa.track_ as track
             ,su.username_ as userName
             ,su.avatar_ as userAvatar
@@ -816,8 +829,25 @@
         <foreach collection="vos" item="item" index="index" separator=";">
             update music_sheet ms set ms.provider_type_ = #{item.availableType},
             ms.music_tag_ = #{item.musicTagIds},ms.payment_type_ = #{item.paymentType},
+            ms.charge_type_ = #{item.paymentType},
             ms.music_price_ = #{item.musicPrice},ms.top_flag_ = #{item.topFlag},
-            ms.exquisite_flag_ = #{item.exquisiteFlag},ms.sort_number_ = #{item.sortNo}
+            ms.exquisite_flag_ = #{item.exquisiteFlag},ms.sort_number_ = #{item.sortNo},ms.del_flag_ = 0,
+            ms.state_ = 1,ms.audit_status_ = 'PASS'
+            <if test="item.musicSheetUpdate != null">
+                ,ms.music_sheet_name_ = #{item.musicSheetUpdate.name},
+                ms.music_subject_ = #{item.musicSheetUpdate.subjectIds},
+                ms.music_svg_ = #{item.musicSheetUpdate.musicSvg},
+                ms.composer_ = #{item.musicSheetUpdate.composer},
+                ms.title_img_ = #{item.musicSheetUpdate.musicCover},
+                ms.music_img_ = #{item.musicSheetUpdate.musicCover},
+                ms.accompaniment_type_ = #{item.musicSheetUpdate.audioType},
+                ms.play_speed_ = #{item.musicSheetUpdate.playSpeed},
+                ms.music_price_ = #{item.musicSheetUpdate.musicPrice},
+                ms.notation_ = #{item.musicSheetUpdate.notation},
+                ms.music_sheet_type_ = #{item.musicSheetUpdate.musicSheetType},
+                ms.create_by_ = #{item.musicSheetUpdate.userId},
+                ms.source_type_ = CASE WHEN #{item.musicSheetUpdate.sourceType} = 'PLATFORM' THEN 'PLATFORM' ELSE 'TEACHER' END
+            </if>
             where ms.cbs_music_sheet_id_ = #{item.musicSheetId}
         </foreach>
     </update>
@@ -825,7 +855,16 @@
         update music_sheet set state_ = #{status} where FIND_IN_SET(cbs_music_sheet_id_,#{ids})
     </update>
     <update id="batchDel">
-        DELETE FROM music_sheet where FIND_IN_SET(cbs_music_sheet_id_,#{ids})
+        update music_sheet set del_flag_ = 1 where FIND_IN_SET(cbs_music_sheet_id_,#{ids})
+    </update>
+    <update id="updateMusicSheet">
+        update music_sheet
+        set music_sheet_name_ = #{param.name},music_subject_ = #{param.subjectIds},music_svg_ = #{param.musicSvg},
+            composer_ = #{param.composer},title_img_ = #{param.musicCover},music_img_ = #{param.musicCover},accompaniment_type_ = #{param.audioType},
+            play_speed_ = #{param.playSpeed},music_price_ = #{param.musicPrice},notation_ = #{param.notation},
+            music_sheet_type_ = #{param.musicSheetType},source_type_ = CASE WHEN #{param.sourceType} = 'PLATFORM' THEN 'PLATFORM' ELSE 'TEACHER' END,
+            create_by_ = #{param.userId},audit_status_ = 'PASS'
+        where cbs_music_sheet_id_ = #{param.id}
     </update>
 
     <select id="countByUser" resultType="com.yonge.cooleshow.biz.dal.vo.MusicSheetUploadCountVo">
@@ -909,5 +948,10 @@
             </foreach>
         </if>
     </select>
+    <select id="get" resultType="com.yonge.cooleshow.biz.dal.entity.MusicSheet">
+        select <include refid="Base_Column_List"/>
+        from music_sheet
+        where id_ = #{id}
+    </select>
     <!--单曲专辑数量统计-->
 </mapper>

+ 1 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/SubjectMapper.xml

@@ -213,7 +213,7 @@
     </select>
     <select id="queryCbsList"
             resultType="com.dayaedu.cbs.openfeign.wrapper.music.CbsSubjectApiWrapper$Subject">
-        SELECT id_ subjectId,cbs_subject_id_ cbsSubjectId,name_ subjectName FROM `subject`
+        SELECT id_ subjectId,cbs_subject_id_ cbsSubjectId,name_ subjectName,code_ code FROM `subject`
         WHERE del_flag_ = 0
         <if test="query.cbsSubjectIds != null and query.cbsSubjectIds.size > 0">
             AND cbs_subject_id_ IN