From ada714d68e73d730dc236ddc22bc231d264b4892 Mon Sep 17 00:00:00 2001 From: GYJ <1157756119@qq.com> Date: Thu, 5 Dec 2024 17:32:04 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=92=AD=E6=94=BE=E9=87=8F?= =?UTF-8?q?=20=E5=92=8C=20=E5=AE=8C=E6=92=AD=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AliossCourseController.java | 2 + .../controller/app/AppCourseController.java | 50 +++++++++++-------- .../modules/course/entity/CourseDetails.java | 15 +++++- .../modules/course/service/CourseService.java | 2 + .../impl/CourseDetailsServiceImpl.java | 2 + .../service/impl/CourseServiceImpl.java | 30 +++++++++++ .../resources/mapper/course/CourseDao.xml | 6 +-- .../mapper/course/CourseDetailsDao.xml | 4 +- 8 files changed, 84 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/sqx/modules/course/controller/AliossCourseController.java b/src/main/java/com/sqx/modules/course/controller/AliossCourseController.java index 912f75ab..b42c1e0f 100644 --- a/src/main/java/com/sqx/modules/course/controller/AliossCourseController.java +++ b/src/main/java/com/sqx/modules/course/controller/AliossCourseController.java @@ -181,6 +181,8 @@ public class AliossCourseController { courseDetails.setTitleImg(image); courseDetails.setContent(courseDetailsName); courseDetails.setGoodNum(goodNum); + courseDetails.setViewCount(0L); + courseDetails.setPlayCompleteCount(0L); if(i<=freeNum){ courseDetails.setPrice(BigDecimal.ZERO); courseDetails.setIsPrice(2); diff --git a/src/main/java/com/sqx/modules/course/controller/app/AppCourseController.java b/src/main/java/com/sqx/modules/course/controller/app/AppCourseController.java index 1ac3a626..9dd4ad52 100644 --- a/src/main/java/com/sqx/modules/course/controller/app/AppCourseController.java +++ b/src/main/java/com/sqx/modules/course/controller/app/AppCourseController.java @@ -28,67 +28,77 @@ public class AppCourseController extends AbstractController { @ApiOperation("查询短剧信息") public Result selectCourse(@ApiParam("页") Integer page, @ApiParam("条") Integer limit, @ApiParam("分类id") Long classifyId, @ApiParam("搜索内容") String title, Long bannerId, Integer sort, String token, Integer isPrice, - Integer over,Integer wxCourse,Integer dyCourse,Integer wxShow,Integer dyShow, HttpServletRequest request) { - if(StringUtils.isEmpty(token)){ + Integer over, Integer wxCourse, Integer dyCourse, Integer wxShow, Integer dyShow, HttpServletRequest request) { + if (StringUtils.isEmpty(token)) { token = request.getHeader("Token"); - if(StringUtils.isBlank(token)){ + if (StringUtils.isBlank(token)) { token = request.getParameter("Token"); } } - return courseService.selectCourse(page, limit, classifyId, title,null,1,bannerId,sort,token,isPrice, - null, over,wxCourse,dyCourse,wxShow,dyShow); + return courseService.selectCourse(page, limit, classifyId, title, null, 1, bannerId, sort, token, isPrice, + null, over, wxCourse, dyCourse, wxShow, dyShow); } @GetMapping("/selectCourseDetailsById") @ApiOperation("根据id查询短剧详情") - public Result selectCourseDetailsById(Long id,String token,String courseDetailsId){ - return courseDetailsService.selectCourseDetailsById(id,token,courseDetailsId); + public Result selectCourseDetailsById(Long id, String token, String courseDetailsId) { + return courseDetailsService.selectCourseDetailsById(id, token, courseDetailsId); } @GetMapping("/selectCourseDetailsList") @ApiOperation("查询推荐视频") - public Result selectCourseDetailsList(Integer page,Integer limit,String token,String randomNum,Integer wxShow,Integer dyShow){ - return courseDetailsService.selectCourseDetailsList(page, limit, token,randomNum,wxShow,dyShow); + public Result selectCourseDetailsList(Integer page, Integer limit, String token, String randomNum, Integer wxShow, Integer dyShow) { + return courseDetailsService.selectCourseDetailsList(page, limit, token, randomNum, wxShow, dyShow); } @Login @GetMapping("/selectCourseTitle") @ApiOperation("模糊根据短剧标题查询短剧") public Result selectCourseTitle(@ApiParam("页") Integer page, @ApiParam("条") Integer limit, @ApiParam("分类id") Long classifyId, - @ApiParam("搜索内容") String title,Long bannerId,Integer sort,String token, Integer isPrice,Integer over, - Integer wxCourse,Integer dyCourse,Integer wxShow,Integer dyShow) { - return courseService.selectCourse(page, limit, classifyId, title,null,1,bannerId,sort,token,isPrice, - null, over,wxCourse,dyCourse,wxShow,dyShow); + @ApiParam("搜索内容") String title, Long bannerId, Integer sort, String token, Integer isPrice, Integer over, + Integer wxCourse, Integer dyCourse, Integer wxShow, Integer dyShow) { + return courseService.selectCourse(page, limit, classifyId, title, null, 1, bannerId, sort, token, isPrice, + null, over, wxCourse, dyCourse, wxShow, dyShow); } @GetMapping("/selectCourseTitles") @ApiOperation("模糊根据短剧标题查询短剧") public Result selectCourseTitles(@ApiParam("页") Integer page, @ApiParam("条") Integer limit, @ApiParam("分类id") Long classifyId, - @ApiParam("搜索内容") String title,Long bannerId,Integer sort,String token, Integer isPrice,Integer over, - Integer wxCourse,Integer dyCourse,Integer wxShow,Integer dyShow) { - return courseService.selectCourse(page, limit, classifyId, title,null,1,bannerId,sort,token,isPrice, - null, over,wxCourse,dyCourse,wxShow,dyShow); + @ApiParam("搜索内容") String title, Long bannerId, Integer sort, String token, Integer isPrice, Integer over, + Integer wxCourse, Integer dyCourse, Integer wxShow, Integer dyShow) { + return courseService.selectCourse(page, limit, classifyId, title, null, 1, bannerId, sort, token, isPrice, + null, over, wxCourse, dyCourse, wxShow, dyShow); } @Login @PostMapping("/courseNotify") @ApiOperation("看广告解锁视频") - public Result courseNotify(@RequestAttribute Long userId, Long courseId, Long courseDetailsId){ + public Result courseNotify(@RequestAttribute Long userId, Long courseId, Long courseDetailsId) { return courseService.courseNotify(userId, courseId, courseDetailsId); } @PostMapping("/notifyUrl") @ApiOperation("抖音视频回调") - public JSONObject notifyUrl(@RequestBody JSONObject jsonObject){ + public JSONObject notifyUrl(@RequestBody JSONObject jsonObject) { return courseService.notifyUrl(jsonObject); } @PostMapping("/selectWxVideoUrl") @ApiOperation("查询微信短剧播放链接") - public Result selectWxVideoUrl(@RequestBody JSONObject jsonObject){ + public Result selectWxVideoUrl(@RequestBody JSONObject jsonObject) { String wxCourseDetailsIds = jsonObject.getString("wxCourseDetailsIds"); return courseService.selectWxVideoUrl(wxCourseDetailsIds); } + @Login + @GetMapping("/viewCourse") + @ApiOperation("查看短剧") + public Result viewCourse(@RequestAttribute Long userId, + @ApiParam("短剧id") Long courseId, + @ApiParam("剧集id") Long courseDetailsId, + @ApiParam("统计类型:start 开始,end 结束") String type) { + return courseService.viewCourse(userId, courseId, courseDetailsId, type); + } + } diff --git a/src/main/java/com/sqx/modules/course/entity/CourseDetails.java b/src/main/java/com/sqx/modules/course/entity/CourseDetails.java index 147e08ca..f763df94 100644 --- a/src/main/java/com/sqx/modules/course/entity/CourseDetails.java +++ b/src/main/java/com/sqx/modules/course/entity/CourseDetails.java @@ -10,8 +10,8 @@ import java.io.Serializable; import java.math.BigDecimal; /** - * @description course_details 短剧目录 * @author fang + * @description course_details 短剧目录 * @date 2021-03-27 */ @Data @@ -133,6 +133,16 @@ public class CourseDetails implements Serializable { */ private Integer advertising; + /** + * 播放量 + */ + private Long viewCount; + + /** + * 完播量 + */ + private Long playCompleteCount; + @TableField(exist = false) private Integer isCollect; @@ -145,5 +155,6 @@ public class CourseDetails implements Serializable { @TableField(exist = false) private String wxUrl; - public CourseDetails() {} + public CourseDetails() { + } } diff --git a/src/main/java/com/sqx/modules/course/service/CourseService.java b/src/main/java/com/sqx/modules/course/service/CourseService.java index 39a60fac..ebb825a7 100644 --- a/src/main/java/com/sqx/modules/course/service/CourseService.java +++ b/src/main/java/com/sqx/modules/course/service/CourseService.java @@ -59,4 +59,6 @@ public interface CourseService extends IService { Result courseListExcelIn(MultipartFile file) throws IOException; + Result viewCourse(Long userId, Long courseId, Long courseDetailsId, String type); + } diff --git a/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java b/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java index 820686f3..06dbcb8b 100644 --- a/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java +++ b/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java @@ -212,6 +212,8 @@ public class CourseDetailsServiceImpl extends ServiceImpl 0) { diff --git a/src/main/java/com/sqx/modules/course/service/impl/CourseServiceImpl.java b/src/main/java/com/sqx/modules/course/service/impl/CourseServiceImpl.java index dc38b121..f98936ad 100644 --- a/src/main/java/com/sqx/modules/course/service/impl/CourseServiceImpl.java +++ b/src/main/java/com/sqx/modules/course/service/impl/CourseServiceImpl.java @@ -89,6 +89,8 @@ public class CourseServiceImpl extends ServiceImpl implements CourseDetails courseDetails=new CourseDetails(); courseDetails.setCourseId(course.getCourseId()); courseDetails.setVideoUrl(course.getRemark()); + courseDetails.setViewCount(0L); + courseDetails.setPlayCompleteCount(0L); courseDetailsDao.insert(courseDetails); }else{ baseMapper.insert(course); @@ -294,6 +296,8 @@ public class CourseServiceImpl extends ServiceImpl implements courseDetails.setGoodNum(0); courseDetails.setPrice(BigDecimal.ZERO); courseDetails.setIsPrice(2); + courseDetails.setViewCount(0L); + courseDetails.setPlayCompleteCount(0L); courseDetailsDao.insert(courseDetails); }else{ CourseDetails courseDetails = courseDetailsDao.selectOne(new QueryWrapper().eq("course_details_name", name).last(" limit 1")); @@ -1095,6 +1099,8 @@ public class CourseServiceImpl extends ServiceImpl implements courseDetails.setTitleImg(img); courseDetails.setContent(name); courseDetails.setGoodNum(goodNum); + courseDetails.setViewCount(0L); + courseDetails.setPlayCompleteCount(0L); if(i<=freeNum){ courseDetails.setPrice(BigDecimal.ZERO); courseDetails.setIsPrice(2); @@ -1227,5 +1233,29 @@ public class CourseServiceImpl extends ServiceImpl implements } + @Override + public Result viewCourse(Long userId, Long courseId, Long courseDetailsId, String type) { + Course course = baseMapper.selectById(courseId); + if(course==null){ + return Result.error("短剧不存在"); + } + CourseDetails details = courseDetailsDao.selectById(courseDetailsId); + if(details==null){ + return Result.error("短剧集不存在"); + } + + if ("start".equals(type)) { + //开始播放 + details.setViewCount(details.getViewCount() + 1); + courseDetailsDao.updateById(details); + baseMapper.updateById(course); + } else if ("end".equals(type)) { + //播放完成 + details.setPlayCompleteCount(details.getPlayCompleteCount() + 1); + courseDetailsDao.updateById(details); + } + + return null; + } } diff --git a/src/main/resources/mapper/course/CourseDao.xml b/src/main/resources/mapper/course/CourseDao.xml index cc516f28..a8e2fc80 100644 --- a/src/main/resources/mapper/course/CourseDao.xml +++ b/src/main/resources/mapper/course/CourseDao.xml @@ -30,7 +30,7 @@ c.course_type as courseType, c.banner_id as bannerId, b.name as bannerName, - c.view_counts as viewCounts, + (select sum(cd.view_count) from course_details cd where cd.course_id = c.course_id ) as viewCounts, c.dy_img_id as dyImgId, c.dy_course_id as dyCourseId, c.wx_course_id as wxCourseId, @@ -148,7 +148,7 @@ c.course_type as courseType, c.banner_id as bannerId, b.name as bannerName, - c.view_counts as viewCounts, + (select sum(cd.view_count) from course_details cd where cd.course_id = c.course_id ) as viewCounts, c.dy_img_id as dyImgId, c.dy_course_id as dyCourseId, c.dy_status as dyStatus, @@ -278,4 +278,4 @@ order by create_time desc - \ No newline at end of file + diff --git a/src/main/resources/mapper/course/CourseDetailsDao.xml b/src/main/resources/mapper/course/CourseDetailsDao.xml index cb663c97..558bdb5e 100644 --- a/src/main/resources/mapper/course/CourseDetailsDao.xml +++ b/src/main/resources/mapper/course/CourseDetailsDao.xml @@ -23,7 +23,7 @@ - \ No newline at end of file +