course.xml
19.6 KB
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
<?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.chuanqi.reading.home.dao.CourseDao">
<sql id="queryCourseVo">
select ci.course_id id, ci.term_id termId, ci.course_name title, date_format(audit_time, '%Y-%m-%d %H:%i') dataTime, count(cg.id) dataCount, NOT ISNULL(t.articleStatus) articleStatus
from course_info ci
left join (select distinct i.course_id, 1 articleStatus from course_info i
join( select course_id from course_relation group by course_id having count(question_type) = 1) cr on i.course_id = cr.course_id
join course_read r on i.course_id = r.course_id and r.read_flag = '1' and r.customer_id=#{userId}) t on ci.course_id = t.course_id
left join course_progress cg on ci.course_id = cg.course_id and cg.customer_id = #{userId}
where ci.audit_status = '1' and ci.course_status = '0'
</sql>
<select id="queryCourseList" resultType="com.chuanqi.reading.home.entity.DataSet"
parameterType="com.chuanqi.reading.home.entity.DataSet">
<!--include refid="queryCourseVo" /-->
select ci.course_id id, ci.term_id termId, ci.course_name title, date_format(audit_time, '%Y-%m-%d %H:%i') dataTime, count(cg.id) dataCount, NOT ISNULL(t.articleStatus) articleStatus
from course_info ci
left join course_progress cg on ci.course_id = cg.course_id and cg.customer_id = #{userId}
left join (select distinct i.course_id, 1 articleStatus from course_info i
join( select course_id from course_relation group by course_id having count(question_type) = 1) cr on i.course_id = cr.course_id
join course_read r on i.course_id = r.course_id and r.read_flag = '1' and r.customer_id=#{userId}) t on ci.course_id = t.course_id
where ci.audit_status = '1' and ci.course_status = '0'
and term_id = #{termId} group by ci.course_id order by sticky_status desc, dataCount, audit_time desc LIMIT #{startIndex},5
</select>
<select id="queryCourseById" resultType="com.chuanqi.reading.home.entity.CourseInfo"
parameterType="long" >
select course_id id, course_name name, term_id termId, course_num num, release_status resultStatus, ifnull(passing_Score,0) passingScore from course_info where course_id = #{id}
</select>
<select id="queryCourseListByRead" resultType="com.chuanqi.reading.home.entity.DataSet"
parameterType="com.chuanqi.reading.home.entity.DataSet">
select ci.course_id id, ci.term_id termId, ci.course_name name, audit_time dateTime, count(cg.id) dataCount, NOT ISNULL(t.articleStatus) articleStatus
from course_info ci
left join course_progress cg on ci.course_id = cg.course_id
left join (select distinct i.course_id, 1 articleStatus from course_info i
join( select course_id from course_relation group by course_id having count(question_type) = 1) cr on i.course_id = cr.course_id
join course_read r on i.course_id = r.course_id and r.read_flag = '1' and r.customer_id=#{userId}) t on ci.course_id = t.course_id
where ci.audit_status = '1' and ci.course_status = '0'
and ci.term_id in(
select term_id from course_term_student where user_id = #{userId}
) and cg.customer_id = #{userId}
group by ci.course_id order by audit_time desc
</select>
<!--查询指定用户已读文章(包含无题目文章和已读不一定答题文章)-->
<select id="queryCourseListByOnlyRead" resultType="com.chuanqi.reading.home.entity.CourseInfo"
parameterType="com.chuanqi.reading.home.entity.SysUser">
SELECT course_id id, course_name NAME FROM course_info WHERE course_id IN (
SELECT DISTINCT course_id FROM course_read WHERE customer_id=#{userId} AND course_id IN (
SELECT course_id FROM course_info ci WHERE ci.audit_status = '1' AND ci.course_status = '0'
AND (ci.term_id IN (SELECT term_id FROM course_term_student WHERE user_id = #{userId}) OR ci.term_id <0)))
ORDER BY audit_time DESC
</select>
<!--获取没有题目的文章阅读的记录-->
<select id="queryByOnlyRead" resultType="com.chuanqi.reading.home.entity.CourseRead" parameterType="java.util.Map">
SELECT id, course_id courseId, category_id categoryId,customer_id customerId, begin_time beginTime, end_time endTime,TIMEDIFF(end_time, begin_time) readFlag
FROM course_read WHERE course_id=#{courseId} AND customer_id=#{userId} AND read_flag=1 order by endTime desc
</select>
<!--获得所有文章按照课程id -->
<select id="queryArticle" resultType="com.chuanqi.reading.home.entity.Article" parameterType="java.util.Map">
SELECT ca.article_id id, ca.article_title title, ca.article_content content, ca.article_time time,
ca.classify_id classifyId, ca.article_label articleLabel
from course_article ca
where article_id in (
SELECT question_id FROM course_relation
where course_id = #{id} and category_id = 1 and classify_id = #{classify}
)LIMIT 1
</select>
<!--获得所有题目查询-->
<select id="queryQuestions" resultType="com.chuanqi.reading.home.entity.Question" parameterType="java.util.Map">
select cc.choice_id id,cr.id relationId,cc.choice_question question,cc.optionA,cc.optionB,cc.optionC,cc.optionD,
cc.optionE, cc.optionF, cc.optionG, cc.optionH, cc.optionI, cc.choice_answer answer,
support_answer support,cc.choice_explain `explain`,cr.category_id categoryId,'choice' type ,cc.choice_score score
from course_relation cr LEFT JOIN course_choice cc on cr.question_id = cc.choice_id where cr.question_type = 'choice' and cr.course_id = #{id}
union
select cf.fill_id id,cr.id relationId,cf.fill_question question,null optionA,null optionB,null optionC,null optionD,
null optionE, null optionF, null optionG, null optionH, null optionI, cf.fill_answer answer,
support_answer support,cf.fill_explain `explain`,cr.category_id categoryId,'fill' type ,cf.fill_score score
from course_relation cr LEFT JOIN course_fill cf on cr.question_id = cf.fill_id where cr.question_type = 'fill' and cr.course_id = #{id}
union
select cj.judge_id id,cr.id relationId,cj.judge_question question,null optionA,null optionB,null optionC,null optionD,
null optionE, null optionF, null optionG, null optionH, null optionI, cj.judge_answer answer,
null support,cj.judge_explain `explain`,cr.category_id categoryId,'judge' type ,cj.judge_score score
from course_relation cr LEFT JOIN course_judge cj on cr.question_id = cj.judge_id where cr.question_type = 'judge' and cr.course_id = #{id}
ORDER BY relationId/*categoryId,type,question_sort*/
</select>
<insert id="saveCourseRead" parameterType="com.chuanqi.reading.home.entity.CourseRead" useGeneratedKeys="true"
keyProperty="id">
insert into course_read(course_id,category_id,customer_id,begin_time,end_time,read_flag)
values (#{courseId},#{categoryId},#{customerId},#{beginTime},#{endTime},#{readFlag})
</insert>
<!--更新阅读记录-->
<update id="updateCourseRead" parameterType="com.chuanqi.reading.home.entity.CourseRead">
update course_read set end_time = #{endTime}, read_flag = #{readFlag} where id = ${id}
</update>
<!--保存完progress记录时,更新阅读记录-->
<update id="updateCourseReadProgress" parameterType="java.util.Map">
update course_read set progress_id = #{progressId}, read_flag = 1 where id in(${ids})
</update>
<insert id="saveCourseProgress" parameterType="com.chuanqi.reading.home.entity.CourseProgress"
useGeneratedKeys="true" keyProperty="id">
insert into course_progress(course_id, customer_id, lookback_num, lookback_time, read_time, answer_rate,
course_status, create_time, begin_time, answer_score, exam_total, answer_right)
values (#{courseId}, #{customerId}, #{lookbackNum}, #{lookbackTime}, #{readTime}, #{answerRate},
#{courseStatus}, #{createTime}, #{beginTime}, #{answerScore}, #{examTotal}, #{answerRight})
</insert>
<select id="queryCourseProgress" resultType="com.chuanqi.reading.home.entity.CourseProgress" parameterType="java.util.Map">
select id, course_id, customer_id, lookback_num lookbackNum, lookback_time lookbackTime, answer_rate answerRate,
read_time readTime, course_status courseStatus, create_Time createTime
from course_progress
where course_id = ${courseId} and customer_id = #{userId} order by createTime
</select>
<insert id="saveCourseAnswer">
insert into course_answer(progress_id, relation_id, customer_id, answer, right_num) values
<foreach item="item" index="index" collection="list" separator=",">
(#{item.progressId}, #{item.relationId}, #{item.customerId}, #{item.answer}, #{item.rightNum})
</foreach>
</insert>
<!--查询公开试卷-->
<select id="queryOpenCourse" resultType="com.chuanqi.reading.home.entity.DataSet"
parameterType="com.chuanqi.reading.home.entity.DataSet">
<include refid="queryCourseVo" />
and term_id = -100 and course_num = #{id} <!-- course_num主题编号 -->
group by ci.course_id order by sticky_status desc, dataCount, audit_time desc LIMIT #{startIndex},5
</select>
<!--查询用户所属培训班-->
<select id="queryUserTermList" resultType="com.chuanqi.reading.home.entity.DataSet"
parameterType="com.chuanqi.reading.home.entity.DataSet">
SELECT id, title, content, userId FROM (
/*##查询自己所属层级单位的所有培训班信息*/
SELECT a.term_id id, term_title title, begin_date, CONCAT(begin_date, ' ~ ', end_date) content, user_id userId FROM course_term a
LEFT JOIN course_term_student b ON a.term_id = b.term_id AND b.status='0' AND b.user_id=#{userId}
WHERE dept_id IN (SELECT dept_id FROM sys_dept WHERE FIND_IN_SET(#{id}, ancestors)>0 OR dept_id IN(#{id},101))
AND a.term_status='0' /*AND CURRENT_DATE BETWEEN begin_date AND end_date*/
/*##查询自己所在培训班但是该班级不在所属机构下*/
UNION
SELECT t.term_id id, term_title title, begin_date, CONCAT(begin_date, ' ~ ', end_date) content, user_id userId
FROM course_term_student ts ,course_term t
WHERE ts.term_id=t.term_id AND ts.user_id=#{userId}
AND t.term_status='0' /*AND CURRENT_DATE BETWEEN begin_date AND end_date*/
AND t.dept_id NOT IN (SELECT dept_id FROM sys_dept WHERE FIND_IN_SET(#{id}, ancestors)>0)
) temp ORDER BY userId DESC, begin_date LIMIT #{startIndex},5
</select>
<select id="queryTermById" resultType="com.chuanqi.reading.home.entity.DataSet" parameterType="long">
SELECT term_id id, term_title title FROM course_term WHERE term_id = #{termId}
</select>
<sql id="queryMediaVo">
SELECT media_id id, media_name title, media_desc content, media_link remark, media_image search,
date_format(ifnull(update_time, create_time), '%Y-%m-%d %H:%i') dataTime
FROM course_media
</sql>
<select id="queryMediaList" resultType="com.chuanqi.reading.home.entity.DataSet"
parameterType="com.chuanqi.reading.home.entity.DataSet">
<include refid="queryMediaVo" />
WHERE media_status='0' and theme_id=#{id} ORDER BY media_num LIMIT #{startIndex},5
</select>
<select id="queryMediaById" resultType="com.chuanqi.reading.home.entity.DataSet" parameterType="long">
<include refid="queryMediaVo" />
WHERE media_id = #{mediaId}
</select>
<select id="queryThemeList" resultType="com.chuanqi.reading.home.entity.DataSet"
parameterType="com.chuanqi.reading.home.entity.DataSet">
SELECT theme_id id, theme_name title FROM course_theme
WHERE theme_status='0' and theme_type=#{remark} ORDER BY theme_num LIMIT #{startIndex},5
</select>
<select id="queryThemeById" resultType="com.chuanqi.reading.home.entity.DataSet" parameterType="long">
SELECT theme_id id, theme_name title FROM course_theme WHERE theme_id = #{themeId}
</select>
<!-- 统计培训班个数 -->
<select id="getClassCount" resultType="int">
SELECT COUNT(DISTINCT term_id) FROM course_term
</select>
<!-- 统计培训学员个数 -->
<select id="getStudentCount" resultType="int">
SELECT COUNT(DISTINCT user_id) FROM course_term_student
</select>
<!-- 统计培训部门下的培训班和班级人数 -->
<select id="getTermListByDeptId" parameterType="long" resultType="com.chuanqi.reading.home.entity.Term">
SELECT theme_id termId, theme_name termTitle, 0 userSum, '2019-01-01' begin_date FROM course_theme WHERE theme_type=1
UNION ALL
SELECT t.term_id termId, term_title termTitle, IFNULL(user_count, 0) userSum, begin_date FROM course_term t
LEFT JOIN (SELECT term_id, COUNT(user_id) user_count FROM course_term_student GROUP BY term_id) ts
ON t.term_id=ts.term_id WHERE term_status=0 ORDER BY begin_date <!-- AND t.dept_id=#{deptId} -->
</select>
<!-- 根据班级ID查询班级信息 -->
<select id="getTermById" parameterType="long" resultType="com.chuanqi.reading.home.entity.Term">
SELECT term_id termId, term_title termTitle FROM course_term WHERE term_id=#{termId}
</select>
<!--查询个人明细-公共培训-->
<select id="queryPublicDetailForList" parameterType="java.util.Map" resultType="com.chuanqi.reading.home.entity.Details">
SELECT t1.course_id courseId, ci.course_name courseName, DATE_FORMAT(t1.begin_time, '%Y-%m-%d %H:%i:%s') beginTime,
useTime, answer_rate answerRate FROM (
SELECT course_id,begin_time, TIMEDIFF(create_time, begin_time) useTime, answer_rate FROM course_progress
WHERE course_id IN (SELECT course_id FROM course_info WHERE term_id < 0) AND customer_id=#{userId}
UNION ALL
SELECT course_id, begin_time, TIMEDIFF(end_time, begin_time) useTime,'-' AS answer_rate FROM course_read
WHERE course_id IN (SELECT course_id FROM course_info WHERE term_id < 0) AND read_flag=1 AND customer_id=#{userId}
) t1 , course_info ci WHERE t1.course_id=#{courseId} and ci.course_id = #{courseId} ORDER BY t1.begin_time DESC LIMIT #{startIndex},5
</select>
<!--查询个人-专项培训-->
<select id="queryTermSpecialForList" parameterType="java.util.Map" resultType="com.chuanqi.reading.home.entity.Term">
select t.term_id termId, term_title termTitle
from course_term t
where exists(select * from course_read r inner join
course_info i on i.course_id=r.course_id and r.customer_id=#{userId} inner join
course_progress p on r.progress_id=p.id and r.read_flag=1 and p.customer_id = #{userId}
where i.term_id = t.term_id ) OR
exists(select * from course_read cr inner join
v_course_article v on cr.course_id = v.course_id and cr.customer_id = #{userId} and cr.read_flag = 1 where t.term_id =v.term_id)
order by t.begin_date desc LIMIT #{startIndex},5
</select>
<!--查询个人明细专项培训-->
<select id="querySpecialDetailForList" parameterType="java.util.Map" resultType="com.chuanqi.reading.home.entity.Details">
SELECT t1.course_id courseId, ci.course_name courseName, DATE_FORMAT(t1.begin_time, '%Y-%m-%d %H:%i:%s') beginTime,
useTime, answer_rate answerRate FROM (
SELECT course_id,begin_time, TIMEDIFF(create_time, begin_time) useTime, answer_rate FROM course_progress
WHERE course_id = #{courseId} and course_id IN (SELECT course_id FROM course_info WHERE term_id > 0 ) AND customer_id=#{userId}
UNION ALL
SELECT course_id, begin_time, TIMEDIFF(end_time, begin_time) useTime,'-' AS answer_rate FROM course_read
WHERE course_id NOT IN (SELECT course_id FROM course_info WHERE term_id < 0)
AND course_id NOT IN (SELECT DISTINCT course_id FROM course_progress WHERE customer_id=#{userId})
AND read_flag=1 AND customer_id=#{userId} and course_id = #{courseId}
) t1 , course_info ci WHERE t1.course_id=ci.course_id and ci.term_id= #{termId} ORDER BY t1.begin_time DESC LIMIT #{startIndex},7
</select>
<!--查询个人概况-时长、篇数、成绩:按照当天最高算-->
<select id="queryPersonalLogForList" parameterType="long" resultType="com.chuanqi.reading.home.entity.DataSet">
SELECT DATE_FORMAT(dataTime, '%m-%d') AS dataTime, termId, dataCount, search FROM (
SELECT DATE_FORMAT(begin_time, '%Y-%m-%d') dataTime,
SUM(TIMESTAMPDIFF(SECOND,begin_time,create_time)) termId,
COUNT(customer_id) dataCount,
MAX(CONVERT(answer_rate,DECIMAL(5,2))) search
FROM course_progress WHERE customer_id=#{0} GROUP BY dataTime ORDER BY dataTime DESC
) t ORDER BY dataTime LIMIT #{startIndex}, 5
</select>
<select id="getSpecialTermCourseSumById" parameterType="long" resultType="com.chuanqi.reading.home.entity.TermCourse">
SELECT i.term_id termId, count(*) courseNum,
CONCAT(SUM(TIMESTAMPDIFF(SECOND, r.begin_time, IFNULL(p.create_time, r.end_time))) div 60, ':', LPAD(SUM(TIMESTAMPDIFF(SECOND, r.begin_time, IFNULL(p.create_time, r.end_time))) mod 60, 2, '0')) TimeTotal
FROM course_read r
INNER JOIN course_info i ON r.course_id = i.course_id AND i.term_id = #{termId}
LEFT JOIN course_progress p on p.course_id = r.course_id and p.customer_id = #{userId} and r.progress_Id=p.Id
LEFT JOIN v_course_article v ON v.course_id = r.course_id
WHERE r.customer_id = #{userId} and r.read_flag = 1 and (r.progress_id IS NOT NULL or v.course_name is not null)
GROUP BY i.term_id
</select>
<!--查询个人概况- 专项培训 完成的课程列表-->
<select id="getSpecialTermCourseList" parameterType="long" resultType="com.chuanqi.reading.home.entity.CourseInfo">
SELECT ci.course_id id, ci.course_name name, ci.course_num num, ci.term_id termId
from course_info ci where ci.term_Id=#{termId} and
(exists(select * from v_course_article ca inner join
course_read cr on ca.course_id = cr.course_id and cr.read_flag = 1 and cr.customer_id = #{userId} where ci.course_id=cr.course_id) OR
exists(select * from course_read r inner join
course_progress cp on r.progress_id = cp.id and r.read_flag = 1 and r.customer_id = #{userId} where ci.course_id=r.course_id ))
</select>
<!--查询个人概况- 公开培训 主题列表-->
<select id="getPubThemeList" parameterType="long" resultType="com.chuanqi.reading.home.entity.Theme">
select ct.theme_id themeId, ct.theme_name themeName
from course_theme ct
where exists(select * from course_info ci inner join course_read cr on ci.course_id = cr.course_id and cr.customer_id = #{userId} and cr.read_flag = 1
where ci.course_num = ct.theme_id and ci.term_id < 0 )
</select>
<select id="getPubThemeById" parameterType="long" resultType="com.chuanqi.reading.home.entity.Theme">
select ct.theme_id themeId, ct.theme_name themeName
from course_theme ct where ct.theme_id = #{themeId}
</select>
<select id="getPubThemeCourseSumById" parameterType="long" resultType="com.chuanqi.reading.home.entity.ThemeCourse">
SELECT ci.course_num themeId, count(*) AS courseNum,
CONCAT(SUM(TIMESTAMPDIFF(SECOND, cr.begin_time, IFNULL(p.create_time, cr.end_time))) div 60,':', LPAD(SUM(TIMESTAMPDIFF(SECOND, cr.begin_time, IFNULL(p.create_time, cr.end_time))) mod 60, 2, '0')) TimeTotal
FROM course_read cr INNER JOIN course_info ci ON cr.course_id = ci.course_id AND ci.term_id < 0 LEFT JOIN
v_course_article va ON cr.course_id = va.course_id LEFT JOIN course_progress p ON p.course_id = cr.course_id AND p.customer_id = #{userId} AND cr.progress_Id = p.Id
WHERE cr.customer_id = #{userId} AND cr.read_flag = 1 AND ci.course_num = #{themeId}
AND (cr.progress_id IS NOT NULL OR va.course_name IS NOT NULL)
GROUP BY course_num
</select>
<select id="getPubThemeCourseList" parameterType="long" resultType="com.chuanqi.reading.home.entity.CourseInfo">
select ci.course_id id, ci.course_name name, ci.course_num themeId
from course_info ci
where ci.course_num = #{themeId} and ci.term_id < 0 and
exists(select * from course_read cr left join v_course_article va on cr.course_id = va.course_id
where cr.customer_id = #{userId} and cr.read_flag = 1 and (NOT ISNULL(cr.progress_id) or NOT ISNULL(va.course_name)) and cr.course_id =ci.course_id)
</select>
</mapper>