spokenServer/out/production/pcserver/sqlmap/UnivClassMessage.xml
2026-03-10 14:30:24 +08:00

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>