liujunchi 2 년 전
부모
커밋
dd634ccade
15개의 변경된 파일236개의 추가작업 그리고 37개의 파일을 삭제
  1. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonGroupDetailDao.java
  2. 12 13
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/VideoLessonGroupDetailDto.java
  3. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonGroupDetail.java
  4. 9 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseRelationMusicAlbumService.java
  5. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupDetailService.java
  6. 58 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseRelationMusicAlbumServiceImpl.java
  7. 1 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  8. 33 6
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupDetailServiceImpl.java
  9. 7 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupServiceImpl.java
  10. 46 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonPurchaseRecordServiceImpl.java
  11. 4 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonStudentVo.java
  12. 53 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/course/CourseRelationWrapper.java
  13. 1 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupDetailMapper.xml
  14. 1 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml
  15. 1 1
      service.md

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonGroupDetailDao.java

@@ -20,7 +20,7 @@ import java.util.List;
  **/
 public interface VideoLessonGroupDetailDao extends BaseMapper<VideoLessonGroupDetail> {
     //查询视频课
-    List<VideoLessonGroupDetail> selectPage(IPage page,@Param("param") VideoLessonSearch query);
+    List<VideoLessonGroupDetailDto> selectPage(IPage page,@Param("param") VideoLessonSearch query);
 
     //根据组id查询购买用户
     List<VideoLessonPurchaseStudent> selectPageStudent(IPage page,@Param("param")  VideoLessonSearch query);

+ 12 - 13
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/VideoLessonGroupDetailDto.java

@@ -1,7 +1,7 @@
 package com.yonge.cooleshow.biz.dal.dto;
 
-import com.yonge.cooleshow.biz.dal.entity.CourseRelationMusicAlbum;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
+import com.yonge.cooleshow.biz.dal.wrapper.course.CourseRelationWrapper;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.List;
@@ -9,20 +9,11 @@ import java.util.List;
 
 public class VideoLessonGroupDetailDto extends VideoLessonGroupDetail {
 
-    @ApiModelProperty("关联信息")
+    @ApiModelProperty("关联信息(更新或新增)")
     private List<CourseMusicAlbumRelationDto> relationList;
 
-
-    @ApiModelProperty("保存在log json的关联信息")
-    private List<CourseRelationMusicAlbum> relationVoList;
-
-    public List<CourseRelationMusicAlbum> getRelationVoList() {
-        return relationVoList;
-    }
-
-    public void setRelationVoList(List<CourseRelationMusicAlbum> relationVoList) {
-        this.relationVoList = relationVoList;
-    }
+    @ApiModelProperty("关联曲目/专辑信息(查看) ")
+    private List<CourseRelationWrapper.MusicAlbumInfo> musicAlbumInfos;
 
     public List<CourseMusicAlbumRelationDto> getRelationList() {
         return relationList;
@@ -31,4 +22,12 @@ public class VideoLessonGroupDetailDto extends VideoLessonGroupDetail {
     public void setRelationList(List<CourseMusicAlbumRelationDto> relationList) {
         this.relationList = relationList;
     }
+
+    public List<CourseRelationWrapper.MusicAlbumInfo> getMusicAlbumInfos() {
+        return musicAlbumInfos;
+    }
+
+    public void setMusicAlbumInfos(List<CourseRelationWrapper.MusicAlbumInfo> musicAlbumInfos) {
+        this.musicAlbumInfos = musicAlbumInfos;
+    }
 }

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

@@ -22,7 +22,7 @@ import javax.validation.constraints.NotNull;
  * @version v1.0
  **/
 @ApiModel(value = "video_lesson_group_detail-视频课明细表")
-public class 	VideoLessonGroupDetail extends BaseEntity {
+public class VideoLessonGroupDetail extends BaseEntity {
 
     @TableId(value = "id_", type = IdType.AUTO)
     @ApiModelProperty(value = "主键id")

+ 9 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseRelationMusicAlbumService.java

@@ -2,12 +2,20 @@ package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.entity.CourseRelationMusicAlbum;
+import com.yonge.cooleshow.biz.dal.enums.course.CourseTypeEnum;
 
 /**
  * 课程关联曲目专辑 服务类
  * @author liweifan
  * @date 2022-10-24
  */
-public interface CourseRelationMusicAlbumService extends IService<CourseRelationMusicAlbum>  {
+public interface CourseRelationMusicAlbumService extends IService<CourseRelationMusicAlbum> {
+
+    /**
+     * 异常更新课程关联曲目专辑
+     * @param groupId 课程组ID
+     * @param courseType 课程组类型
+     */
+    void asyncUpdateCourseRelationMusicAlbumInfo(Long groupId, CourseTypeEnum courseType);
 
 }

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

@@ -38,4 +38,12 @@ public interface VideoLessonGroupDetailService extends IService<VideoLessonGroup
      */
     List<CourseRelationWrapper.MusicAlbumInfo> getCourseRelationMusicAlbumInfos(List<CourseRelationMusicAlbum> recordInfos);
 
+    /**
+     * 填充课程关联曲目、专辑信息
+     * @param lessonStudentVo VideoLessonStudentVo
+     * @param musicAlbumInfos List<CourseRelationWrapper.MusicAlbumInfo>
+     */
+    void updateCourseRelationMusicAlbumInfo(VideoLessonStudentVo lessonStudentVo,
+                                            List<CourseRelationWrapper.MusicAlbumInfo> musicAlbumInfos);
+
 }

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

@@ -3,15 +3,69 @@ 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.enums.course.CourseRelationTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.course.CourseTypeEnum;
 import com.yonge.cooleshow.biz.dal.service.CourseRelationMusicAlbumService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import com.yonge.cooleshow.biz.dal.service.MusicSheetPurchaseRecordService;
+import com.yonge.toolset.base.util.ThreadPool;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
+
+@Slf4j
 @Service
 public class CourseRelationMusicAlbumServiceImpl extends ServiceImpl<CourseRelationMusicAlbumDao, CourseRelationMusicAlbum> implements CourseRelationMusicAlbumService {
-    private final static Logger log = LoggerFactory.getLogger(CourseRelationMusicAlbumServiceImpl.class);
 
-	
+    @Autowired
+    private MusicSheetPurchaseRecordService musicSheetPurchaseRecordService;
+
+    /**
+     * 异常更新课程关联曲目专辑
+     *
+     * @param groupId 课程组ID
+     * @param courseType 课程组类型
+     */
+    @Override
+    public void asyncUpdateCourseRelationMusicAlbumInfo(Long groupId, CourseTypeEnum courseType) {
+
+        // 课程组关联曲目、专辑信息
+        List<CourseRelationMusicAlbum> musicAlbums = lambdaQuery()
+                .eq(CourseRelationMusicAlbum::getCourseGroupId, groupId)
+                .list();
+
+        if (CollectionUtils.isEmpty(musicAlbums)) {
+            return;
+        }
+
+        ThreadPool.getExecutor().submit(() -> {
+
+            try {
+
+                Map<CourseRelationTypeEnum, List<CourseRelationMusicAlbum>> musicAlbumGroupMap = musicAlbums.stream()
+                        .collect(Collectors.groupingBy(CourseRelationMusicAlbum::getUseRelationType));
+
+                // 推荐类型直接删除购买记录
+                if (musicAlbumGroupMap.containsKey(CourseRelationTypeEnum.RECOMMEND)) {
+
+                    List<Long> deleteRelationId = musicAlbumGroupMap.get(CourseRelationTypeEnum.RECOMMEND).stream()
+                            .map(CourseRelationMusicAlbum::getId).distinct().collect(Collectors.toList());
+
+
+                }
+
+                // 赠送按状态进行数据同步更新
+
+            } catch (Exception e) {
+                log.error("asyncUpdateCourseRelationMusicAlbumInfo groupId={}, courseType={}", groupId, courseType, e);
+            }
+
+        });
+
+    }
 }

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

@@ -948,6 +948,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         musicSheetPurchaseRecord.setOrderStatus(OrderStatusEnum.PAID);
         musicSheetPurchaseRecord.setStudentId(userOrderDetailVo.getUserId());
         musicSheetPurchaseRecord.setPurchaseType(PurchaseRecordTypeEnum.valueOf(userOrderDetailVo.getGoodType().getCode()));
+        musicSheetPurchaseRecord.setCourseMusicAlbumId(0L);
         musicSheetPurchaseRecordService.saveOrUpdate(musicSheetPurchaseRecord);
     }
 

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

@@ -11,6 +11,7 @@ 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.dto.CourseMusicAlbumRelationDto;
 import com.yonge.cooleshow.biz.dal.entity.CourseRelationMusicAlbum;
 import com.yonge.cooleshow.biz.dal.entity.MusicAlbum;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
@@ -235,29 +236,55 @@ public class VideoLessonGroupDetailServiceImpl extends ServiceImpl<VideoLessonGr
 
         VideoLessonSearch search = new VideoLessonSearch();
         search.setVideoLessonGroupId(groupId);
-        lessonStudentVo.setDetailList(JsonUtil.parseArray(videoLessonGroupLog.getVideoDetailJson(), VideoLessonGroupDetail.class));
+        lessonStudentVo.setDetailList(JsonUtil.parseArray(videoLessonGroupLog.getVideoDetailJson(), VideoLessonGroupDetailDto.class));
 
+        List<CourseMusicAlbumRelationDto> relationMusicAlbums = lessonStudentVo.getDetailList().stream()
+                .flatMap(x -> x.getRelationList().stream()).collect(Collectors.toList());
         // 课程关联曲目、专辑信息
-        List<CourseRelationMusicAlbum> recordInfos = courseRelationMusicAlbumService.lambdaQuery()
-                .eq(CourseRelationMusicAlbum::getCourseGroupId, groupId)
-                .list();
+        List<CourseRelationMusicAlbum> recordInfos = JSON.parseArray(JSON.toJSONString(relationMusicAlbums),
+                CourseRelationMusicAlbum.class);
 
-        List<CourseRelationWrapper.MusicAlbumInfo> musicAlbumInfos = Lists.newArrayList();
+        List<CourseRelationWrapper.MusicAlbumInfo> musicAlbumInfos;
         if (CollectionUtils.isNotEmpty(recordInfos)) {
 
             musicAlbumInfos = getCourseRelationMusicAlbumInfos(recordInfos);
+
+            // 填充课程关联曲目、专辑信息
+            updateCourseRelationMusicAlbumInfo(lessonStudentVo, musicAlbumInfos);
         }
-        lessonStudentVo.setMusicAlbumInfos(musicAlbumInfos);
+        //lessonStudentVo.setMusicAlbumInfos(musicAlbumInfos);
 
 
         return lessonStudentVo;
     }
 
     /**
+     * 填充课程关联曲目、专辑信息
+     * @param lessonStudentVo VideoLessonStudentVo
+     * @param musicAlbumInfos List<CourseRelationWrapper.MusicAlbumInfo>
+     */
+    @Override
+    public void updateCourseRelationMusicAlbumInfo(VideoLessonStudentVo lessonStudentVo,
+                                                   List<CourseRelationWrapper.MusicAlbumInfo> musicAlbumInfos) {
+
+        Map<Long, List<CourseRelationWrapper.MusicAlbumInfo>> collect = musicAlbumInfos.stream()
+                .collect(Collectors.groupingBy(CourseRelationWrapper.MusicAlbumInfo::getCourseId));
+
+        if (CollectionUtils.isNotEmpty(lessonStudentVo.getDetailList())) {
+
+            for (VideoLessonGroupDetailDto item : lessonStudentVo.getDetailList()) {
+
+                item.setMusicAlbumInfos(collect.getOrDefault(item.getId(), Lists.newArrayList()));
+            }
+        }
+    }
+
+    /**
      * 课程关联曲目/专辑信息
      * @param recordInfos
      * @return List<CourseRelationWrapper.MusicAlbumInfo>
      */
+    @Override
     public List<CourseRelationWrapper.MusicAlbumInfo> getCourseRelationMusicAlbumInfos(List<CourseRelationMusicAlbum> recordInfos) {
 
         List<CourseRelationWrapper.MusicAlbumInfo> musicAlbumInfos = JSON.parseArray(JSON.toJSONString(recordInfos),

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

@@ -323,6 +323,8 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
         courseRelationMusicAlbumService.updateBatchById(updateCourseRelationMusicAlbums);
         courseRelationMusicAlbumService.saveOrUpdateBatch(addCourseRelationMusicAlbums);
 
+
+
     }
 
     @Override
@@ -504,12 +506,15 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
                 .eq(CourseRelationMusicAlbum::getCourseGroupId, groupId)
                 .list();
 
-        List<CourseRelationWrapper.MusicAlbumInfo> musicAlbumInfos = Lists.newArrayList();
+        List<CourseRelationWrapper.MusicAlbumInfo> musicAlbumInfos;
         if (CollectionUtils.isNotEmpty(recordInfos)) {
 
             musicAlbumInfos = videoLessonGroupDetailService.getCourseRelationMusicAlbumInfos(recordInfos);
+
+            // 填充课程关联曲目、专辑信息
+            videoLessonGroupDetailService.updateCourseRelationMusicAlbumInfo(lessonStudentVo, musicAlbumInfos);
         }
-        lessonStudentVo.setMusicAlbumInfos(musicAlbumInfos);
+        //lessonStudentVo.setMusicAlbumInfos(musicAlbumInfos);
 
         return lessonStudentVo;
     }

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

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.collect.Lists;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.UserOrderDao;
@@ -12,15 +13,20 @@ import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
 import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonPurchaseRecordDao;
 import com.yonge.cooleshow.biz.dal.enums.*;
+import com.yonge.cooleshow.biz.dal.enums.album.PurchaseRecordTypeEnum;
 import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
+import com.yonge.cooleshow.biz.dal.wrapper.course.CourseRelationWrapper;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.enums.EStatus;
 import com.yonge.cooleshow.common.enums.PostStatusEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.utils.obj.ObjectUtil;
+import org.apache.commons.collections.CollectionUtils;
+import org.joda.time.DateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -60,6 +66,10 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
     private SysMessageService sysMessageService;
     @Autowired
     private UserOrderService userOrderService;
+    @Autowired
+    private CourseRelationMusicAlbumService courseRelationMusicAlbumService;
+    @Autowired
+    private MusicSheetPurchaseRecordService musicSheetPurchaseRecordService;
 
     public VideoLessonPurchaseRecordDao getDao() {
         return videoLessonPurchaseRecordDao;
@@ -148,6 +158,42 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
         //记录流水
         addTeacherAccount(orderParam, lessonGroup);
         videoSend(lessonGroup.getTeacherId(), purchaseRecord.getStudentId(), lessonGroup);
+
+        // 赠品曲目、专辑插入用户曲目购买记录表
+        List<CourseRelationMusicAlbum> musicAlbums = courseRelationMusicAlbumService.lambdaQuery()
+                .eq(CourseRelationMusicAlbum::getCourseGroupId, lessonGroup.getId())
+                .eq(CourseRelationMusicAlbum::getDelFlog, EStatus.ENABLE.getValue())
+                .list();
+
+        List<CourseRelationWrapper.MusicAlbumRecord> musicAlbumRecords = Lists.newArrayList();
+
+        for (CourseRelationMusicAlbum item : musicAlbums) {
+
+            musicAlbumRecords.add(CourseRelationWrapper.MusicAlbumRecord.builder()
+                            .clientType(orderParam.getOrderClient())
+                            .musicSheetId(item.getMusicAlbumId())
+                            .orderNo(orderParam.getOrderNo())
+                            .purchasePrice(BigDecimal.ZERO)
+                            .purchaseTime(DateTime.now().toDate())
+                            .teacherId(orderParam.getMerchId())
+                            .originalPrice(BigDecimal.ZERO)
+                            .musicSheetServiceFee(BigDecimal.ZERO)
+                            .orderStatus(OrderStatusEnum.PAID)
+                            .studentId(orderParam.getUserId())
+                            .purchaseType(PurchaseRecordTypeEnum.valueOf(item.getRelationType().getCode()))
+                            .courseMusicAlbumId(item.getId())
+                    .build());
+        }
+
+        if (CollectionUtils.isNotEmpty(musicAlbumRecords)) {
+
+            List<MusicSheetPurchaseRecord> records = JSON.parseArray(JSON.toJSONString(musicAlbums),
+                    MusicSheetPurchaseRecord.class);
+
+            // 批量插入课程赠送曲目、专辑数据
+            musicSheetPurchaseRecordService.saveBatch(records, 30);
+        }
+
     }
 
     /**

+ 4 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonStudentVo.java

@@ -1,7 +1,6 @@
 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.dto.VideoLessonGroupDetailDto;
 import com.yonge.cooleshow.biz.dal.wrapper.course.CourseRelationWrapper;
 import com.yonge.cooleshow.common.entity.BaseEntity;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
@@ -19,7 +18,7 @@ public class VideoLessonStudentVo extends BaseEntity {
     private VideoLessonGroupVo lessonGroup;
 
     @ApiModelProperty("课程详情信息 ")
-    private List<VideoLessonGroupDetail> detailList;
+    private List<VideoLessonGroupDetailDto> detailList;
 
     @ApiModelProperty("关联曲目/专辑信息 ")
     private List<CourseRelationWrapper.MusicAlbumInfo> musicAlbumInfos;
@@ -69,11 +68,11 @@ public class VideoLessonStudentVo extends BaseEntity {
         this.lessonGroup = lessonGroup;
     }
 
-    public List<VideoLessonGroupDetail> getDetailList() {
+    public List<VideoLessonGroupDetailDto> getDetailList() {
         return detailList;
     }
 
-    public void setDetailList(List<VideoLessonGroupDetail> detailList) {
+    public void setDetailList(List<VideoLessonGroupDetailDto> detailList) {
         this.detailList = detailList;
     }
 

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

@@ -1,9 +1,10 @@
 package com.yonge.cooleshow.biz.dal.wrapper.course;
 
-import com.baomidou.mybatisplus.annotation.TableField;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.album.PurchaseRecordTypeEnum;
 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;
@@ -11,6 +12,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 /**
  * 课程关联曲目、专辑信息
@@ -62,4 +64,53 @@ public class CourseRelationWrapper {
             return this;
         }
     }
+
+    /**
+     * 课程赠送曲目、专辑信息
+     */
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class MusicAlbumRecord implements Serializable {
+
+        @ApiModelProperty(value = "主键id")
+        private Long id;  //主键ID
+
+        @ApiModelProperty(value = "曲谱ID")
+        private Long musicSheetId;  //曲谱ID
+
+        @ApiModelProperty(value = "老师ID")
+        private Long teacherId;  //老师ID
+
+        @ApiModelProperty(value = "订单流水号")
+        private String orderNo;  //订单流水号
+
+        @ApiModelProperty(value = "用户类型 TEACHER:老师,STUDENT:学生")
+        private ClientEnum clientType;
+
+        @ApiModelProperty(value = "学生ID")
+        private Long studentId;  //学生ID
+
+        @ApiModelProperty(value = "购买时间")
+        private java.util.Date purchaseTime;  //购买时间
+
+        @ApiModelProperty(value = "购买价格")
+        private java.math.BigDecimal purchasePrice;  //购买价格
+
+        @ApiModelProperty(value = "原价")
+        private BigDecimal originalPrice;
+
+        @ApiModelProperty("服务费")
+        private BigDecimal musicSheetServiceFee;
+
+        @ApiModelProperty(value = "订单状态(WAIT_PAY:待支付;PAYING:支付中,PAID:已付款)")
+        private OrderStatusEnum orderStatus;  //订单状态(1:已完成;0:取消)
+
+        @ApiModelProperty(value = "课程关联曲目专辑ID")
+        private  Long courseMusicAlbumId;
+
+        @ApiModelProperty("购买类型 ")
+        private PurchaseRecordTypeEnum purchaseType;
+    }
 }

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

@@ -52,7 +52,7 @@
 		create_time_ AS createTime
 	</sql>
 
-	<select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail">
+	<select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.dto.VideoLessonGroupDetailDto">
 		SELECT
 		<include refid="baseColumns"/>
 		FROM video_lesson_group_detail

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

@@ -337,6 +337,7 @@
 			u.real_name_ AS realName,
 			u.avatar_ AS avatar,
 			g.audit_version_ as auditVersion,
+			g.relation_type_ as relationType,
 			(SELECT COUNT(1) FROM video_lesson_purchase_record r WHERE r.video_lesson_group_id_=g.video_lesson_group_id_ AND r.order_status_='PAID') AS countStudent
 		FROM video_lesson_purchase_record pr
 		left join (

+ 1 - 1
service.md

@@ -7,7 +7,7 @@
 - [ ] task-server
 - [ ] websocket-server
 - [ ] audio-analysis
-- [x] bbs-server
+- [ ] bbs-server
 - [ ] classroom-server
 - [ ] cms-server
 - [ ] mall-admin