|
@@ -6,11 +6,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.dayaedu.cbs.common.enums.EClientType;
|
|
|
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.client.MusicFeignClientService;
|
|
|
import com.dayaedu.cbs.openfeign.service.CbsMusicSheetService;
|
|
|
import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsCourseTypeWrapper;
|
|
|
+import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareDetailWrapper;
|
|
|
import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareWrapper;
|
|
|
+import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsMaterialRefWrapper;
|
|
|
import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
|
|
|
import com.microsvc.toolkit.common.response.paging.PageInfo;
|
|
|
import com.microsvc.toolkit.common.response.template.R;
|
|
@@ -22,6 +26,7 @@ import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
|
|
|
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;
|
|
@@ -436,4 +441,140 @@ public class TenantAlbumMusicServiceImpl extends ServiceImpl<TenantAlbumMusicMap
|
|
|
|
|
|
return lessonCoursewareDto;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ 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<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));
|
|
|
+
|
|
|
+
|
|
|
+ filterMusicMaterialList(knowledgePointList,new ArrayList<>(idMap.keySet()));
|
|
|
+ for (LessonCoursewareDetailWrapper.MaterialSmall musicMaterialSmall : musicMaterialSmalls) {
|
|
|
+ musicMaterialSmall.setContent(idMap.getOrDefault(Long.parseLong(musicMaterialSmall.getContent()),-1L).toString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<Long> cbsMusicSheetIdList =
|
|
|
+ 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)
|
|
|
+ .eq(MusicSheet::getDelFlag, false)
|
|
|
+ .eq(MusicSheet::getState, 1)
|
|
|
+ .list()
|
|
|
+ .stream()
|
|
|
+ .collect(Collectors.toMap(MusicSheet::getCbsMusicSheetId, MusicSheet::getId,(o1,o2)->o1));
|
|
|
+
|
|
|
+ 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());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ filterMaterialRefList(knowledgePointList,new ArrayList<>(idMap.values()));
|
|
|
+ }
|
|
|
+
|
|
|
+ return lessonCoursewareDetail;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void filterMusicMaterialList(List<LessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList, List<Long> cbsMusicSheetIds) {
|
|
|
+ if (CollectionUtils.isNotEmpty(knowledgePointList)) {
|
|
|
+ for (LessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall : knowledgePointList) {
|
|
|
+
|
|
|
+ if (CollectionUtils.isNotEmpty(knowledgePointSmall.getChildren())) {
|
|
|
+ filterMusicMaterialList(knowledgePointSmall.getChildren(),cbsMusicSheetIds);
|
|
|
+ }
|
|
|
+ List<LessonCoursewareDetailWrapper.MaterialSmall> materialList = knowledgePointSmall.getMaterialList();
|
|
|
+ if (CollectionUtils.isNotEmpty(materialList)) {
|
|
|
+ materialList.removeIf(next -> (EMaterialType.SONG.equals(next.getType()) && !cbsMusicSheetIds.contains(Long.parseLong(next.getContent()))));
|
|
|
+ knowledgePointSmall.setMaterialList(materialList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ 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 (LessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall : knowledgePointList) {
|
|
|
+
|
|
|
+ if (CollectionUtils.isNotEmpty(knowledgePointSmall.getChildren())) {
|
|
|
+ filterMaterialRefList(knowledgePointSmall.getChildren(),cbsMusicSheetIds);
|
|
|
+ }
|
|
|
+ List<LessonCoursewareDetailWrapper.MaterialSmall> materialList = knowledgePointSmall.getMaterialList();
|
|
|
+ if (CollectionUtils.isNotEmpty(materialList)) {
|
|
|
+ for (LessonCoursewareDetailWrapper.MaterialSmall materialSmall : materialList) {
|
|
|
+ if (CollectionUtils.isNotEmpty(materialSmall.getMaterialRefs())) {
|
|
|
+ List<LessonCoursewareDetailWrapper.AddMaterialRef> refList = materialSmall.getMaterialRefs().stream()
|
|
|
+ .filter(next -> !(EKnowledgeType.MUSIC.equals(next.getKnowledgeType()) && !cbsMusicSheetIds.contains(next.getResourceId())))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ materialSmall.setMaterialRefs(refList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<LessonCoursewareDetailWrapper.AddMaterialRef> getMaterialRefList(List<LessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList) {
|
|
|
+ List<LessonCoursewareDetailWrapper.AddMaterialRef> materialRefList = new ArrayList<>();
|
|
|
+ if (CollectionUtils.isNotEmpty(knowledgePointList)) {
|
|
|
+ for (LessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall : knowledgePointList) {
|
|
|
+
|
|
|
+ if (CollectionUtils.isNotEmpty(knowledgePointSmall.getChildren())) {
|
|
|
+ materialRefList.addAll(getMaterialRefList(knowledgePointSmall.getChildren()));
|
|
|
+ }
|
|
|
+ List<LessonCoursewareDetailWrapper.MaterialSmall> materialList = knowledgePointSmall.getMaterialList();
|
|
|
+ if (CollectionUtils.isNotEmpty(materialList)) {
|
|
|
+ for (LessonCoursewareDetailWrapper.MaterialSmall materialSmall : materialList) {
|
|
|
+ if (CollectionUtils.isNotEmpty(materialSmall.getMaterialRefs())) {
|
|
|
+ materialRefList.addAll(materialSmall.getMaterialRefs());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return materialRefList;
|
|
|
+ }
|
|
|
}
|