316 lines
12 KiB
XML
316 lines
12 KiB
XML
<?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="UnivClassMessage">
|
|
|
|
|
|
<insert id="insertUnivClassMessage" parameterType="UnivClassMessage">
|
|
INSERT INTO UnivClassMessage ( classMessageId, content, teacherId, created,
|
|
startTime, endTime, status , areaid )
|
|
Values ( #{classMessageId}, #{content}, #{teacherId},current_timestamp,
|
|
#{startTime}, #{endTime}, #{status} , #{areaid} )
|
|
</insert>
|
|
|
|
<update id="updateUnivClassMessage" parameterType="UnivClassMessage">
|
|
UPDATE UnivClassMessage
|
|
SET classMessageId = #{classMessageId}, content = #{content},
|
|
teacherId = #{teacherId}, created = #{created},
|
|
startTime = #{startTime}, endTime = #{endTime}, status = #{status} ,
|
|
areaid = #{areaid}
|
|
where classMessageId=#{classMessageId}
|
|
</update>
|
|
|
|
<select id="getUnivClassMessageByKey" parameterType="java.lang.Integer" resultType="UnivClassMessage">
|
|
SELECT classMessageId , content , teacherId , created ,
|
|
startTime , endTime , status , areaid
|
|
FROM UnivClassMessage
|
|
WHERE classMessageId=#{classMessageId}
|
|
</select>
|
|
|
|
<select id="getSeqUnivClassMessage" resultType="Integer" useCache="false" flushCache="true">
|
|
SELECT nextval('seq_UnivclassMessageId')
|
|
</select>
|
|
|
|
|
|
<select id="getUnivClassMessagesCountByTeacherId" parameterType="java.util.Map" resultType="Integer">
|
|
SELECT count(*) as howmuch
|
|
from UnivClassMessage
|
|
WHERE teacherId=#{teacherId}
|
|
and status = 1 and areaid = #{areaid}
|
|
</select>
|
|
|
|
<select id="getUnivClassMessagesByTeacherId" parameterType="java.util.Map" resultType="UnivClassMessage">
|
|
SELECT classMessageId , content , teacherId , created ,
|
|
startTime , endTime , status , areaid
|
|
FROM UnivClassMessage
|
|
WHERE teacherId=#{teacherId}
|
|
and status = 1 and areaid = #{areaid}
|
|
ORDER BY classMessageId desc
|
|
LIMIT #{pageSize} OFFSET #{offset}
|
|
</select>
|
|
|
|
<update id="UnivclassMessageBatchUpdateByClassMessageId" parameterType="java.util.List" >
|
|
UPDATE UnivClassMessage
|
|
SET status = 0
|
|
WHERE classMessageId in
|
|
<foreach collection="list" index="index" item="item" separator="," close=")" open="(">
|
|
#{item}
|
|
</foreach>
|
|
</update>
|
|
|
|
<select id="getUnivClassMessagesCountByClassesId" parameterType="java.lang.Long" resultType="Integer">
|
|
SELECT count(*) as howmuch
|
|
FROM UnivClassOwnMessage a
|
|
INNER JOIN UnivClassMessage b
|
|
ON a.classesId = #{classesId} and a.classMessageId = b.classMessageId
|
|
WHERE b.status = 1
|
|
</select>
|
|
|
|
<select id="getUnivClassMessagesByClassesId" parameterType="java.util.Map" resultType="ClassMessage">
|
|
SELECT b.classMessageId , b.content , b.teacherId , b.created ,
|
|
b.startTime , b.endTime , b.status , b.areaid
|
|
FROM UnivClassOwnMessage a
|
|
INNER JOIN UnivClassMessage b
|
|
ON a.classesId = #{classesId} and a.classMessageId = b.classMessageId
|
|
WHERE b.status = 1
|
|
ORDER BY b.classMessageId desc
|
|
LIMIT #{pageSize} OFFSET #{offset}
|
|
</select>
|
|
|
|
<select id="getLastUnivClassMessage" parameterType="Long" resultType="ClassMessage">
|
|
SELECT b.classMessageId , b.content , b.teacherId , b.created ,
|
|
b.startTime , b.endTime , b.status , b.areaid
|
|
FROM UnivClassOwnMessage a
|
|
INNER JOIN UnivClassMessage b
|
|
ON a.classesId = #{classesId}
|
|
AND a.classMessageId = b.classMessageId
|
|
ORDER BY b.classMessageId desc
|
|
LIMIT 1
|
|
</select>
|
|
|
|
<select id="getLastUnivMessageByStudentId" parameterType="Long" resultType="ClassMessage">
|
|
SELECT b.classMessageId , b.content , b.teacherId , b.created ,
|
|
b.startTime , b.endTime , b.status , b.areaid
|
|
FROM UnivClassOwnMessage a
|
|
INNER JOIN UnivClassMessage b
|
|
ON a.classMessageId = b.classMessageId
|
|
INNER JOIN UnivStudentOwnClass s
|
|
on s.classesid = a.classesid and s.studentid = #{studentId}
|
|
ORDER BY b.classMessageId desc
|
|
LIMIT 1
|
|
</select>
|
|
|
|
<select id="getUnivClassMessagesCountByStudentId" parameterType="java.util.Map" resultType="Integer">
|
|
SELECT count( distinct d.classmessageId ) as howmuch
|
|
FROM ( select n.classesId
|
|
from UnivStudentownClass m
|
|
INNER JOIN UnivClasses n
|
|
ON m.classesid = n.classesId and m.status =1 and n.status =1
|
|
where m.studentId = #{studentId} and m.areaid = #{areaid} ) as a
|
|
INNER JOIN UnivClassOwnMessage c
|
|
ON a.classesid = c.classesId
|
|
INNER JOIN UnivClassMessage d
|
|
ON c.classmessageId = d.classmessageid and d.status =1
|
|
|
|
</select>
|
|
|
|
<select id="getUnivClassMessagesByStudentId" parameterType="java.util.Map" resultType="UnivClassMessage">
|
|
SELECT distinct d.classMessageId , d.content , d.teacherId , d.created ,
|
|
d.startTime , d.endTime , d.status , d.areaid
|
|
FROM ( select n.classesId
|
|
from UnivStudentownClass m
|
|
INNER JOIN UnivClasses n
|
|
ON m.classesid = n.classesId and m.status =1 and n.status =1
|
|
where m.studentId = #{studentId} and m.areaid = #{areaid} ) as a
|
|
INNER JOIN UnivClassOwnMessage c
|
|
ON a.classesid = c.classesId
|
|
INNER JOIN UnivClassMessage d
|
|
ON c.classmessageId = d.classmessageid and d.status =1
|
|
ORDER BY d.classMessageId desc
|
|
LIMIT #{pageSize} OFFSET #{offset}
|
|
</select>
|
|
<select id="getSystemMessageNotReadCount" parameterType="java.util.List" resultType="java.lang.Integer">
|
|
select count(*) from univsystemmessage where status=1
|
|
<if test="list!=null">
|
|
and systemmessageid not in
|
|
<foreach collection="list" index="index" item="item" separator="," open ="(" close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if>
|
|
</select>
|
|
|
|
|
|
<select id="getUnivClassMessagesNotReadByStudentId" parameterType="java.util.Map" resultType="java.lang.Integer">
|
|
SELECT count(distinct d.classMessageId )
|
|
FROM ( select n.classesId
|
|
from UnivStudentownClass m
|
|
INNER JOIN UnivClasses n
|
|
ON m.classesid = n.classesId and m.status =1 and n.status =1
|
|
where m.studentId = #{studentId} ) as a
|
|
INNER JOIN UnivClassOwnMessage c
|
|
ON a.classesid = c.classesId
|
|
INNER JOIN UnivClassMessage d
|
|
ON c.classmessageId = d.classmessageid and d.status =1
|
|
<if test="ids!=null">
|
|
and d.classmessageId not in
|
|
<foreach collection="ids" index="index" item="item" separator="," open ="(" close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if>
|
|
|
|
|
|
</select>
|
|
|
|
|
|
<select id="getUnivClassMessagesNotReadByTeacherId" parameterType="java.util.Map" resultType="java.lang.Integer">
|
|
SELECT count(distinct classMessageId )
|
|
|
|
FROM UnivClassMessage
|
|
WHERE teacherId=#{teacherId}
|
|
and status = 1
|
|
<if test="ids!=null">
|
|
and classmessageId not in
|
|
<foreach collection="ids" index="index" item="item" separator="," open ="(" close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if>
|
|
|
|
</select>
|
|
|
|
|
|
|
|
<select id="getMessagesCountByTeacherId" parameterType="java.util.Map" resultType="java.lang.Integer">
|
|
with temp as (SELECT count(*) as howmuch
|
|
from UnivClassMessage
|
|
WHERE teacherId=#{teacherId}
|
|
and status = 1
|
|
<if test="classMessageIds!=null">
|
|
and classMessageId not in
|
|
<foreach collection="classMessageIds" index="index" item="item" separator="," open ="(" close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if>
|
|
|
|
)
|
|
,
|
|
temp2 as(select count(*) howmuch from univsystemmessage where status=1
|
|
<if test="systemMessageIds!=null">
|
|
and systemmessageId not in
|
|
<foreach collection="systemMessageIds" index="index" item="item" separator="," open ="(" close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if>
|
|
)
|
|
select t.howmuch+t1.howmuch from temp t,temp2 t1
|
|
|
|
</select>
|
|
|
|
<select id="getMessagesByTeacherId" parameterType="java.util.Map" resultType="java.util.Map">
|
|
SELECT classMessageId as "classMessageId" ,'' as title, content , teacherId as "teacherId", created ,
|
|
startTime as "startTime" , endTime as "endTime" , status , areaid ,'' as sysmesspic
|
|
FROM UnivClassMessage
|
|
WHERE teacherId=#{teacherId}
|
|
and status = 1
|
|
<if test="classMessageIds!=null">
|
|
and classMessageId not in
|
|
<foreach collection="classMessageIds" index="index" item="item" separator="," open ="(" close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if>
|
|
|
|
union all
|
|
select systemmessageId as "classMessageId",title,content,0 as "teacherId" ,created,null as "startTime" , null as "endTime"
|
|
, status ,0 as areaid ,sysmesspic
|
|
|
|
from univsystemmessage where status=1
|
|
<if test="systemMessageIds!=null">
|
|
and systemmessageId not in
|
|
<foreach collection="systemMessageIds" index="index" item="item" separator="," open ="(" close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if>
|
|
|
|
ORDER BY created desc , "classMessageId"
|
|
|
|
<if test="pageSize!=null">
|
|
LIMIT #{pageSize}
|
|
</if>
|
|
<if test="offset!=null">
|
|
OFFSET #{offset}
|
|
</if>
|
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
<select id="getMessagesCountByStudentId" parameterType="java.util.Map" resultType="java.lang.Integer">
|
|
with temp as (SELECT count (distinct d.classMessageId) as howmuch
|
|
FROM ( select n.classesId
|
|
from UnivStudentownClass m
|
|
INNER JOIN UnivClasses n
|
|
ON m.classesid = n.classesId and m.status =1 and n.status =1
|
|
where m.studentId = #{studentId} ) as a
|
|
INNER JOIN UnivClassOwnMessage c
|
|
ON a.classesid = c.classesId
|
|
INNER JOIN UnivClassMessage d
|
|
ON c.classmessageId = d.classmessageid and d.status =1
|
|
<if test="classMessageIds!=null">
|
|
and d.classMessageId not in
|
|
<foreach collection="classMessageIds" index="index" item="item" separator="," open ="(" close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if>),
|
|
temp2 as(select count(*) howmuch from univsystemmessage where status=1
|
|
<if test="systemMessageIds!=null">
|
|
and systemmessageId not in
|
|
<foreach collection="systemMessageIds" index="index" item="item" separator="," open ="(" close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if>)
|
|
select t.howmuch+t1.howmuch from temp t,temp2 t1
|
|
|
|
</select>
|
|
|
|
<select id="getMessagesByStudentId" parameterType="java.util.Map" resultType="UnivClassMessage">
|
|
SELECT distinct d.classMessageId as "classMessageId" ,'' as title, d.content , d.teacherId as "teacherId", d.created ,
|
|
d.startTime as "startTime" , d.endTime as "endTime" , d.status , d.areaid ,'' as sysmesspic
|
|
FROM ( select n.classesId
|
|
from UnivStudentownClass m
|
|
INNER JOIN UnivClasses n
|
|
ON m.classesid = n.classesId and m.status =1 and n.status =1
|
|
where m.studentId = #{studentId} ) as a
|
|
INNER JOIN UnivClassOwnMessage c
|
|
ON a.classesid = c.classesId
|
|
INNER JOIN UnivClassMessage d
|
|
ON c.classmessageId = d.classmessageid and d.status =1
|
|
<if test="classMessageIds!=null">
|
|
and d.classMessageId not in
|
|
<foreach collection="classMessageIds" index="index" item="item" separator="," open ="(" close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if>
|
|
|
|
union all
|
|
select systemmessageId as "classMessageId",title,content,0 as "teacherId" ,created,null as "startTime" , null as "endTime"
|
|
, status ,0 as areaid ,sysmesspic
|
|
|
|
from univsystemmessage where status=1
|
|
<if test="systemMessageIds!=null">
|
|
and systemmessageId not in
|
|
<foreach collection="systemMessageIds" index="index" item="item" separator="," open ="(" close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if>
|
|
|
|
ORDER BY created desc , "classMessageId"
|
|
<if test="pageSize!=null">
|
|
LIMIT #{pageSize}
|
|
</if>
|
|
<if test="offset!=null">
|
|
OFFSET #{offset}
|
|
</if>
|
|
|
|
</select>
|
|
|
|
</mapper> |