用户收藏sql优化,接口增加缓存
This commit is contained in:
parent
fb00873494
commit
51e3639065
|
|
@ -14,6 +14,8 @@ import com.sqx.modules.course.entity.CourseDetails;
|
|||
import com.sqx.modules.course.service.CourseCollectService;
|
||||
import com.sqx.modules.course.service.CourseDetailsService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.cache.annotation.CachePut;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
|
|
@ -32,6 +34,7 @@ public class CourseCollectServiceImpl extends ServiceImpl<CourseCollectDao, Cour
|
|||
private ReentrantReadWriteLock reentrantReadWriteLock=new ReentrantReadWriteLock(true);
|
||||
|
||||
@Override
|
||||
@CacheEvict(value = "app:courseCollect", key = "#courseCollect.userId")
|
||||
public Result insertCourseCollect(CourseCollect courseCollect) {
|
||||
reentrantReadWriteLock.writeLock().lock();
|
||||
try {
|
||||
|
|
@ -95,6 +98,7 @@ public class CourseCollectServiceImpl extends ServiceImpl<CourseCollectDao, Cour
|
|||
}
|
||||
|
||||
@Override
|
||||
@CachePut(value = "app:courseCollect", key = "#userId")
|
||||
public Result selectByUserId(Integer page, Integer limit, Long userId,Integer classify) {
|
||||
Page<Course> pages=new Page<>(page,limit);
|
||||
IPage<Course> courseIPage = baseMapper.selectCourseByCollect(pages, userId,classify);
|
||||
|
|
|
|||
|
|
@ -10,44 +10,23 @@
|
|||
c.*,
|
||||
d.course_details_name AS courseDetailsName,
|
||||
d.course_details_id AS courseDetailsId,
|
||||
cd.course_details_count AS courseDetailsCount
|
||||
COUNT(d.course_details_id) AS courseDetailsCount
|
||||
FROM
|
||||
course_collect u
|
||||
LEFT JOIN course c ON u.course_id = c.course_id
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
cc.course_id,
|
||||
cc.user_id,
|
||||
d.course_details_name,
|
||||
d.course_details_id
|
||||
FROM
|
||||
course_collect cc
|
||||
LEFT JOIN course_details d ON cc.course_details_id = d.course_details_id
|
||||
WHERE
|
||||
cc.classify = 3
|
||||
AND cc.user_id = #{userId}
|
||||
ORDER BY
|
||||
cc.update_time DESC
|
||||
) AS d ON u.course_id = d.course_id
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
d.course_id,
|
||||
COUNT(*) AS course_details_count
|
||||
FROM
|
||||
course_details d
|
||||
GROUP BY
|
||||
d.course_id
|
||||
) AS cd ON c.course_id = cd.course_id
|
||||
LEFT JOIN
|
||||
course c ON u.course_id = c.course_id
|
||||
LEFT JOIN
|
||||
course_details d ON u.course_details_id = d.course_details_id
|
||||
LEFT JOIN
|
||||
course_collect cc ON u.course_id = cc.course_id AND cc.user_id = #{userId} AND cc.classify = 3
|
||||
WHERE
|
||||
u.user_id = #{userId}
|
||||
AND c.course_id IS NOT NULL
|
||||
AND u.classify = #{classify}
|
||||
AND c.course_id IS NOT NULL
|
||||
GROUP BY
|
||||
u.course_id
|
||||
u.course_id, c.course_id, d.course_details_name, d.course_details_id
|
||||
ORDER BY
|
||||
produceEndTime DESC
|
||||
|
||||
|
||||
produceEndTime DESC;
|
||||
|
||||
<!-- SELECT
|
||||
MAX( u.update_time ) AS produceEndTime,
|
||||
|
|
|
|||
Loading…
Reference in New Issue