收藏中心 多少集
This commit is contained in:
@@ -3,6 +3,7 @@ package com.sqx.modules.course.dao;
|
|||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.sqx.modules.course.entity.Course;
|
import com.sqx.modules.course.entity.Course;
|
||||||
import com.sqx.modules.course.entity.CourseCollect;
|
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.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
@@ -16,4 +17,7 @@ public interface CourseCollectDao extends BaseMapper<CourseCollect> {
|
|||||||
|
|
||||||
|
|
||||||
Map<String, Object> selectSummary(Long userId);
|
Map<String, Object> selectSummary(Long userId);
|
||||||
|
|
||||||
|
|
||||||
|
List<Course> selectClassify1In3(@Param("userId") Long userId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import org.springframework.cache.annotation.Cacheable;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
@CacheConfig
|
@CacheConfig
|
||||||
@@ -53,5 +54,5 @@ public interface CourseDetailsDao extends BaseMapper<CourseDetails> {
|
|||||||
@Cacheable(cacheNames = "courseCount", key = "#courseId")
|
@Cacheable(cacheNames = "courseCount", key = "#courseId")
|
||||||
Integer countCourseByCourseId(Long courseId);
|
Integer countCourseByCourseId(Long courseId);
|
||||||
|
|
||||||
List<CourseDetails> countByCourseId();
|
List<CourseDetails> countByCourseId(@Param("courseIdList")Set<Long> courseIdList);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,8 +103,7 @@ public class CourseCollectServiceImpl extends ServiceImpl<CourseCollectDao, Cour
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
log.error("收藏短剧出错了!" + e.getMessage());
|
log.error("收藏短剧出错了!" + e.getMessage());
|
||||||
}
|
} finally {
|
||||||
finally {
|
|
||||||
reentrantReadWriteLock.writeLock().unlock();
|
reentrantReadWriteLock.writeLock().unlock();
|
||||||
}
|
}
|
||||||
return Result.error("系统繁忙,请稍后再试!");
|
return Result.error("系统繁忙,请稍后再试!");
|
||||||
@@ -133,41 +132,40 @@ public class CourseCollectServiceImpl extends ServiceImpl<CourseCollectDao, Cour
|
|||||||
@CachePut(value = "app:courseCollect", key = "#userId")
|
@CachePut(value = "app:courseCollect", key = "#userId")
|
||||||
public Result selectByUserId(Integer page, Integer limit, Long userId, Integer classify) {
|
public Result selectByUserId(Integer page, Integer limit, Long userId, Integer classify) {
|
||||||
PageHelper.startPage(page, limit);
|
PageHelper.startPage(page, limit);
|
||||||
List<CourseCollect> courseCollectList = baseMapper.selectList(new LambdaQueryWrapper<CourseCollect>()
|
//查 收藏记录
|
||||||
.eq(CourseCollect::getUserId, userId)
|
List<Course> courses = baseMapper.selectClassify1In3(userId);
|
||||||
.eq(CourseCollect::getClassify, classify)
|
if (CollectionUtil.isEmpty(courses)) {
|
||||||
.isNotNull(CourseCollect::getCourseId)
|
return Result.success();
|
||||||
.select(CourseCollect::getCourseId, CourseCollect::getUserId, CourseCollect::getCourseDetailsId));
|
|
||||||
|
|
||||||
Set<Long> courseIdList = new HashSet<>();
|
|
||||||
HashMap<Long, CourseCollect> courseCollectHashMap = new HashMap<>();
|
|
||||||
for (CourseCollect courseCollect : courseCollectList) {
|
|
||||||
courseIdList.add(courseCollect.getCourseId());
|
|
||||||
courseCollectHashMap.put(courseCollect.getCourseId(), courseCollect);
|
|
||||||
}
|
}
|
||||||
|
//剧id
|
||||||
|
Set<Long> courseIdList = new HashSet<>();
|
||||||
|
//详情id
|
||||||
|
Set<Long> courseDetailIds = new HashSet<>();
|
||||||
|
courses.forEach(s -> {
|
||||||
|
courseIdList.add(s.getCourseId());
|
||||||
|
courseDetailIds.add(s.getCourseDetailsId());
|
||||||
|
});
|
||||||
|
List<Course> courseList = courseIdList.isEmpty() ? new ArrayList<>() :
|
||||||
|
courseDao.selectList(new LambdaQueryWrapper<Course>().in(Course::getCourseId, courseIdList));
|
||||||
|
|
||||||
List<Course> courseList = courseIdList.isEmpty() ? new ArrayList<>() : courseDao.selectList(new LambdaQueryWrapper<Course>().in(Course::getCourseId, courseIdList));
|
List<CourseDetails> courseDetails1 = courseIdList.isEmpty() ? new ArrayList<>() :
|
||||||
Set<Long> detailIdList = courseCollectList.stream().map(CourseCollect::getCourseDetailsId).collect(Collectors.toSet());
|
courseDetailsService.list(new LambdaQueryWrapper<CourseDetails>().in(CourseDetails::getCourseDetailsId, courseDetailIds));
|
||||||
Map<Long, CourseDetails> courseDetailsMap = detailIdList.isEmpty() ? new HashMap<>() : courseDetailsService.list(new LambdaQueryWrapper<CourseDetails>()
|
Map<Long, CourseDetails> courseDetailsMap = courseDetails1.stream().collect(Collectors.toMap(CourseDetails::getCourseId, item -> item));
|
||||||
.in(CourseDetails::getCourseDetailsId, detailIdList)).stream()
|
Map<Long, Integer> countMap = courseDetailsDao.countByCourseId(courseIdList).stream()
|
||||||
.collect(Collectors.toMap(CourseDetails::getCourseDetailsId, item -> item));
|
.collect(Collectors.toMap(CourseDetails::getCourseId, CourseDetails::getCourseDetailsCount));
|
||||||
|
|
||||||
Map<Long, Integer> countMap = courseDetailsDao.countByCourseId().stream().collect(Collectors.toMap(CourseDetails::getCourseId, CourseDetails::getCourseDetailsCount));
|
|
||||||
|
|
||||||
PageInfo<Course> pageInfo = new PageInfo<>(courseList);
|
|
||||||
if (CollectionUtil.isNotEmpty(courseList)) {
|
if (CollectionUtil.isNotEmpty(courseList)) {
|
||||||
List<Course> courses = pageInfo.getList();
|
for (Course course : courseList) {
|
||||||
for (Course course : courses) {
|
// course.setCourseClassification(courseClassificationDao.selectById(course.getClassifyId()));
|
||||||
course.setCourseClassification(courseClassificationDao.selectById(course.getClassifyId()));
|
CourseDetails courseDetails = courseDetailsMap.getOrDefault(course.getCourseId(), null);
|
||||||
CourseCollect courseCollect = courseCollectHashMap.get(course.getCourseId());
|
course.setCourseDetailsCount(countMap.getOrDefault(course.getCourseId(), 0));
|
||||||
CourseDetails courseDetails = courseCollect == null ? null : courseDetailsMap.get(courseCollect.getCourseDetailsId());
|
|
||||||
course.setCourseDetailsCount(courseCollect == null ? 0 : countMap.get(courseCollect.getCourseId()));
|
|
||||||
if (courseDetails != null) {
|
if (courseDetails != null) {
|
||||||
course.setCourseDetailsName(courseDetails.getCourseDetailsName());
|
course.setCourseDetailsName(courseDetails.getCourseDetailsName());
|
||||||
course.setCourseDetailsId(courseDetails.getCourseDetailsId());
|
course.setCourseDetailsId(courseDetails.getCourseDetailsId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
PageInfo<Course> pageInfo = new PageInfo<>(courseList);
|
||||||
return Result.success().put("data", PageUtils.page(pageInfo, true));
|
return Result.success().put("data", PageUtils.page(pageInfo, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,5 +30,15 @@
|
|||||||
FROM course_collect
|
FROM course_collect
|
||||||
WHERE user_id = #{userId};
|
WHERE user_id = #{userId};
|
||||||
</select>
|
</select>
|
||||||
|
<select id="selectClassify1In3" resultType="com.sqx.modules.course.entity.Course">
|
||||||
|
SELECT
|
||||||
|
c1.course_id as courseId,
|
||||||
|
c1.course_details_id as courseDetailsId
|
||||||
|
FROM
|
||||||
|
`course_collect` c1
|
||||||
|
INNER JOIN course_collect c2 ON c1.course_id = c2.course_id AND c2.user_id = #{userId} AND c2.classify = 1
|
||||||
|
WHERE
|
||||||
|
c1.classify = 3
|
||||||
|
AND c1.user_id = #{userId}
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -108,8 +108,10 @@
|
|||||||
SELECT course_id as courseId,
|
SELECT course_id as courseId,
|
||||||
COUNT(*) AS courseDetailsCount
|
COUNT(*) AS courseDetailsCount
|
||||||
FROM course_details
|
FROM course_details
|
||||||
where course_details_id
|
where course_details_id in
|
||||||
|
<foreach collection="courseIdList" item="ids" open="(" separator="," close=")">
|
||||||
|
#{ids}
|
||||||
|
</foreach>
|
||||||
GROUP BY course_id
|
GROUP BY course_id
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user