liujc 11 months ago
parent
commit
0738b7358c

+ 2 - 1
cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/TenantAlbumSheetController.java

@@ -16,6 +16,7 @@ import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
 import com.yonge.cooleshow.biz.dal.service.StudentService;
 import com.yonge.cooleshow.biz.dal.service.TenantAlbumMusicService;
+import com.yonge.cooleshow.biz.dal.wrapper.LessonCoursewareDetailWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.LessonCoursewareWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumMusicWrapper;
 import com.yonge.cooleshow.common.controller.BaseController;
@@ -137,7 +138,7 @@ public class TenantAlbumSheetController extends BaseController {
 
     @ApiOperation(value = "获取课程详情")
     @GetMapping("/getLessonCourseDetail/{id}")
-    public HttpResponseResult<CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail> getLessonCourseDetail(@PathVariable("id") String id) {
+    public HttpResponseResult<LessonCoursewareDetailWrapper.LessonCoursewareDetail> getLessonCourseDetail(@PathVariable("id") String id) {
 
         return succeed(tenantAlbumMusicService.getLessonCourseDetail(id));
 

+ 2 - 1
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/TenantAlbumSheetController.java

@@ -12,6 +12,7 @@ import com.yonge.cooleshow.biz.dal.entity.Teacher;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.service.TeacherService;
 import com.yonge.cooleshow.biz.dal.service.TenantAlbumMusicService;
+import com.yonge.cooleshow.biz.dal.wrapper.LessonCoursewareDetailWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.LessonCoursewareWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumMusicWrapper;
 import com.yonge.cooleshow.common.controller.BaseController;
@@ -100,7 +101,7 @@ public class TenantAlbumSheetController extends BaseController {
 
     @ApiOperation(value = "获取课程详情")
     @GetMapping("/getLessonCourseDetail/{id}")
-    public HttpResponseResult<CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail> getLessonCourseDetail(@PathVariable("id") String id){
+    public HttpResponseResult<LessonCoursewareDetailWrapper.LessonCoursewareDetail> getLessonCourseDetail(@PathVariable("id") String id){
         return succeed(tenantAlbumMusicService.getLessonCourseDetail(id));
     }
 

+ 2 - 1
cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/TenantAlbumSheetController.java

@@ -10,6 +10,7 @@ import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.service.TenantAlbumMusicService;
+import com.yonge.cooleshow.biz.dal.wrapper.LessonCoursewareDetailWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.LessonCoursewareWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumMusicWrapper;
 import com.yonge.cooleshow.common.controller.BaseController;
@@ -108,7 +109,7 @@ public class TenantAlbumSheetController extends BaseController {
 
     @ApiOperation(value = "获取课程详情")
     @GetMapping("/getLessonCourseDetail/{id}")
-    public HttpResponseResult<CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail> getLessonCourseDetail(@PathVariable("id") String id){
+    public HttpResponseResult<LessonCoursewareDetailWrapper.LessonCoursewareDetail> getLessonCourseDetail(@PathVariable("id") String id){
         return succeed(tenantAlbumMusicService.getLessonCourseDetail(id));
     }
 

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TenantAlbumMusicService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareDetailWrapper;
 import com.yonge.cooleshow.biz.dal.enums.SubjectTypeEnum;
+import com.yonge.cooleshow.biz.dal.wrapper.LessonCoursewareDetailWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.LessonCoursewareWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumMusicWrapper;
 import com.yonge.cooleshow.biz.dal.entity.TenantAlbumMusic;
@@ -68,5 +69,5 @@ public interface TenantAlbumMusicService extends IService<TenantAlbumMusic>  {
 
     LessonCoursewareWrapper.LessonCourseware getLessonCoursewareDetail(LessonCoursewareWrapper.LessonCourseQuery query);
 
-    CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail getLessonCourseDetail(String lessoncoursewareDetailId);
+    LessonCoursewareDetailWrapper.LessonCoursewareDetail getLessonCourseDetail(String lessoncoursewareDetailId);
 }

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

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dayaedu.cbs.common.enums.school.ECourseType;
 import com.dayaedu.cbs.common.enums.school.EKnowledgeType;
+import com.dayaedu.cbs.common.enums.school.EMaterialType;
 import com.dayaedu.cbs.openfeign.client.CoursewareFeignService;
 import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsCourseTypeWrapper;
 import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareDetailWrapper;
@@ -18,6 +19,8 @@ import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.SubjectTypeEnum;
 import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumMusicMapper;
 import com.yonge.cooleshow.biz.dal.service.*;
+import com.yonge.cooleshow.biz.dal.service.cbs.CbsMusicScoreService;
+import com.yonge.cooleshow.biz.dal.wrapper.LessonCoursewareDetailWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.LessonCoursewareWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumMusicWrapper;
 import com.yonge.toolset.base.exception.BizException;
@@ -423,14 +426,36 @@ public class TenantAlbumMusicServiceImpl extends ServiceImpl<TenantAlbumMusicMap
     }
 
     @Override
-    public CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail getLessonCourseDetail(String lessonCoursewareDetailId) {
-        CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail lessonCoursewareDetail = coursewareFeignService.lessonCoursewareDetailDetail(Long.parseLong(lessonCoursewareDetailId)).feignData();
+    public LessonCoursewareDetailWrapper.LessonCoursewareDetail getLessonCourseDetail(String lessonCoursewareDetailId) {
+        CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail cbsLessonCoursewareDetail = coursewareFeignService.lessonCoursewareDetailDetail(Long.parseLong(lessonCoursewareDetailId)).feignData();
+        if (cbsLessonCoursewareDetail == null) {
+            throw new BizException("课件不存在");
+        }
+        LessonCoursewareDetailWrapper.LessonCoursewareDetail lessonCoursewareDetail = JSON.parseObject(JSON.toJSONString(cbsLessonCoursewareDetail), LessonCoursewareDetailWrapper.LessonCoursewareDetail.class);
+
 
         // 过滤调未应用到项目的去练习曲目
-        List<CbsLessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList = lessonCoursewareDetail.getKnowledgePointList();
-        List<CbsMaterialRefWrapper.AddMaterialRef> addMaterialRefs = getMaterialRefList(knowledgePointList);
+        List<LessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList = lessonCoursewareDetail.getKnowledgePointList();
+        List<LessonCoursewareDetailWrapper.AddMaterialRef> addMaterialRefs = getMaterialRefList(knowledgePointList);
+        List<LessonCoursewareDetailWrapper.MaterialSmall> musicMaterialSmalls = getMaterialSmalls(knowledgePointList);
+        if (CollectionUtils.isNotEmpty(musicMaterialSmalls)) {
+            List<Long> cbsMaterialMusicIds = musicMaterialSmalls.stream().map(LessonCoursewareDetailWrapper.MaterialSmall::getContent)
+                .filter(StringUtils::isNotBlank).map(Long::parseLong).collect(Collectors.toList());
+            Map<Long, Long> idMap = musicSheetService.lambdaQuery()
+                .in(MusicSheet::getCbsMusicSheetId, cbsMaterialMusicIds)
+                .eq(MusicSheet::getDelFlag, false)
+                .eq(MusicSheet::getState, 1)
+                .list()
+                .stream()
+                .collect(Collectors.toMap(MusicSheet::getCbsMusicSheetId, MusicSheet::getId,(o1,o2)->o1));
+            for (LessonCoursewareDetailWrapper.MaterialSmall musicMaterialSmall : musicMaterialSmalls) {
+                musicMaterialSmall.setStatus(idMap.keySet().contains(Long.parseLong(musicMaterialSmall.getContent())));
+                musicMaterialSmall.setContent(idMap.getOrDefault(Long.parseLong(musicMaterialSmall.getContent()),-1L).toString());
+            }
+        }
         List<Long> cbsMusicSheetIdList =
-            addMaterialRefs.stream().filter(next -> EKnowledgeType.MUSIC.equals(next.getKnowledgeType())).map(CbsMaterialRefWrapper.AddMaterialRef::getResourceId).distinct().collect(Collectors.toList());
+            addMaterialRefs.stream().filter(next -> EKnowledgeType.MUSIC.equals(next.getKnowledgeType()))
+                .map(LessonCoursewareDetailWrapper.AddMaterialRef::getResourceId).distinct().collect(Collectors.toList());
         if (!org.springframework.util.CollectionUtils.isEmpty(cbsMusicSheetIdList)) {
             Map<Long, Long> idMap = musicSheetService.lambdaQuery()
                 .in(MusicSheet::getCbsMusicSheetId, cbsMusicSheetIdList)
@@ -440,10 +465,11 @@ public class TenantAlbumMusicServiceImpl extends ServiceImpl<TenantAlbumMusicMap
                 .stream()
                 .collect(Collectors.toMap(MusicSheet::getCbsMusicSheetId, MusicSheet::getId,(o1,o2)->o1));
 
-            for (CbsMaterialRefWrapper.AddMaterialRef addMaterialRef : addMaterialRefs) {
+            for (LessonCoursewareDetailWrapper.AddMaterialRef addMaterialRef : addMaterialRefs) {
                 Long resourceId = addMaterialRef.getResourceId();
                 if (idMap.containsKey(resourceId)) {
                     addMaterialRef.setResourceId(idMap.get(resourceId));
+                    addMaterialRef.setResourceIdStr(idMap.getOrDefault(resourceId,-1L).toString());
                 }
             }
             // 过滤掉没有对应的曲目
@@ -453,18 +479,39 @@ public class TenantAlbumMusicServiceImpl extends ServiceImpl<TenantAlbumMusicMap
         return lessonCoursewareDetail;
     }
 
-    private void filterMaterialRefList(List<CbsLessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList,List<Long> cbsMusicSheetIds) {
+    private List<LessonCoursewareDetailWrapper.MaterialSmall> getMaterialSmalls(List<LessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList) {
+        List<LessonCoursewareDetailWrapper.MaterialSmall> materialRefList = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(knowledgePointList)) {
+            for (LessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall : knowledgePointList) {
+
+                if (CollectionUtils.isNotEmpty(knowledgePointSmall.getChildren())) {
+                    materialRefList.addAll(getMaterialSmalls(knowledgePointSmall.getChildren()));
+                }
+                List<LessonCoursewareDetailWrapper.MaterialSmall> materialList = knowledgePointSmall.getMaterialList();
+                if (CollectionUtils.isNotEmpty(materialList)) {
+                    for (LessonCoursewareDetailWrapper.MaterialSmall materialSmall : materialList) {
+                        if (materialSmall.getType() == EMaterialType.SONG) {
+                            materialRefList.add(materialSmall);
+                        }
+                    }
+                }
+            }
+        }
+        return materialRefList;
+    }
+
+    private void filterMaterialRefList(List<LessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList,List<Long> cbsMusicSheetIds) {
         if (CollectionUtils.isNotEmpty(knowledgePointList)) {
-            for (CbsLessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall : knowledgePointList) {
+            for (LessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall : knowledgePointList) {
 
                 if (CollectionUtils.isNotEmpty(knowledgePointSmall.getChildren())) {
                     filterMaterialRefList(knowledgePointSmall.getChildren(),cbsMusicSheetIds);
                 }
-                List<CbsLessonCoursewareDetailWrapper.MaterialSmall> materialList = knowledgePointSmall.getMaterialList();
+                List<LessonCoursewareDetailWrapper.MaterialSmall> materialList = knowledgePointSmall.getMaterialList();
                 if (CollectionUtils.isNotEmpty(materialList)) {
-                    for (CbsLessonCoursewareDetailWrapper.MaterialSmall materialSmall : materialList) {
+                    for (LessonCoursewareDetailWrapper.MaterialSmall materialSmall : materialList) {
                         if (CollectionUtils.isNotEmpty(materialSmall.getMaterialRefs())) {
-                            List<CbsMaterialRefWrapper.AddMaterialRef> refList = materialSmall.getMaterialRefs().stream()
+                            List<LessonCoursewareDetailWrapper.AddMaterialRef> refList = materialSmall.getMaterialRefs().stream()
                                 .filter(next -> !(EKnowledgeType.MUSIC.equals(next.getKnowledgeType()) && !cbsMusicSheetIds.contains(next.getResourceId())))
                                 .collect(Collectors.toList());
                             materialSmall.setMaterialRefs(refList);
@@ -475,17 +522,17 @@ public class TenantAlbumMusicServiceImpl extends ServiceImpl<TenantAlbumMusicMap
         }
     }
 
-    private List<CbsMaterialRefWrapper.AddMaterialRef> getMaterialRefList(List<CbsLessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList) {
-        List<CbsMaterialRefWrapper.AddMaterialRef> materialRefList = new ArrayList<>();
+    private List<LessonCoursewareDetailWrapper.AddMaterialRef> getMaterialRefList(List<LessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList) {
+        List<LessonCoursewareDetailWrapper.AddMaterialRef> materialRefList = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(knowledgePointList)) {
-            for (CbsLessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall : knowledgePointList) {
+            for (LessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall : knowledgePointList) {
 
                 if (CollectionUtils.isNotEmpty(knowledgePointSmall.getChildren())) {
                     materialRefList.addAll(getMaterialRefList(knowledgePointSmall.getChildren()));
                 }
-                List<CbsLessonCoursewareDetailWrapper.MaterialSmall> materialList = knowledgePointSmall.getMaterialList();
+                List<LessonCoursewareDetailWrapper.MaterialSmall> materialList = knowledgePointSmall.getMaterialList();
                 if (CollectionUtils.isNotEmpty(materialList)) {
-                    for (CbsLessonCoursewareDetailWrapper.MaterialSmall materialSmall : materialList) {
+                    for (LessonCoursewareDetailWrapper.MaterialSmall materialSmall : materialList) {
                         if (CollectionUtils.isNotEmpty(materialSmall.getMaterialRefs())) {
                             materialRefList.addAll(materialSmall.getMaterialRefs());
                         }

+ 120 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/LessonCoursewareDetailWrapper.java

@@ -0,0 +1,120 @@
+package com.yonge.cooleshow.biz.dal.wrapper;
+
+import com.dayaedu.cbs.common.enums.school.EKnowledgeType;
+import com.dayaedu.cbs.common.enums.school.EMaterialRefType;
+import com.dayaedu.cbs.common.enums.school.EMaterialType;
+import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsMaterialRefWrapper;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+public class LessonCoursewareDetailWrapper {
+
+
+    @Data
+    @ApiModel(" LessonCoursewareDetail-课件内容")
+    public static class LessonCoursewareDetail {
+        @ApiModelProperty("主键ID")
+        private String id;
+        @ApiModelProperty("课件编号")
+        private Long lessonCoursewareId;
+        @ApiModelProperty("课时名称")
+        private String name;
+        @ApiModelProperty("课时目标描述")
+        private String lessonTargetDesc;
+        @ApiModelProperty("课后训练编号")
+        private Long lessonTrainingId;
+        @ApiModelProperty("课后训练名称")
+        private String lessonTrainingName;
+        @ApiModelProperty("课程时长(秒)")
+        private Integer lessonDurationSecond;
+        @ApiModelProperty("课程排序")
+        private Integer lessonOrder;
+        @ApiModelProperty("是否锁定")
+        private Boolean lockFlag;
+        @ApiModelProperty("是否需要锁定课件")
+        private Boolean lockEnable;
+        @ApiModelProperty("创建时间")
+        private Date createTime;
+        @ApiModelProperty("更新时间")
+        private Date updateTime;
+        private String knowledgePointIds;
+        @ApiModelProperty("可见范围,0:所有人课件,1:仅VIP学生可见")
+        private Integer accessScope;
+        @ApiModelProperty("知识点")
+        private List<KnowledgePointSmall> knowledgePointList;
+        private List<Long> lessonCoursewareIds;
+        private List<Long> lessonCoursewareDetailIds;
+    }
+
+    @Data
+    @ApiModel(" KnowledgePointSmall-知识点")
+    public static class KnowledgePointSmall {
+        @ApiModelProperty("知识点编号")
+        private Long id;
+        @ApiModelProperty("排序")
+        private Integer sortNo;
+        @ApiModelProperty("知识点名称")
+        private String name;
+        @ApiModelProperty("建议学习时长")
+        private Integer totalMaterialTimeSecond = 0;
+        @ApiModelProperty("素材")
+        private List<MaterialSmall> materialList;
+        @ApiModelProperty("子节点")
+        private List<KnowledgePointSmall> children;
+    }
+
+    @Data
+    @ApiModel(" MaterialSmall-素材")
+    public static class MaterialSmall {
+        @ApiModelProperty("素材编号")
+        private Long id;
+        @ApiModelProperty("素材知识点关联编号")
+        private Long knowledgePointMaterialRelationId;
+        @ApiModelProperty("知识点编号")
+        private Long knowledgePointId;
+        @ApiModelProperty("素材名称")
+        private String name;
+        @ApiModelProperty("分段编号")
+        private String sn;
+        @ApiModelProperty("课程类型")
+        private String courseTypeCode;
+        @ApiModelProperty("素材时长")
+        private Integer adviseStudyTimeSecond;
+        @ApiModelProperty("素材类型")
+        private EMaterialType type;
+        @ApiModelProperty("素材类型-兼容管乐迷")
+        private String typeCode;
+        @ApiModelProperty("视频、图片链接或者是曲目编号")
+        private String content;
+        @ApiModelProperty("更新时间")
+        private Date updateTime;
+
+        @ApiModelProperty("关联资源数据")
+        private List<AddMaterialRef> materialRefs;
+
+        @ApiModelProperty("状态")
+        private boolean status = true;
+    }
+
+    @Data
+    @ApiModel(" AddMaterialRef-素材关联")
+    public static class AddMaterialRef {
+        @ApiModelProperty("关联素材ID")
+        private Long resourceId;
+        @ApiModelProperty("类型,MUSIC,MATERIAL")
+        private EKnowledgeType knowledgeType;
+        @ApiModelProperty("关联类型,强:STRONG,弱:WEAK")
+        private EMaterialRefType refType;
+        @ApiModelProperty("资源名称")
+        private String resourceName;
+        @ApiModelProperty("资源信息")
+        private CbsMaterialRefWrapper.RelateMaterialInfo relateMaterialInfo;
+
+        @ApiModelProperty("关联素材ID")
+        private String resourceIdStr;
+    }
+}