You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

222 lines
8.5 KiB

3 years ago
<?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.ccsens.braintraining.persist.dao.BrainDao">
<resultMap id="QuestionMap" type="com.ccsens.braintraining.bean.vo.BrainVo$QuestionClassify">
<id column="classifyId" property="classifyId"/>
<result column="classifyCode" property="classifyCode"/>
<result column="duration" property="duration"/>
<result column="generate" property="generate"/>
<result column="generateParam" property="generateParam"/>
<collection property="questions" ofType="com.ccsens.braintraining.bean.vo.BrainVo$Question">
<id column="questionId" property="questionId"/>
<collection property="contents" ofType="com.ccsens.braintraining.bean.vo.BrainVo$QuestionContent">
<id column="contentId" property="contentId"/>
<result column="questionContent" property="content"/>
<result column="questionShowType" property="showType"/>
</collection>
<collection property="options" ofType="com.ccsens.braintraining.bean.vo.BrainVo$QuestionOption">
<id column="optionId" property="optionId"/>
<result column="optionContent" property="content"/>
<result column="optionShowType" property="showType"/>
</collection>
</collection>
</resultMap>
<insert id="batchInsertActiveQuestion">
INSERT INTO t_train_active_question ( id, active_user_id, classify_id, question_id, question_content, question_answer, operator )
VALUES
<foreach collection="list" item="item" separator=",">
3 years ago
(#{item.id}, #{item.activeUserId}, #{item.classifyId}, #{item.questionId}, #{item.questionContent}, #{item.questionAnswer}, #{item.operator})
</foreach>
</insert>
<insert id="batchInsertScore">
INSERT INTO t_train_active_score ( id, active_user_id, classify_id, question_id, score )
VALUES
<foreach collection="list" item="item" separator=",">
( #{item.id}, #{item.activeUserId}, #{item.classifyId}, #{item.questionId}, #{item.score} )
</foreach>
</insert>
<insert id="batchInsertLog">
INSERT INTO t_train_active_log ( id, active_user_id, classify_id, question_id, option_content, time, operation_type, operator )
VALUES
<foreach collection="list" item="item" separator=",">
( #{item.id}, #{item.activeUserId}, #{item.classifyId}, #{item.questionId}, #{item.optionContent}, #{item.time}, #{item.operationType}, #{item.operator} )
3 years ago
</foreach>
</insert>
<select id="queryRandom" resultType="java.lang.Long">
SELECT
id
FROM
t_train_question
WHERE
3 years ago
classify_id = #{classifyId}
3 years ago
AND rec_status = 0
ORDER BY
rand()
LIMIT ${num}
</select>
<select id="queryChildRandom" resultType="java.lang.Long">
3 years ago
select * from (
3 years ago
<foreach collection="list" item="item" separator="union">
3 years ago
(SELECT
id
3 years ago
FROM
3 years ago
t_train_question
3 years ago
WHERE
3 years ago
classify_id = #{item.classifyId}
AND rec_status = 0
3 years ago
ORDER BY
3 years ago
rand()
LIMIT ${item.num})
3 years ago
</foreach>
3 years ago
)t order by rand()
3 years ago
</select>
<select id="queryGradeRandom" resultType="java.lang.Long">
3 years ago
select * from (
3 years ago
<foreach collection="list" item="item" separator="union">
3 years ago
(SELECT
3 years ago
id
FROM
t_train_question
WHERE
3 years ago
classify_id = #{classifyId}
3 years ago
AND grade = #{item.grade}
AND rec_status = 0
ORDER BY
rand()
3 years ago
LIMIT ${item.num})
3 years ago
</foreach>
3 years ago
)t order by rand()
3 years ago
</select>
<select id="queryGenerateRules" resultType="com.ccsens.braintraining.bean.vo.BrainVo$GenerateRule">
SELECT
g.id,
g.active_id,
g.classify_id,
g.generate,
g.generate_param,
g.duration,
c.CODE AS classifyCode,
c.NAME AS classifyName
FROM
t_train_rule_generate g,
t_train_classify c
WHERE
g.classify_id = c.id
AND g.active_id = #{activeId}
AND g.rec_status = 0
AND c.rec_status = 0
ORDER BY
g.sort
</select>
<select id="getScore" resultType="java.lang.Integer">
SELECT
sum( score )
FROM
t_train_active_score
WHERE
active_user_id = #{activeUserId}
AND classify_id = #{classifyId}
AND rec_status = 0
</select>
<select id="getQuestion" resultMap="QuestionMap">
SELECT
c.id AS classifyId,
c.CODE AS classifyCode,
g.duration,
g.generate,
g.generate_param AS generateParam,
q.id AS questionId,
3 years ago
IFNULL(qc.id,0) AS contentId,
IFNULL(qc.content, q.question_content) AS questionContent,
IFNULL(qc.show_type,0) AS questionShowType,
3 years ago
o.id AS optionId,
o.content AS optionContent,
o.show_type AS optionShowType
FROM
t_train_active_question q
LEFT JOIN t_train_classify c ON q.classify_id = c.id
AND c.rec_status = 0
LEFT JOIN t_train_rule_generate g ON c.id = g.classify_id
AND g.rec_status = 0
LEFT JOIN t_train_question_content qc ON q.question_id = qc.question_id
AND qc.rec_status = 0
LEFT JOIN t_train_question_option o ON q.question_id = o.question_id
AND o.rec_status = 0
WHERE
q.active_user_id = #{activeUserId}
AND q.classify_id = #{classifyId}
AND q.rec_status = 0
3 years ago
order by q.id, o.sort
3 years ago
</select>
3 years ago
<select id="countRight" resultType="java.lang.Integer">
SELECT
count(*)
FROM
t_train_question_answer a,
t_train_active_question q
<where>
a.question_id = q.question_id
AND q.active_user_id = #{activeUserId}
<foreach collection="list" item="item" open="AND (" separator="or" close=")">
( q.id = #{item.questionId} AND a.content = #{item.answer} )
</foreach>
AND a.rec_status = 0
AND q.rec_status = 0
</where>
</select>
<select id="queryClassifyScores" resultType="com.ccsens.braintraining.bean.vo.BrainVo$ClassifyAnswer">
SELECT
q.classify_id AS classifyId,
aq.id AS questionId,
CASE
<foreach collection="list" item="item">
WHEN aq.id = #{item.questionId} THEN IF( a.content = #{item.answer}, 1, 0 )
</foreach>
ELSE 0
END AS answer
FROM
t_train_active_question aq,
t_train_question q,
t_train_question_answer a
WHERE
aq.question_id = q.id
AND q.id = a.question_id
AND aq.active_user_id = #{activeUserId}
<foreach collection="list" item="item" open="AND aq.id IN (" close=")" separator=",">
#{item.questionId}
</foreach>
AND aq.rec_status = 0
AND q.rec_status = 0
</select>
<select id="queryAnswerSort" resultType="java.lang.String">
SELECT
a.content
FROM
t_train_active_question q,
t_train_question_answer a
WHERE
q.question_id = a.question_id
AND q.id = #{activeQuestionId}
AND q.rec_status = 0
AND a.rec_status = 0
ORDER BY
a.sort ASC
</select>
<select id="queryQuestionAnswers" resultType="com.ccsens.braintraining.bean.vo.BrainVo$QuestionAnswer">
SELECT
q.id AS questionId,
a.content
FROM
t_train_active_question q,
t_train_question_answer a
WHERE
q.question_id = a.question_id
AND q.active_user_id = #{activeUserId}
<foreach collection="list" item="item" open="AND q.id IN (" separator="," close=")">
#{item}
</foreach>
AND a.rec_status = 0
AND q.rec_status = 0
</select>
3 years ago
</mapper>