Browse Source

Merge branch 'feature/1113-vipCourse' of http://git.dayaedu.com/yonge/cooleshow into feature/1113-vipCourse

刘俊驰 4 months ago
parent
commit
232df7147a
16 changed files with 243 additions and 2 deletions
  1. 33 0
      cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/ExposureReportController.java
  2. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseGroupDao.java
  3. 13 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ExposureReportDao.java
  4. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicSheetDao.java
  5. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonGroupDao.java
  6. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityPlan.java
  7. 48 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ExposureReport.java
  8. 1 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseGroupService.java
  9. 12 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ExposureReportService.java
  10. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupService.java
  11. 62 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ExposureReportServiceImpl.java
  12. 35 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/ExposureReportWrapper.java
  13. 5 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseGroupMapper.xml
  14. 15 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ExposureReportMapper.xml
  15. 5 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml
  16. 4 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml

+ 33 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/ExposureReportController.java

@@ -0,0 +1,33 @@
+package com.yonge.cooleshow.student.controller;
+
+import com.yonge.cooleshow.biz.dal.service.ExposureReportService;
+import com.yonge.cooleshow.biz.dal.wrapper.ExposureReportWrapper;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Api(tags = "曝光记录")
+@RestController
+@RequestMapping("${app-config.url.student:}/exposure")
+public class ExposureReportController extends BaseController {
+
+    @Resource
+    private ExposureReportService exposureReportService;
+
+
+    @ApiOperation(value = "记录曝光信息")
+    @PostMapping("/report")
+    public HttpResponseResult report(@RequestBody List<ExposureReportWrapper.SaveExposureReportDto> exposureReportDto) {
+        exposureReportService.report(exposureReportDto);
+        return succeed();
+    }
+
+}

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseGroupDao.java

@@ -272,5 +272,7 @@ public interface CourseGroupDao extends BaseMapper<CourseGroup> {
                                                                  @Param("param") CourseGroupWrapper.TeacherCourseGroupQuery query);
 
     void updateCompleteCourseNum(@Param("groupIds") List<Long> groupIds);
+
+    void updateExposureNum(@Param("groupId") Long groupId, @Param("exposureNum") Integer exposureNum);
 }
 

+ 13 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ExposureReportDao.java

@@ -0,0 +1,13 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.entity.ExposureReport;
+import com.yonge.cooleshow.biz.dal.wrapper.ExposureReportWrapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface ExposureReportDao extends BaseMapper<ExposureReport> {
+    void saveExposureReport(@Param("beans") List<ExposureReportWrapper.SaveExposureReportDto> exposureReportDto);
+}
+

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicSheetDao.java

@@ -234,4 +234,6 @@ public interface MusicSheetDao extends BaseMapper<MusicSheet> {
     TeacherHomeWrapper.MusicSheetTotal musicSheetTotal(@Param("teacherId") Long teacherId);
 
     List<TeacherHomeWrapper.MusicSheetTotal> musicSheetPage(@Param("param") TeacherHomeWrapper.MusicSheetQuery query);
+
+    void updateExposureNum(@Param("musicSheetId") Long musicSheetId, @Param("exposureNum") Integer exposureNum);
 }

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonGroupDao.java

@@ -77,4 +77,6 @@ public interface VideoLessonGroupDao extends BaseMapper<VideoLessonGroup> {
     List<CountVideoGroupVo.VideoLesson> selectVideoLesson();
 
     List<Mapper> countMusicAlbum(@Param("videoLessonGroupIds") List<Long> videoLessonGroupIds);
+
+    void updateExposureNum(@Param("groupId") Long groupId, @Param("exposureNum") Integer exposureNum);
 }

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

@@ -160,5 +160,5 @@ public class ActivityPlan implements Serializable {
 
     @ApiModelProperty("可购买次数")
     @TableField(value = "buy_count_")
-    private Integer buyCount = -1;
+    private Integer buyCount;
 }

+ 48 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ExposureReport.java

@@ -0,0 +1,48 @@
+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 io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@ApiModel(value = "exposure_record-曝光记录表")
+public class ExposureReport implements Serializable {
+    @TableId(value = "id_", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @TableField("exposure_time_")
+    @ApiModelProperty(value = "曝光日期")
+    private String exposureTime;
+
+    @TableField("exposure_num_")
+    @ApiModelProperty(value = "曝光次数")
+    private Integer exposureNum;
+
+    @TableField("object_id_")
+    @ApiModelProperty(value = "课程组、曲目编号")
+    private Long objectId;
+
+    @TableField("object_type_")
+    @ApiModelProperty(value = "类型:LIVE 直播课、VIDEO视频课、MUSIC曲目")
+    private String objectType;
+
+    @TableField("platform_")
+    @ApiModelProperty(value = "ios、android")
+    private String platform;
+
+    @TableField("create_time_")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @TableField("update_time_")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}
+

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

@@ -18,6 +18,7 @@ import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.course.CourseGroupWrapper;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.base.page.PageInfo;
+import org.apache.ibatis.annotations.Param;
 import org.redisson.api.RMap;
 
 import java.util.Date;

+ 12 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ExposureReportService.java

@@ -0,0 +1,12 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.entity.ExposureReport;
+import com.yonge.cooleshow.biz.dal.wrapper.ExposureReportWrapper;
+
+import java.util.List;
+
+public interface ExposureReportService extends IService<ExposureReport> {
+
+    void report(List<ExposureReportWrapper.SaveExposureReportDto> exposureReportDto);
+}

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

@@ -2,6 +2,7 @@ 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.dao.VideoLessonGroupDao;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoGroupSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonSearch;
@@ -21,6 +22,8 @@ import java.util.List;
  * @date 2022-03-25 23:46:28
  **/
 public interface VideoLessonGroupService extends IService<VideoLessonGroup> {
+    VideoLessonGroupDao getDao();
+
     IPage<VideoLessonGroupVo> selectPage(IPage<VideoLessonGroupVo> page, VideoLessonGroupSearch query);
 
     List<VideoLessonGroupVo> selectPage(VideoLessonGroupSearch query);

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

@@ -0,0 +1,62 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.dao.ExposureReportDao;
+import com.yonge.cooleshow.biz.dal.entity.ExposureReport;
+import com.yonge.cooleshow.biz.dal.service.CourseGroupService;
+import com.yonge.cooleshow.biz.dal.service.ExposureReportService;
+import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
+import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupService;
+import com.yonge.cooleshow.biz.dal.wrapper.ExposureReportWrapper;
+import com.yonge.toolset.utils.date.DateUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+public class ExposureReportServiceImpl extends ServiceImpl<ExposureReportDao, ExposureReport> implements ExposureReportService {
+    private final static Logger log = LoggerFactory.getLogger(ExposureReportServiceImpl.class);
+
+    @Resource
+    private CourseGroupService courseGroupService;
+    @Resource
+    private MusicSheetService musicSheetService;
+    @Resource
+    private VideoLessonGroupService videoLessonGroupService;
+
+    public ExposureReportDao getDao() {
+        return baseMapper;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void report(List<ExposureReportWrapper.SaveExposureReportDto> exposureReportDto) {
+        Date now = new Date();
+        String exposureTime = DateUtil.format(now, DateUtil.DEFAULT_PATTERN);
+        exposureReportDto.forEach(e->e.setExposureTime(exposureTime));
+        baseMapper.saveExposureReport(exposureReportDto);
+        //按类型分组
+        Map<String, List<ExposureReportWrapper.SaveExposureReportDto>> typeMap = exposureReportDto.stream().collect(Collectors.groupingBy(ExposureReportWrapper.SaveExposureReportDto::getObjectType));
+        typeMap.forEach((k,v)->{
+            List<ExposureReportWrapper.SaveExposureReportDto> saveExposureReportDtos = typeMap.get(k);
+            //按对象id分组,并获取集合数量
+            Map<Long, Integer> exposureNumMap = saveExposureReportDtos.stream().collect(Collectors.groupingBy(ExposureReportWrapper.SaveExposureReportDto::getObjectId, Collectors.summingInt(e -> 1)));
+            exposureNumMap.forEach((objectId,exposureNum)-> {
+                if ("LIVE".equals(k)) {
+                    courseGroupService.getDao().updateExposureNum(objectId, exposureNum);
+                } else if ("VIDEO".equals(k)) {
+                    videoLessonGroupService.getDao().updateExposureNum(objectId, exposureNum);
+                }else if ("MUSIC".equals(k)) {
+                    musicSheetService.getDao().updateExposureNum(objectId, exposureNum);
+                }
+            });
+        });
+    }
+}

+ 35 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/ExposureReportWrapper.java

@@ -0,0 +1,35 @@
+package com.yonge.cooleshow.biz.dal.wrapper;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 曲谱表
+ * 2022-12-07 10:16:58
+ */
+@ApiModel(value = "ExposureReportWrapper", description = "曝光记录")
+public class ExposureReportWrapper {
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class SaveExposureReportDto {
+        @ApiModelProperty("分类")
+        private String objectType;
+
+        @ApiModelProperty("分类ID")
+        private Long objectId;
+
+        @ApiModelProperty("平台")
+        private String platform;
+
+        @ApiModelProperty("曝光时间")
+        private String exposureTime;
+	}
+
+}

+ 5 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseGroupMapper.xml

@@ -724,6 +724,11 @@
             set cg.complete_course_num_ = cs.num_
         where cs.course_group_id_ = cg.id_
     </update>
+    <update id="updateExposureNum">
+        update course_group
+        set exposure_num_ = exposure_num_ + #{exposureNum}
+        where id_ = #{groupId}
+    </update>
     <select id="selectPianoGroup" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupPianoVo">
         SELECT
         cg.id_ AS courseGroupId,

+ 15 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/ExposureReportMapper.xml

@@ -0,0 +1,15 @@
+<?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.ExposureReportDao">
+
+	<update id="saveExposureReport">
+		insert into exposure_report (exposure_time_, exposure_num_, object_id_, object_type_, platform_)
+		values
+		<foreach collection="beans" item="bean" separator="," >
+			(#{bean.exposureTime}, 1, #{bean.objectId}, #{bean.objectType}, #{bean.platform})
+		</foreach>
+		ON DUPLICATE KEY UPDATE
+		exposure_num_ = exposure_num_ + 1
+	</update>
+</mapper>

+ 5 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml

@@ -1333,6 +1333,11 @@
         set hidden_flag_ = 1
         where user_id_ = #{userId} and music_sheet_id_ = #{musicSheetId} and client_id_ = #{clientEnum}
     </update>
+    <update id="updateExposureNum">
+        update music_sheet
+        set exposure_num_ = exposure_num_ + #{exposureNum}
+        where id_ = #{musicSheetId}
+    </update>
 
     <select id="musicSheetTotal"
             resultType="com.yonge.cooleshow.biz.dal.wrapper.teacher.TeacherHomeWrapper$MusicSheetTotal">

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

@@ -125,7 +125,10 @@
 		</set>
 		WHERE id_ = #{id}
 	</update>
-	<select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo">
+    <update id="updateExposureNum">
+		UPDATE video_lesson_group SET exposure_num_ = exposure_num_ + #{exposureNum} WHERE id_ = #{groupId}
+	</update>
+    <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo">
 		SELECT
 			<include refid="baseColumns"/>
 			b.name_ AS lessonSubjectName,