Browse Source

Merge branch 'dev_v1.3.7_20221020'

liujunchi 3 years ago
parent
commit
d22c0f1ab8

+ 11 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonController.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.admin.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.yonge.cooleshow.admin.io.request.course.CourseRelationVo;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.AdjustModel;
@@ -10,6 +11,7 @@ import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.queryInfo.CourseRelationQueryInfo;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupDetailService;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupService;
 import com.yonge.cooleshow.biz.dal.valid.UpdateGroup;
@@ -121,6 +123,15 @@ public class VideoLessonController extends BaseController {
         return succeed(PageUtil.pageInfo(lessonGroupService.queryGroupHistoryList(PageUtil.getPage(search), search)));
     }
 
+    @ApiOperation(value = "老师详情-视频课详情-推荐/赠送内容", httpMethod = "POST", consumes = "application/json", produces = "application/json")
+    @PostMapping(value = "/queryRelationMusicAlbum", consumes = "application/json", produces = "application/json")
+    public HttpResponseResult<PageInfo<CourseRelationVo.CourseRelationList>> queryRelationMusicAlbum(@RequestBody CourseRelationVo.CourseRelationQuery query) {
+        lessonGroupService.queryRelationMusicAlbum(PageUtil.getPage(query),
+                                                   CourseRelationQueryInfo.from(query.jsonString()));
+        return succeed();
+    }
+
+
     /**
      * @Description: 审核-根据视频课组id查视频课详情
      * @Author: cy

+ 166 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/io/request/course/CourseRelationVo.java

@@ -0,0 +1,166 @@
+package com.yonge.cooleshow.admin.io.request.course;
+
+import com.alibaba.fastjson.JSON;
+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 com.yonge.toolset.base.page.QueryInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-10-25
+ */
+public class CourseRelationVo {
+
+    @ApiModel("CourseRelationQuery-课程推荐/赠送内容查询")
+    public static class CourseRelationQuery extends QueryInfo{
+
+        @ApiModelProperty("课程组id")
+        private Long courseGroupId;
+
+        @ApiModelProperty("关联类型, MUSIC, ALBUM ")
+        private RelationMusicAlbumEnum relationType;
+
+
+        @ApiModelProperty("课程类型 ")
+        private CourseTypeEnum courseType;
+
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+
+        public Long getCourseGroupId() {
+            return courseGroupId;
+        }
+
+        public void setCourseGroupId(Long courseGroupId) {
+            this.courseGroupId = courseGroupId;
+        }
+
+        public RelationMusicAlbumEnum getRelationType() {
+            return relationType;
+        }
+
+        public void setRelationType(RelationMusicAlbumEnum relationType) {
+            this.relationType = relationType;
+        }
+
+        public CourseTypeEnum getCourseType() {
+            return courseType;
+        }
+
+        public void setCourseType(CourseTypeEnum courseType) {
+            this.courseType = courseType;
+        }
+    }
+
+    @ApiModel("CourseRelationList-课程推荐/赠送内容列表")
+    public static class CourseRelationList {
+
+        @ApiModelProperty("编号")
+        private Long id;
+
+        @ApiModelProperty("封面")
+        private String img;
+
+        @ApiModelProperty("名称")
+        private String name;
+
+        @ApiModelProperty("标签")
+        private String tagName;
+
+        @ApiModelProperty("声部")
+        private String subjectName;
+
+        @ApiModelProperty("收费类型  VIP:会员,FREE:免费 CHARGE:购买")
+        private String paymentType;
+
+        @ApiModelProperty("价格")
+        private BigDecimal price;
+
+        @ApiModelProperty("关联类型, MUSIC, ALBUM ")
+        private RelationMusicAlbumEnum relationType;
+
+        @ApiModelProperty("课程名")
+        private String courseName;
+
+        public Long getId() {
+            return id;
+        }
+
+        public void setId(Long id) {
+            this.id = id;
+        }
+
+        public String getImg() {
+            return img;
+        }
+
+        public void setImg(String img) {
+            this.img = img;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public String getTagName() {
+            return tagName;
+        }
+
+        public void setTagName(String tagName) {
+            this.tagName = tagName;
+        }
+
+        public String getSubjectName() {
+            return subjectName;
+        }
+
+        public void setSubjectName(String subjectName) {
+            this.subjectName = subjectName;
+        }
+
+        public String getPaymentType() {
+            return paymentType;
+        }
+
+        public void setPaymentType(String paymentType) {
+            this.paymentType = paymentType;
+        }
+
+        public BigDecimal getPrice() {
+            return price;
+        }
+
+        public void setPrice(BigDecimal price) {
+            this.price = price;
+        }
+
+        public RelationMusicAlbumEnum getRelationType() {
+            return relationType;
+        }
+
+        public void setRelationType(RelationMusicAlbumEnum relationType) {
+            this.relationType = relationType;
+        }
+
+        public String getCourseName() {
+            return courseName;
+        }
+
+        public void setCourseName(String courseName) {
+            this.courseName = courseName;
+        }
+    }
+}

+ 15 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/VideoLessonGroupDetailDto.java

@@ -1,9 +1,11 @@
 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.ArrayList;
 import java.util.List;
 
 
@@ -15,6 +17,19 @@ public class VideoLessonGroupDetailDto extends VideoLessonGroupDetail {
     @ApiModelProperty("关联曲目/专辑信息(查看) ")
     private List<CourseRelationWrapper.MusicAlbumInfo> musicAlbumInfos;
 
+
+    @ApiModelProperty(value = "数据库保存json数据",hidden = true)
+    private List<CourseRelationMusicAlbum> courseRelationMusicAlbumList = new ArrayList<>();
+
+
+    public List<CourseRelationMusicAlbum> getCourseRelationMusicAlbumList() {
+        return courseRelationMusicAlbumList;
+    }
+
+    public void setCourseRelationMusicAlbumList(List<CourseRelationMusicAlbum> courseRelationMusicAlbumList) {
+        this.courseRelationMusicAlbumList = courseRelationMusicAlbumList;
+    }
+
     public List<CourseMusicAlbumRelationDto> getRelationList() {
         return relationList;
     }

+ 58 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/queryInfo/CourseRelationQueryInfo.java

@@ -0,0 +1,58 @@
+package com.yonge.cooleshow.biz.dal.queryInfo;
+
+import com.alibaba.fastjson.JSON;
+import com.yonge.cooleshow.biz.dal.enums.course.CourseTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.course.RelationMusicAlbumEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-10-25
+ */
+public class CourseRelationQueryInfo {
+
+
+    // 课程组id
+    private Long courseGroupId;
+
+    // 关联类型, MUSIC, ALBUM
+    private RelationMusicAlbumEnum relationType;
+
+
+    // 课程类型
+    private CourseTypeEnum courseType;
+
+
+
+    public static CouponInfoQuery from(String recv) {
+
+        return JSON.parseObject(recv, CouponInfoQuery.class);
+    }
+
+
+    public RelationMusicAlbumEnum getRelationType() {
+        return relationType;
+    }
+
+    public void setRelationType(RelationMusicAlbumEnum relationType) {
+        this.relationType = relationType;
+    }
+
+    public CourseTypeEnum getCourseType() {
+        return courseType;
+    }
+
+    public void setCourseType(CourseTypeEnum courseType) {
+        this.courseType = courseType;
+    }
+
+    public Long getCourseGroupId() {
+        return courseGroupId;
+    }
+
+    public void setCourseGroupId(Long courseGroupId) {
+        this.courseGroupId = courseGroupId;
+    }
+}

+ 7 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupService.java

@@ -7,7 +7,9 @@ import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonSearch;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.queryInfo.CouponInfoQuery;
 import com.yonge.cooleshow.biz.dal.vo.*;
+import com.yonge.cooleshow.biz.dal.wrapper.course.CourseRelationWrapper;
 
 import java.util.List;
 
@@ -75,4 +77,9 @@ public interface VideoLessonGroupService extends IService<VideoLessonGroup> {
      *
      */
     Boolean top(Long videoLessonGroupId);
+
+    /**
+     * 老师详情-视频课详情-推荐/赠送内容
+     */
+    IPage<CourseRelationWrapper.CourseMusicAlbumInfo> queryRelationMusicAlbum(IPage<CourseRelationWrapper.CourseMusicAlbumInfo> page, CouponInfoQuery query);
 }

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

@@ -202,7 +202,8 @@ public class CourseRelationMusicAlbumServiceImpl extends ServiceImpl<CourseRelat
                 // 补录用户购买赠送曲目、专辑
                 for (CourseRelationMusicAlbum item : entry.getValue()) {
 
-                    musicAlbumRecords.add(CourseRelationWrapper.MusicAlbumRecord.builder()
+                    musicAlbumRecords.add(CourseRelationWrapper.MusicAlbumRecord
+                            .builder()
                             .clientType(record.getOrderClient())
                             .musicSheetId(item.getMusicAlbumId())
                             .orderNo(record.getOrderNo())

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

@@ -238,11 +238,12 @@ public class VideoLessonGroupDetailServiceImpl extends ServiceImpl<VideoLessonGr
         search.setVideoLessonGroupId(groupId);
         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 = JSON.parseArray(JSON.toJSONString(relationMusicAlbums),
-                CourseRelationMusicAlbum.class);
+        List<CourseRelationMusicAlbum> recordInfos = lessonStudentVo.getDetailList().stream()
+                .filter(x -> CollectionUtils.isNotEmpty(x.getCourseRelationMusicAlbumList()))
+                .flatMap(x -> x.getCourseRelationMusicAlbumList().stream()).collect(Collectors.toList());
+        // // 课程关联曲目、专辑信息
+        // List<CourseRelationMusicAlbum> recordInfos = JSON.parseArray(JSON.toJSONString(relationMusicAlbums),
+        //         CourseRelationMusicAlbum.class);
 
         List<CourseRelationWrapper.MusicAlbumInfo> musicAlbumInfos;
         if (CollectionUtils.isNotEmpty(recordInfos)) {

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

@@ -12,6 +12,7 @@ import java.util.stream.Collectors;
 import com.yonge.cooleshow.biz.dal.dto.CourseMusicAlbumRelationDto;
 import com.yonge.cooleshow.biz.dal.entity.CourseRelationMusicAlbum;
 import com.yonge.cooleshow.biz.dal.enums.course.CourseTypeEnum;
+import com.yonge.cooleshow.biz.dal.queryInfo.CouponInfoQuery;
 import com.yonge.cooleshow.biz.dal.service.CourseRelationMusicAlbumService;
 import com.yonge.cooleshow.biz.dal.service.MusicSheetPurchaseRecordService;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupDetailService;
@@ -326,6 +327,7 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
                 } else {
                     updateCourseRelationMusicAlbums.add(courseRelationMusicAlbum);
                 }
+                videoLessonGroupDetailDto.getCourseRelationMusicAlbumList().add(courseRelationMusicAlbum);
             }
         }
         // 删除关联数据
@@ -444,6 +446,8 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
             lessonGroup.setDraftFlag(YesOrNoEnum.NO);
         }
 
+        // 设置关联曲目
+        courseMusicAlbumRelation(lessonList,lessonGroup.getId());
 
         if (YesOrNoEnum.NO.equals(lessonGroup.getDraftFlag())) {
             VideoLessonGroupLog videoLessonGroupLog = new VideoLessonGroupLog();
@@ -464,8 +468,6 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
             videoLessonGroupLogService.insert(videoLessonGroupLog);
         }
 
-        // 设置关联曲目
-        courseMusicAlbumRelation(lessonList,lessonGroup.getId());
     }
 
     /**
@@ -757,5 +759,10 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
 
     }
 
+    @Override
+    public IPage<CourseRelationWrapper.CourseMusicAlbumInfo> queryRelationMusicAlbum(IPage<CourseRelationWrapper.CourseMusicAlbumInfo> page, CouponInfoQuery query) {
+        return null;
+    }
+
 
 }

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

@@ -4,6 +4,7 @@ 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.google.common.collect.Maps;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.UserOrderDao;
@@ -37,6 +38,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * VideoLessonPurchaseRecordService服务实现类
@@ -165,23 +167,40 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
                 .eq(CourseRelationMusicAlbum::getDelFlog, EStatus.ENABLE.getValue())
                 .list();
 
+        List<Long> giftIds = musicAlbums.stream()
+                .map(CourseRelationMusicAlbum::getId).distinct().collect(Collectors.toList());
+
+        Map<Long, Long> purchaseIdMap = Maps.newHashMap();
+        if (CollectionUtils.isNotEmpty(giftIds)) {
+
+            // 查询用户购买记录
+            purchaseIdMap = musicSheetPurchaseRecordService.lambdaQuery()
+                    .eq(MusicSheetPurchaseRecord::getStudentId, orderParam.getUserId())
+                    .eq(MusicSheetPurchaseRecord::getOrderStatus, OrderStatusEnum.PAID)
+                    .in(MusicSheetPurchaseRecord::getCourseMusicAlbumId, giftIds)
+                    .list().stream()
+                    .collect(Collectors.toMap(MusicSheetPurchaseRecord::getCourseMusicAlbumId, MusicSheetPurchaseRecord::getId, (o, n) -> n));
+        }
+
         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())
+            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()))
+                    .id(purchaseIdMap.get(item.getId()))
+                    .courseMusicAlbumId(item.getId())
                     .build());
         }
 

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

@@ -5,11 +5,14 @@ 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.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
+import lombok.Getter;
 import lombok.NoArgsConstructor;
+import lombok.Setter;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -108,7 +111,7 @@ public class CourseRelationWrapper {
         private OrderStatusEnum orderStatus;  //订单状态(1:已完成;0:取消)
 
         @ApiModelProperty(value = "课程关联曲目专辑ID")
-        private  Long courseMusicAlbumId;
+        private Long courseMusicAlbumId;
 
         @ApiModelProperty("购买类型 ")
         private PurchaseRecordTypeEnum purchaseType;
@@ -131,6 +134,42 @@ public class CourseRelationWrapper {
 
         @ApiModelProperty("课程组ID")
         private Long groupId;
+    }
+
+    /**
+     * 课程关联的内容信息
+     */
+    @Getter
+    @Setter
+    public static class CourseMusicAlbumInfo {
+
+        // 编号
+        private Long id;
+
+        //封面
+        private String img;
+
+        //名称")
+        private String name;
+
+        //标签")
+        private String tagName;
+
+        //声部")
+        private String subjectName;
+
+        //收费类型  VIP:会员,FREE:免费 CHARGE:购买")
+        private String paymentType;
+
+        //价格")
+        private BigDecimal price;
+
+        //关联类型, MUSIC, ALBUM ")
+        private RelationMusicAlbumEnum relationType;
+
+        //课程名")
+        private String courseName;
+
 
     }
 }

+ 1 - 1
service.md

@@ -1,6 +1,6 @@
 - [ ] gateway-server
 - [ ] auth-server
-- [x] admin-server
+- [ ] admin-server
 - [ ] teacher-server
 - [ ] student-server
 - [ ] website-server