Ver Fonte

Merge branch 'dev_v1.3.7_20221020'

Eric há 2 anos atrás
pai
commit
73c992794e
18 ficheiros alterados com 634 adições e 1 exclusões
  1. 10 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseRelationMusicAlbumDao.java
  2. 139 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CourseRelationMusicAlbum.java
  3. 13 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheetPurchaseRecord.java
  4. 27 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonGroup.java
  5. 13 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonGroupDetail.java
  6. 51 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/course/CourseRelationTypeEnum.java
  7. 53 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/course/CourseTypeEnum.java
  8. 51 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/course/RelationMusicAlbumEnum.java
  9. 13 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseRelationMusicAlbumService.java
  10. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupDetailService.java
  11. 17 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseRelationMusicAlbumServiceImpl.java
  12. 94 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupDetailServiceImpl.java
  13. 22 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupServiceImpl.java
  14. 12 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/LessonGroupVo.java
  15. 13 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonStudentVo.java
  16. 65 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/course/CourseRelationWrapper.java
  17. 30 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseRelationMusicAlbumMapper.xml
  18. 2 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseRelationMusicAlbumDao.java

@@ -0,0 +1,10 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.entity.CourseRelationMusicAlbum;
+
+
+public interface CourseRelationMusicAlbumDao extends BaseMapper<CourseRelationMusicAlbum>{
+
+	
+}

+ 139 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CourseRelationMusicAlbum.java

@@ -0,0 +1,139 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.yonge.cooleshow.biz.dal.enums.course.CourseTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.course.RelationMusicAlbumEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * 课程关联曲目专辑
+ */
+@TableName("course_relation_music_album")
+@ApiModel(value = "CourseRelationMusicAlbum对象", description = "课程关联曲目专辑")
+public class CourseRelationMusicAlbum implements Serializable {
+	private static final long serialVersionUID = 1L;
+    @ApiModelProperty("主键 ")
+    @TableId(value = "id_", type = IdType.AUTO)
+    private Long id;
+    @ApiModelProperty("课程组id ")
+	@TableField(value = "course_group_id_")
+    private Long courseGroupId;
+    @ApiModelProperty("课程ID ")
+	@TableField(value = "course_id_")
+    private Long courseId;
+    @ApiModelProperty("课程类型 ")
+	@TableField(value = "course_type_")
+    private CourseTypeEnum courseType;
+    @ApiModelProperty("关联类型, MUSIC, ALBUM ")
+	@TableField(value = "relation_type_")
+    private RelationMusicAlbumEnum relationType;
+    @ApiModelProperty("关联曲目专辑ID ")
+	@TableField(value = "music_album_id_")
+    private Long musicAlbumId;
+    @ApiModelProperty("更新用户 ")
+	@TableField(value = "update_by_")
+    private Long updateBy;
+    @ApiModelProperty("更新时间 ")
+	@TableField(value = "update_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date updateTime;
+    @ApiModelProperty("创建用户 ")
+	@TableField(value = "create_by_")
+    private Long createBy;
+    @ApiModelProperty("创建时间 ")
+	@TableField(value = "create_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date createTime;
+
+	public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    
+	public Long getCourseGroupId() {
+        return courseGroupId;
+    }
+
+    public void setCourseGroupId(Long courseGroupId) {
+        this.courseGroupId = courseGroupId;
+    }
+    
+	public Long getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(Long courseId) {
+        this.courseId = courseId;
+    }
+
+    public CourseTypeEnum getCourseType() {
+        return courseType;
+    }
+
+    public void setCourseType(CourseTypeEnum courseType) {
+        this.courseType = courseType;
+    }
+
+    public RelationMusicAlbumEnum getRelationType() {
+        return relationType;
+    }
+
+    public void setRelationType(RelationMusicAlbumEnum relationType) {
+        this.relationType = relationType;
+    }
+
+    public Long getMusicAlbumId() {
+        return musicAlbumId;
+    }
+
+    public void setMusicAlbumId(Long musicAlbumId) {
+        this.musicAlbumId = musicAlbumId;
+    }
+    
+	public Long getUpdateBy() {
+        return updateBy;
+    }
+
+    public void setUpdateBy(Long updateBy) {
+        this.updateBy = updateBy;
+    }
+    
+	public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+    
+	public Long getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(Long createBy) {
+        this.createBy = createBy;
+    }
+    
+	public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+    
+}

+ 13 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheetPurchaseRecord.java

@@ -68,10 +68,23 @@ public class MusicSheetPurchaseRecord extends BaseEntity {
     @ApiModelProperty(value = "订单状态(WAIT_PAY:待支付;PAYING:支付中,PAID:已付款)")
     private OrderStatusEnum orderStatus;  //订单状态(1:已完成;0:取消)
 
+
+	@TableField("course_music_album_id_")
+	@ApiModelProperty(value = "课程关联曲目专辑ID")
+	private  Long courseMusicAlbumId;
+
 	@TableField("purchase_type_")
 	@ApiModelProperty("购买类型 ")
 	private PurchaseRecordTypeEnum purchaseType;
 
+	public Long getCourseMusicAlbumId() {
+		return courseMusicAlbumId;
+	}
+
+	public void setCourseMusicAlbumId(Long courseMusicAlbumId) {
+		this.courseMusicAlbumId = courseMusicAlbumId;
+	}
+
 	public ClientEnum getClientType() {
 		return clientType;
 	}

+ 27 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonGroup.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
 import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.yonge.cooleshow.biz.dal.enums.course.CourseRelationTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -124,10 +125,36 @@ public class VideoLessonGroup extends BaseEntity {
     @ApiModelProperty(value = "审批人id")
     private Integer auditId;
 
+
+    @TableField("draft_flag_")
+    @ApiModelProperty(value = "草稿状态, 0正式1草稿")
+    private YesOrNoEnum draftFlag;
+
+
+    @TableField("relation_type_")
+    @ApiModelProperty(value = "关联曲目专辑类型,RECOMMEND:推荐  GIFT:赠品")
+    private CourseRelationTypeEnum relationType;
+
     @TableField("audit_version_")
     @ApiModelProperty(value = "是否审核时可见 (0:否  1:是)")
     private YesOrNoEnum auditVersion = YesOrNoEnum.NO;
 
+    public YesOrNoEnum getDraftFlag() {
+        return draftFlag;
+    }
+
+    public void setDraftFlag(YesOrNoEnum draftFlag) {
+        this.draftFlag = draftFlag;
+    }
+
+    public CourseRelationTypeEnum getRelationType() {
+        return relationType;
+    }
+
+    public void setRelationType(CourseRelationTypeEnum relationType) {
+        this.relationType = relationType;
+    }
+
     public Long getId() {
         return id;
     }

+ 13 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonGroupDetail.java

@@ -1,11 +1,13 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
+import com.yonge.cooleshow.biz.dal.enums.course.CourseRelationTypeEnum;
 import com.yonge.cooleshow.biz.dal.valid.AddGroup;
 import com.yonge.cooleshow.biz.dal.valid.UpdateGroup;
 import com.yonge.cooleshow.common.entity.BaseEntity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -73,6 +75,17 @@ public class 	VideoLessonGroupDetail extends BaseEntity {
     @ApiModelProperty(value = "更新时间")
     private java.util.Date updateTime;  //更新时间
 
+	@TableField("relation_type_")
+	@ApiModelProperty(value = "关联曲目专辑类型,RECOMMEND:推荐  GIFT:赠品")
+	private CourseRelationTypeEnum relationType;
+
+	public CourseRelationTypeEnum getRelationType() {
+		return relationType;
+	}
+
+	public void setRelationType(CourseRelationTypeEnum relationType) {
+		this.relationType = relationType;
+	}
 
 	public VideoLessonGroupDetail setId(Long id) {
 	    this.id = id;

+ 51 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/course/CourseRelationTypeEnum.java

@@ -0,0 +1,51 @@
+package com.yonge.cooleshow.biz.dal.enums.course;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.toolset.base.enums.BaseEnum;
+
+/**
+ * 课程关联类型
+ * @author: Eric
+ * @date: 2022-03-30
+ */
+public enum CourseRelationTypeEnum implements BaseEnum<String, CourseRelationTypeEnum> {
+
+    RECOMMEND("推荐"),
+    GIFT("赠品"),
+    ;
+
+    @EnumValue
+    private String code;
+    private String msg;
+
+    CourseRelationTypeEnum(String msg) {
+        this.code = this.name();
+        this.msg = msg;
+    }
+
+    public String getMsg() {
+        return this.msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    /**
+     * 类型匹配
+     * @param name 类型
+     * @return boolean
+     */
+    public static boolean match(String name) {
+
+        CourseRelationTypeEnum[] values = CourseRelationTypeEnum.values();
+        for (CourseRelationTypeEnum item : values) {
+
+            if (item.name().equals(name)) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+}

+ 53 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/course/CourseTypeEnum.java

@@ -0,0 +1,53 @@
+package com.yonge.cooleshow.biz.dal.enums.course;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.toolset.base.enums.BaseEnum;
+
+/**
+ * 课程类型
+ * @author: Eric
+ * @date: 2022-03-30
+ */
+public enum CourseTypeEnum implements BaseEnum<String, CourseTypeEnum> {
+
+    PRACTICE("陪练课"),
+    LIVE("直播课"),
+    PIANO_ROOM_CLASS("琴房课"),
+    VIDEO("视频课"),
+    ;
+
+    @EnumValue
+    private String code;
+    private String msg;
+
+    CourseTypeEnum(String msg) {
+        this.code = this.name();
+        this.msg = msg;
+    }
+
+    public String getMsg() {
+        return this.msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    /**
+     * 类型匹配
+     * @param name 类型
+     * @return boolean
+     */
+    public static boolean match(String name) {
+
+        CourseTypeEnum[] values = CourseTypeEnum.values();
+        for (CourseTypeEnum item : values) {
+
+            if (item.name().equals(name)) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+}

+ 51 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/course/RelationMusicAlbumEnum.java

@@ -0,0 +1,51 @@
+package com.yonge.cooleshow.biz.dal.enums.course;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.toolset.base.enums.BaseEnum;
+
+/**
+ * 课程关联曲目、专辑类型
+ * @author: Eric
+ * @date: 2022-03-30
+ */
+public enum RelationMusicAlbumEnum implements BaseEnum<String, RelationMusicAlbumEnum> {
+
+    MUSIC("曲目"),
+    ALBUM("专辑"),
+    ;
+
+    @EnumValue
+    private String code;
+    private String msg;
+
+    RelationMusicAlbumEnum(String msg) {
+        this.code = this.name();
+        this.msg = msg;
+    }
+
+    public String getMsg() {
+        return this.msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    /**
+     * 类型匹配
+     * @param name 类型
+     * @return boolean
+     */
+    public static boolean match(String name) {
+
+        RelationMusicAlbumEnum[] values = RelationMusicAlbumEnum.values();
+        for (RelationMusicAlbumEnum item : values) {
+
+            if (item.name().equals(name)) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+}

+ 13 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseRelationMusicAlbumService.java

@@ -0,0 +1,13 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.entity.CourseRelationMusicAlbum;
+
+/**
+ * 课程关联曲目专辑 服务类
+ * @author liweifan
+ * @date 2022-10-24
+ */
+public interface CourseRelationMusicAlbumService extends IService<CourseRelationMusicAlbum>  {
+
+}

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupDetailService.java

@@ -3,9 +3,11 @@ package com.yonge.cooleshow.biz.dal.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonSearch;
+import com.yonge.cooleshow.biz.dal.entity.CourseRelationMusicAlbum;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.vo.*;
+import com.yonge.cooleshow.biz.dal.wrapper.course.CourseRelationWrapper;
 
 import java.util.List;
 
@@ -28,4 +30,11 @@ public interface VideoLessonGroupDetailService extends IService<VideoLessonGroup
 
     VideoLessonStudentVo selectVideoLesson(Long groupId,Long userId);
 
+    /**
+     * 课程关联曲目/专辑信息
+     * @param recordInfos
+     * @return List<CourseRelationWrapper.MusicAlbumInfo>
+     */
+    List<CourseRelationWrapper.MusicAlbumInfo> getCourseRelationMusicAlbumInfos(List<CourseRelationMusicAlbum> recordInfos);
+
 }

+ 17 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseRelationMusicAlbumServiceImpl.java

@@ -0,0 +1,17 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.dao.CourseRelationMusicAlbumDao;
+import com.yonge.cooleshow.biz.dal.entity.CourseRelationMusicAlbum;
+import com.yonge.cooleshow.biz.dal.service.CourseRelationMusicAlbumService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+
+@Service
+public class CourseRelationMusicAlbumServiceImpl extends ServiceImpl<CourseRelationMusicAlbumDao, CourseRelationMusicAlbum> implements CourseRelationMusicAlbumService {
+    private final static Logger log = LoggerFactory.getLogger(CourseRelationMusicAlbumServiceImpl.class);
+
+	
+}

+ 94 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupDetailServiceImpl.java

@@ -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;
@@ -215,10 +235,83 @@ public class VideoLessonGroupDetailServiceImpl extends ServiceImpl<VideoLessonGr
         VideoLessonSearch search = new VideoLessonSearch();
         search.setVideoLessonGroupId(groupId);
         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 

+ 22 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupServiceImpl.java

@@ -7,6 +7,11 @@ import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
+import com.google.common.collect.Lists;
+import com.yonge.cooleshow.biz.dal.entity.CourseRelationMusicAlbum;
+import com.yonge.cooleshow.biz.dal.service.CourseRelationMusicAlbumService;
+import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupDetailService;
+import com.yonge.cooleshow.biz.dal.wrapper.course.CourseRelationWrapper;
 import org.apache.commons.collections.CollectionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -96,6 +101,10 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
     
     @Autowired
     private VideoLessonGroupLogService videoLessonGroupLogService;
+    @Autowired
+    private VideoLessonGroupDetailService videoLessonGroupDetailService;
+    @Autowired
+    private CourseRelationMusicAlbumService courseRelationMusicAlbumService;
 
     public VideoLessonGroupDao getDao() {
         return videoLessonGroupDao;
@@ -378,6 +387,19 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
         VideoLessonSearch search = new VideoLessonSearch();
         search.setVideoLessonGroupId(groupId);
         lessonStudentVo.setDetailList(videoLessonGroupDetailDao.selectPage(null, search));
+
+        // 课程关联曲目/专辑信息
+        List<CourseRelationMusicAlbum> recordInfos = courseRelationMusicAlbumService.lambdaQuery()
+                .eq(CourseRelationMusicAlbum::getCourseGroupId, groupId)
+                .list();
+
+        List<CourseRelationWrapper.MusicAlbumInfo> musicAlbumInfos = Lists.newArrayList();
+        if (CollectionUtils.isNotEmpty(recordInfos)) {
+
+            musicAlbumInfos = videoLessonGroupDetailService.getCourseRelationMusicAlbumInfos(recordInfos);
+        }
+        lessonStudentVo.setMusicAlbumInfos(musicAlbumInfos);
+
         return lessonStudentVo;
     }
 

+ 12 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/LessonGroupVo.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.vo;
 
+import com.yonge.cooleshow.biz.dal.enums.course.CourseRelationTypeEnum;
 import com.yonge.cooleshow.common.entity.BaseEntity;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModel;
@@ -54,6 +55,9 @@ public class LessonGroupVo extends BaseEntity {
     @ApiModelProperty("审核版本")
     private YesOrNoEnum auditVersion;
 
+    @ApiModelProperty(value = "关联曲目专辑类型,RECOMMEND:推荐  GIFT:赠品")
+    private CourseRelationTypeEnum relationType;
+
     public YesOrNoEnum getAuditVersion() {
         return auditVersion;
     }
@@ -165,4 +169,12 @@ public class LessonGroupVo extends BaseEntity {
     public void setCountStudent(Integer countStudent) {
         this.countStudent = countStudent;
     }
+
+    public CourseRelationTypeEnum getRelationType() {
+        return relationType;
+    }
+
+    public void setRelationType(CourseRelationTypeEnum relationType) {
+        this.relationType = relationType;
+    }
 }

+ 13 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonStudentVo.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.vo;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
+import com.yonge.cooleshow.biz.dal.wrapper.course.CourseRelationWrapper;
 import com.yonge.cooleshow.common.entity.BaseEntity;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModel;
@@ -17,8 +18,12 @@ import java.util.List;
 public class VideoLessonStudentVo extends BaseEntity {
     private VideoLessonGroupVo lessonGroup;
 
+    @ApiModelProperty("课程详情信息 ")
     private List<VideoLessonGroupDetail> detailList;
 
+    @ApiModelProperty("关联曲目/专辑信息 ")
+    private List<CourseRelationWrapper.MusicAlbumInfo> musicAlbumInfos;
+
     @ApiModelProperty(value = "true已买,false未买")
     private Boolean alreadyBuy;
 
@@ -79,4 +84,12 @@ public class VideoLessonStudentVo extends BaseEntity {
     public void setAlreadyBuy(Boolean alreadyBuy) {
         this.alreadyBuy = alreadyBuy;
     }
+
+    public List<CourseRelationWrapper.MusicAlbumInfo> getMusicAlbumInfos() {
+        return musicAlbumInfos;
+    }
+
+    public void setMusicAlbumInfos(List<CourseRelationWrapper.MusicAlbumInfo> musicAlbumInfos) {
+        this.musicAlbumInfos = musicAlbumInfos;
+    }
 }

+ 65 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/course/CourseRelationWrapper.java

@@ -0,0 +1,65 @@
+package com.yonge.cooleshow.biz.dal.wrapper.course;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.yonge.cooleshow.biz.dal.enums.course.CourseTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.course.RelationMusicAlbumEnum;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 课程关联曲目、专辑信息
+ * Created by Eric.Shang on 2022/10/24.
+ */
+public class CourseRelationWrapper {
+
+    /**
+     * 关联曲目、专辑信息
+     */
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class MusicAlbumInfo implements Serializable {
+
+        @ApiModelProperty("主键 ")
+        private Long id;
+
+        @ApiModelProperty("课程组id ")
+        private Long courseGroupId;
+
+        @ApiModelProperty("课程ID ")
+        private Long courseId;
+
+        @ApiModelProperty("课程类型 ")
+        private CourseTypeEnum courseType;
+
+        @ApiModelProperty("关联类型, MUSIC, ALBUM ")
+        private RelationMusicAlbumEnum relationType;
+
+        @ApiModelProperty("关联曲目专辑ID ")
+        private Long musicAlbumId;
+
+        @ApiModelProperty("曲目/专辑名称")
+        private String name;
+
+        @ApiModelProperty("图标/封面")
+        private String cover;
+
+
+        public MusicAlbumInfo name(String name) {
+            this.name = name;
+            return this;
+        }
+
+        public MusicAlbumInfo cover(String cover) {
+            this.cover = cover;
+            return this;
+        }
+    }
+}

+ 30 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseRelationMusicAlbumMapper.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE  mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.yonge.cooleshow.biz.dal.dao.CourseRelationMusicAlbumDao">
+	<resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.CourseRelationMusicAlbum">
+            <result column="id_" property="id" />
+	        <result column="course_group_id_" property="courseGroupId" />
+	        <result column="course_id_" property="courseId" />
+	        <result column="course_type_" property="courseType" />
+	        <result column="relation_type_" property="relationType" />
+	        <result column="music_album_id_" property="musicAlbumId" />
+	        <result column="update_by_" property="updateBy" />
+	        <result column="update_time_" property="updateTime" />
+	        <result column="create_by_" property="createBy" />
+	        <result column="create_time_" property="createTime" />
+		</resultMap>  
+    
+    <!-- 表字段 -->
+    <sql id="baseColumns">
+         t.id_ as id
+        , t.course_group_id_ as courseGroupId
+        , t.course_id_ as courseId
+        , t.course_type_ as courseType
+        , t.relation_type_ as relationType
+        , t.music_album_id_ as musicAlbumId
+        , t.update_by_ as updateBy
+        , t.update_time_ as updateTime
+        , t.create_by_ as createBy
+        , t.create_time_ as createTime
+        </sql>
+</mapper>

+ 2 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml

@@ -49,6 +49,7 @@
 		g.update_time_ AS updateTime,
 		g.audit_id_ AS auditId,
 		g.audit_name_ AS auditName,
+		g.relation_type_ AS relationType,
 	</sql>
 	<sql id="recordColumns">
 		g.id_ AS id,
@@ -281,6 +282,7 @@
 			g.lesson_cover_url_ AS lessonCoverUrl,
 			g.lesson_count_ AS lessonCount,
 			g.teacher_id_ AS teacherId,
+			g.relation_type_ AS relationType,
 			u.username_ AS userName,
 			u.real_name_ AS realName,
 			u.avatar_ AS avatar,