|
@@ -3,8 +3,23 @@ package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
import java.util.Collections;
|
|
|
import java.util.HashSet;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.Set;
|
|
|
+import java.util.function.Function;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
+import com.google.common.collect.Maps;
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.CourseRelationMusicAlbum;
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.MusicAlbum;
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
|
|
|
+import com.yonge.cooleshow.biz.dal.enums.course.RelationMusicAlbumEnum;
|
|
|
+import com.yonge.cooleshow.biz.dal.service.CourseRelationMusicAlbumService;
|
|
|
+import com.yonge.cooleshow.biz.dal.service.MusicAlbumService;
|
|
|
+import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
|
|
|
+import com.yonge.cooleshow.biz.dal.wrapper.course.CourseRelationWrapper;
|
|
|
+import org.apache.commons.collections.CollectionUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
@@ -13,7 +28,6 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
-import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
|
|
|
import com.yonge.cooleshow.auth.api.entity.SysUser;
|
|
@@ -71,6 +85,12 @@ public class VideoLessonGroupDetailServiceImpl extends ServiceImpl<VideoLessonGr
|
|
|
|
|
|
@Autowired
|
|
|
private TeacherService teacherService;
|
|
|
+ @Autowired
|
|
|
+ private CourseRelationMusicAlbumService courseRelationMusicAlbumService;
|
|
|
+ @Autowired
|
|
|
+ private MusicSheetService musicSheetService;
|
|
|
+ @Autowired
|
|
|
+ private MusicAlbumService musicAlbumService;
|
|
|
|
|
|
public VideoLessonGroupDetailDao getDao() {
|
|
|
return videoLessonGroupDetailDao;
|
|
@@ -217,11 +237,81 @@ public class VideoLessonGroupDetailServiceImpl extends ServiceImpl<VideoLessonGr
|
|
|
lessonStudentVo.setDetailList(JsonUtil.parseArray(videoLessonGroupLog.getVideoDetailJson(), VideoLessonGroupDetail.class));
|
|
|
|
|
|
// 课程关联曲目、专辑信息
|
|
|
+ List<CourseRelationMusicAlbum> recordInfos = courseRelationMusicAlbumService.lambdaQuery()
|
|
|
+ .eq(CourseRelationMusicAlbum::getCourseGroupId, groupId)
|
|
|
+ .list();
|
|
|
+
|
|
|
+ List<CourseRelationWrapper.MusicAlbumInfo> musicAlbumInfos = Lists.newArrayList();
|
|
|
+ if (CollectionUtils.isNotEmpty(recordInfos)) {
|
|
|
+
|
|
|
+ musicAlbumInfos = getCourseRelationMusicAlbumInfos(recordInfos);
|
|
|
+ }
|
|
|
+ lessonStudentVo.setMusicAlbumInfos(musicAlbumInfos);
|
|
|
+
|
|
|
|
|
|
return lessonStudentVo;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 课程关联曲目/专辑信息
|
|
|
+ * @param recordInfos
|
|
|
+ * @return List<CourseRelationWrapper.MusicAlbumInfo>
|
|
|
+ */
|
|
|
+ public List<CourseRelationWrapper.MusicAlbumInfo> getCourseRelationMusicAlbumInfos(List<CourseRelationMusicAlbum> recordInfos) {
|
|
|
+
|
|
|
+ List<CourseRelationWrapper.MusicAlbumInfo> musicAlbumInfos = JSON.parseArray(JSON.toJSONString(recordInfos),
|
|
|
+ CourseRelationWrapper.MusicAlbumInfo.class);
|
|
|
+
|
|
|
+ // 分别查询曲目/专辑信息
|
|
|
+ Map<String, List<Long>> collect = musicAlbumInfos.stream()
|
|
|
+ .collect(Collectors.groupingBy(x -> x.getRelationType().getCode(),
|
|
|
+ Collectors.mapping(CourseRelationWrapper.MusicAlbumInfo::getMusicAlbumId, Collectors.toList())));
|
|
|
+
|
|
|
+ Map<Long, MusicSheet> musicInfoMap = Maps.newHashMap();
|
|
|
+ // 曲目信息
|
|
|
+ if (collect.containsKey(RelationMusicAlbumEnum.MUSIC.name())) {
|
|
|
+
|
|
|
+ List<Long> musicIds = collect.get(RelationMusicAlbumEnum.MUSIC.name());
|
|
|
+
|
|
|
+ musicInfoMap = musicSheetService.listByIds(musicIds).stream()
|
|
|
+ .collect(Collectors.toMap(MusicSheet::getId, Function.identity(), (o, n) -> n));
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<Long, MusicAlbum> albumInfoMap = Maps.newHashMap();
|
|
|
+ // 专辑信息
|
|
|
+ if (collect.containsKey(RelationMusicAlbumEnum.ALBUM.name())) {
|
|
|
+
|
|
|
+ List<Long> albumIds = collect.get(RelationMusicAlbumEnum.ALBUM.name());
|
|
|
+
|
|
|
+ albumInfoMap = musicAlbumService.listByIds(albumIds).stream()
|
|
|
+ .collect(Collectors.toMap(MusicAlbum::getId, Function.identity(), (o, n) -> n));
|
|
|
+ }
|
|
|
+
|
|
|
+ for (CourseRelationWrapper.MusicAlbumInfo item : musicAlbumInfos) {
|
|
|
+
|
|
|
+ item.name("").cover("");
|
|
|
+ if (RelationMusicAlbumEnum.MUSIC == item.getRelationType()
|
|
|
+ && musicInfoMap.containsKey(item.getMusicAlbumId())) {
|
|
|
+
|
|
|
+ MusicSheet music = musicInfoMap.get(item.getMusicAlbumId());
|
|
|
+
|
|
|
+ item.name(music.getMusicSheetName())
|
|
|
+ .cover(music.getTitleImg());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (RelationMusicAlbumEnum.ALBUM == item.getRelationType()
|
|
|
+ && albumInfoMap.containsKey(item.getMusicAlbumId())) {
|
|
|
+
|
|
|
+ MusicAlbum album = albumInfoMap.get(item.getMusicAlbumId());
|
|
|
+
|
|
|
+ item.name(album.getAlbumName())
|
|
|
+ .cover(album.getAlbumCoverUrl());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return musicAlbumInfos;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* @Description: 刷新组内lesson_count_
|
|
|
* @Author: cy
|
|
|
* @Date: 2022/3/31
|