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
40
41
42
43
44
45
46
<?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.LiveSessionQuizRecordMapper">
 
    <!-- 答题记录分页列表(动态筛选) -->
    <select id="selectQuizPage"
            resultType="com.tcm.training.admin.live.vo.LiveQuizRow">
        SELECT
            r.id, r.app_user_id AS userId,
            s.nickname AS userNickname,
            s.phone    AS userPhone,
            q.sort           AS questionSort,
            q.stem           AS stem,
            r.chosen_option  AS chosenOption,
            q.correct_option AS correctOption,
            r.is_correct     AS isCorrect,
            r.points_earned  AS pointsEarned,
            r.answered_at    AS answeredAt
        FROM tcm_live_session_quiz_record r
        LEFT JOIN tcm_app_user s ON s.id = r.app_user_id AND s.deleted = 0
        LEFT JOIN tcm_live_session_question q ON q.id = r.question_id AND q.deleted = 0
        WHERE r.session_id = #{sessionId}
        <if test="keyword != null and keyword.trim() != ''">
            AND (s.nickname LIKE CONCAT('%', #{keyword}, '%')
              OR s.phone    LIKE CONCAT('%', #{keyword}, '%'))
        </if>
        <if test="isCorrect != null">
            AND r.is_correct = #{isCorrect}
        </if>
        ORDER BY r.id DESC
    </select>
 
    <!-- 查询同一用户在同一直播课同一答题自然日是否已获得过积分 -->
    <select id="countAwardedCourseQuizPoints" resultType="java.lang.Integer">
        SELECT COUNT(1)
        FROM tcm_live_session_quiz_record r
        INNER JOIN tcm_live_session s ON s.id = r.session_id AND s.deleted = 0
        WHERE s.live_course_id = #{courseId}
          AND r.app_user_id = #{userId}
          AND r.points_earned > 0
          AND r.answered_at <![CDATA[>=]]> #{dayStart}
          AND r.answered_at <![CDATA[<]]> #{dayEnd}
    </select>
 
</mapper>