zjk
2026-09-29 54dcf0a82e7490fa58b1c056d5c0b9cb739c2931
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tcm.training.admin.live.mapper.HealthCourseFavoriteRecordMapper">
 
    <select id="selectAppFavoriteCourses" resultType="com.tcm.training.admin.live.row.AppHealthCourseFavoriteRow">
        SELECT
            latest.course_id AS courseId,
            c.title AS title,
            c.cover_img AS coverImage,
            lc.name AS levelName,
            dc.name AS difficultyName,
            e.name AS teacherName,
            e.avatar AS teacherAvatar,
            c.learn_user_count AS learnUserCount,
            c.studying_count AS studyingCount,
            latest.action_time AS favoritedAt
        FROM (
            SELECT r.course_id, r.action_time, r.id
            FROM tcm_health_course_favorite_record r
            INNER JOIN (
                SELECT course_id, MAX(id) AS max_id
                FROM tcm_health_course_favorite_record
                WHERE app_user_id = #{appUserId}
                GROUP BY course_id
            ) latest_record ON latest_record.max_id = r.id
            WHERE r.app_user_id = #{appUserId}
            AND r.action_type = 'FAVORITE'
        ) latest
        INNER JOIN tcm_health_course c ON c.id = latest.course_id
            AND c.deleted = 0
            AND c.status = 1
        LEFT JOIN tcm_live_course_category lc ON lc.id = c.level_category_id AND lc.deleted = 0
        LEFT JOIN tcm_live_course_category dc ON dc.id = c.difficulty_category_id AND dc.deleted = 0
        LEFT JOIN tcm_expert e ON e.id = c.expert_id AND e.deleted = 0
        ORDER BY latest.action_time DESC, latest.id DESC
    </select>
 
</mapper>