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