From fece3d18431263e950e19ecde19b1014a540e5b0 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Mon, 6 Jan 2025 22:36:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B6=E8=97=8F=E4=B8=AD=E5=BF=83=20?= =?UTF-8?q?=E5=A4=9A=E5=B0=91=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/course/dao/CourseCollectDao.java | 4 ++ .../modules/course/dao/CourseDetailsDao.java | 3 +- .../impl/CourseCollectServiceImpl.java | 54 +++++++++---------- .../mapper/course/CourseCollectDao.xml | 12 ++++- .../mapper/course/CourseDetailsDao.xml | 6 ++- 5 files changed, 47 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/sqx/modules/course/dao/CourseCollectDao.java b/src/main/java/com/sqx/modules/course/dao/CourseCollectDao.java index f273a04f..400c56aa 100644 --- a/src/main/java/com/sqx/modules/course/dao/CourseCollectDao.java +++ b/src/main/java/com/sqx/modules/course/dao/CourseCollectDao.java @@ -3,6 +3,7 @@ package com.sqx.modules.course.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.sqx.modules.course.entity.Course; import com.sqx.modules.course.entity.CourseCollect; +import com.sqx.modules.course.entity.CourseDetails; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -16,4 +17,7 @@ public interface CourseCollectDao extends BaseMapper { Map selectSummary(Long userId); + + + List selectClassify1In3(@Param("userId") Long userId); } diff --git a/src/main/java/com/sqx/modules/course/dao/CourseDetailsDao.java b/src/main/java/com/sqx/modules/course/dao/CourseDetailsDao.java index f1e2279f..b9eea809 100644 --- a/src/main/java/com/sqx/modules/course/dao/CourseDetailsDao.java +++ b/src/main/java/com/sqx/modules/course/dao/CourseDetailsDao.java @@ -12,6 +12,7 @@ import org.springframework.cache.annotation.Cacheable; import java.math.BigDecimal; import java.util.List; import java.util.Map; +import java.util.Set; @Mapper @CacheConfig @@ -53,5 +54,5 @@ public interface CourseDetailsDao extends BaseMapper { @Cacheable(cacheNames = "courseCount", key = "#courseId") Integer countCourseByCourseId(Long courseId); - List countByCourseId(); + List countByCourseId(@Param("courseIdList")Set courseIdList); } diff --git a/src/main/java/com/sqx/modules/course/service/impl/CourseCollectServiceImpl.java b/src/main/java/com/sqx/modules/course/service/impl/CourseCollectServiceImpl.java index 291e37a9..9ebc1663 100644 --- a/src/main/java/com/sqx/modules/course/service/impl/CourseCollectServiceImpl.java +++ b/src/main/java/com/sqx/modules/course/service/impl/CourseCollectServiceImpl.java @@ -96,15 +96,14 @@ public class CourseCollectServiceImpl extends ServiceImpl courseCollectList = baseMapper.selectList(new LambdaQueryWrapper() - .eq(CourseCollect::getUserId, userId) - .eq(CourseCollect::getClassify, classify) - .isNotNull(CourseCollect::getCourseId) - .select(CourseCollect::getCourseId, CourseCollect::getUserId, CourseCollect::getCourseDetailsId)); - - Set courseIdList = new HashSet<>(); - HashMap courseCollectHashMap = new HashMap<>(); - for (CourseCollect courseCollect : courseCollectList) { - courseIdList.add(courseCollect.getCourseId()); - courseCollectHashMap.put(courseCollect.getCourseId(), courseCollect); + //查 收藏记录 + List courses = baseMapper.selectClassify1In3(userId); + if (CollectionUtil.isEmpty(courses)) { + return Result.success(); } + //剧id + Set courseIdList = new HashSet<>(); + //详情id + Set courseDetailIds = new HashSet<>(); + courses.forEach(s -> { + courseIdList.add(s.getCourseId()); + courseDetailIds.add(s.getCourseDetailsId()); + }); + List courseList = courseIdList.isEmpty() ? new ArrayList<>() : + courseDao.selectList(new LambdaQueryWrapper().in(Course::getCourseId, courseIdList)); - List courseList = courseIdList.isEmpty() ? new ArrayList<>() : courseDao.selectList(new LambdaQueryWrapper().in(Course::getCourseId, courseIdList)); - Set detailIdList = courseCollectList.stream().map(CourseCollect::getCourseDetailsId).collect(Collectors.toSet()); - Map courseDetailsMap = detailIdList.isEmpty() ? new HashMap<>() : courseDetailsService.list(new LambdaQueryWrapper() - .in(CourseDetails::getCourseDetailsId, detailIdList)).stream() - .collect(Collectors.toMap(CourseDetails::getCourseDetailsId, item -> item)); + List courseDetails1 = courseIdList.isEmpty() ? new ArrayList<>() : + courseDetailsService.list(new LambdaQueryWrapper().in(CourseDetails::getCourseDetailsId, courseDetailIds)); + Map courseDetailsMap = courseDetails1.stream().collect(Collectors.toMap(CourseDetails::getCourseId, item -> item)); + Map countMap = courseDetailsDao.countByCourseId(courseIdList).stream() + .collect(Collectors.toMap(CourseDetails::getCourseId, CourseDetails::getCourseDetailsCount)); - Map countMap = courseDetailsDao.countByCourseId().stream().collect(Collectors.toMap(CourseDetails::getCourseId, CourseDetails::getCourseDetailsCount)); - - PageInfo pageInfo = new PageInfo<>(courseList); if (CollectionUtil.isNotEmpty(courseList)) { - List courses = pageInfo.getList(); - for (Course course : courses) { - course.setCourseClassification(courseClassificationDao.selectById(course.getClassifyId())); - CourseCollect courseCollect = courseCollectHashMap.get(course.getCourseId()); - CourseDetails courseDetails = courseCollect == null ? null : courseDetailsMap.get(courseCollect.getCourseDetailsId()); - course.setCourseDetailsCount(courseCollect == null ? 0 : countMap.get(courseCollect.getCourseId())); + for (Course course : courseList) { +// course.setCourseClassification(courseClassificationDao.selectById(course.getClassifyId())); + CourseDetails courseDetails = courseDetailsMap.getOrDefault(course.getCourseId(), null); + course.setCourseDetailsCount(countMap.getOrDefault(course.getCourseId(), 0)); if (courseDetails != null) { course.setCourseDetailsName(courseDetails.getCourseDetailsName()); course.setCourseDetailsId(courseDetails.getCourseDetailsId()); } } } + PageInfo pageInfo = new PageInfo<>(courseList); return Result.success().put("data", PageUtils.page(pageInfo, true)); } diff --git a/src/main/resources/mapper/course/CourseCollectDao.xml b/src/main/resources/mapper/course/CourseCollectDao.xml index 81baf2d5..9ee13d38 100644 --- a/src/main/resources/mapper/course/CourseCollectDao.xml +++ b/src/main/resources/mapper/course/CourseCollectDao.xml @@ -30,5 +30,15 @@ FROM course_collect WHERE user_id = #{userId}; - + diff --git a/src/main/resources/mapper/course/CourseDetailsDao.xml b/src/main/resources/mapper/course/CourseDetailsDao.xml index 28ba0f78..a7c7bea8 100644 --- a/src/main/resources/mapper/course/CourseDetailsDao.xml +++ b/src/main/resources/mapper/course/CourseDetailsDao.xml @@ -108,8 +108,10 @@ SELECT course_id as courseId, COUNT(*) AS courseDetailsCount FROM course_details - where course_details_id - + where course_details_id in + + #{ids} + GROUP BY course_id