fuliqi
2024-10-17 8546b3d285af4235a0ef615a0c6e89486ae2c806
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<?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.ycl.jxkg.mapper.QuestionMapper">
 
    <resultMap id="BaseResultMap" type="com.ycl.jxkg.domain.entity.Question">
        <id column="id" jdbcType="INTEGER" property="id"/>
        <result column="question_type" jdbcType="INTEGER" property="questionType"/>
        <result column="subject_id" jdbcType="INTEGER" property="subjectId"/>
        <result column="difficult" jdbcType="INTEGER" property="difficult"/>
        <result column="correct" jdbcType="VARCHAR" property="correct"/>
        <result column="content" jdbcType="VARCHAR" property="content"/>
        <result column="create_user" jdbcType="INTEGER" property="createUser"/>
        <result column="status" jdbcType="INTEGER" property="status"/>
        <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
        <result column="deleted" jdbcType="BIT" property="deleted"/>
    </resultMap>
    <sql id="Base_Column_List">
        id
        , question_type, subject_id, difficult, correct, content, create_user, status, create_time, deleted
    </sql>
 
    <select id="page" resultType="com.ycl.jxkg.domain.vo.admin.question.QuestionResponseVO"
            parameterType="com.ycl.jxkg.domain.vo.admin.question.QuestionPageRequestVO">
        SELECT
        tq.*,
        CASE WHEN tq.question_type = 1 THEN '单选题'
        WHEN tq.question_type = 2 THEN '多选题'
        WHEN tq.question_type = 3 THEN '判断题'
        WHEN tq.question_type = 4 THEN '填空题'
        WHEN tq.question_type = 5 THEN '简答题'
        WHEN tq.question_type = 6 THEN '语音题'
        WHEN tq.question_type = 7 THEN '计算题'
        WHEN tq.question_type = 8 THEN '分析题'
        END AS questionTypeName,
        ts.name AS subjectName,
        tu.real_name AS createUserName
        FROM t_question tq
        LEFT JOIN t_subject ts ON tq.subject_id = ts.id
        LEFT JOIN t_user tu ON tq.create_user = tu.id
        <where>
            and tq.deleted = 0
            <if test="id != null">
                and tq.id = #{id}
            </if>
            <if test="status != null">
                and tq.status = #{status}
            </if>
            <if test="subjectId != null and subjectId.size() > 0">
                and tq.subject_id in
                <foreach collection="subjectId" item="item" separator="," open="(" close=")">#{item}</foreach>
            </if>
            <if test="questionType != null and questionType.size() > 0">
                and tq.question_type in
                <foreach collection="questionType" item="item" separator="," open="(" close=")">#{item}</foreach>
            </if>
            <if test="content != null and content != ''">
                and instr(tq.content, #{content})
            </if>
        </where>
    </select>
 
 
    <select id="selectByIds" resultMap="BaseResultMap">
        SELECT
        <include refid="Base_Column_List"/>
        FROM t_question where id in
        <foreach item="id" collection="ids" open="(" separator=","
                 close=")">
            #{id}
        </foreach>
    </select>
 
 
    <select id="selectAllCount" resultType="java.lang.Integer">
        SELECT count(*)
        from t_question
        where deleted = 0
    </select>
 
    <select id="selectCountByDate" resultType="com.ycl.jxkg.domain.other.KeyValue">
        SELECT create_time as name, COUNT(create_time) as value
        from
            (
            SELECT DATE_FORMAT(create_time, '%Y-%m-%d') as create_time from t_question
            WHERE deleted=0 and create_time between #{startTime} and #{endTime}
            ) a
        GROUP BY create_time
    </select>
 
    <select id="getAnswerInfo" resultType="com.ycl.jxkg.domain.entity.Question">
        SELECT id, question_type, correct FROM t_question WHERE id in
        <foreach collection="questionIds" open="(" item="id" close=")" separator=",">#{id}</foreach>
    </select>
 
    <select id="selectByDifAndSub" resultType="java.lang.Integer">
            SELECT COUNT(*) FROM t_question
            <where>
                deleted = 0 and status = 1
                <if test="subjectId!=null">and subject_id = #{subjectId}</if>
                <if test="difficult!=null">AND difficult = #{difficult}</if>
                <if test="questionType!=null">AND question_type = #{questionType}</if>
            </where>
 
    </select>
 
    <select id="getRandomQuestion" resultMap="BaseResultMap">
        SELECT
               *
        FROM
             t_question tq
        <where>
            tq.deleted = 0 and tq.status = 1
            <if test="subjectId!=null">and tq.subject_id = #{subjectId}</if>
            <if test="difficult!=null">AND tq.difficult = #{difficult}</if>
            <if test="questionType!=null">AND tq.question_type = #{questionType}</if>
        </where>
        ORDER BY
        RAND()
        LIMIT #{num}
    </select>
 
    <resultMap id="exportDataMap"  type="com.ycl.jxkg.domain.vo.admin.exam.QuestionExportData">
        <result column="question_type" property="questionType"/>
        <result column="title" property="title"/>
        <result column="analyze" property="analyze"/>
        <result column="content" property="content"/>
        <result column="correct" property="answer"/>
        <collection property="subjectList" column="id" ofType="string" select="selectSubjects"/>
    </resultMap>
 
    <select id="export" resultType="com.ycl.jxkg.domain.vo.admin.exam.ExamPaperImportVO">
        SELECT
            q.*,
            s.NAME AS SUBJECT
        FROM t_question q
        LEFT JOIN t_subject s ON subject_id = s.id
        ORDER BY q.id
    </select>
 
</mapper>