2026-03-10 16:40:19 +08:00

536 lines
21 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="com._3e.dao.ClassesDao">
<select id= "getNextSeqClassmessage" resultType="int">
SELECT NEXTVAL('seq_classmessageid')
</select>
<select id= "getNextSeqClass" resultType="int">
SELECT NEXTVAL('seq_classesid')
</select>
<select id= "findClassesByID" parameterType="long" resultType="com._3e.entity.Classes" >
SELECT * FROM classes WHERE classesid = #{classesid}
</select>
<select id= "findClassesByNameAndTeacher" parameterType="map" resultType="com._3e.entity.Classes" >
SELECT * FROM classes WHERE classname = #{className} and teacherid = #{teacherId} and status = 1
</select>
<insert id= "doSave" parameterType="com._3e.entity.Classes" >
INSERT INTO classes(
classesid, classlevel, classname, description, schoolyear, classorder,
schoolid, areaid, teacherid, classtype, status, source)
VALUES (
<if test="classesid == 0">
(SELECT NEXTVAL('seq_classesid')),
</if>
<if test="classesid != 0">
#{classesid},
</if>
#{classlevel}, #{classname}, #{description}, #{schoolyear}, #{classorder},
#{schoolid}, #{areaid}, #{teacherid}, #{classtype}, #{status}, #{source})
</insert>
<insert id= "doSaveClass" parameterType="com._3e.entity.Classes" >
INSERT INTO classes(
classesid, classlevel, classname, description, schoolyear, classorder,
schoolid, areaid, teacherid, classtype, status, source)
VALUES (
#{classesid},
#{classlevel}, #{classname}, #{description}, #{schoolyear}, #{classorder},
#{schoolid}, #{areaid}, #{teacherid}, #{classtype}, #{status}, #{source})
</insert>
<update id= "doUpdateSave" parameterType="com._3e.entity.Classes">
UPDATE classes
<set>
<if test="classlevel != null">
classlevel = #{classlevel},
</if>
<if test="classname != null">
classname = #{classname},
</if>
<if test="description != null">
description = #{description},
</if>
<if test="schoolyear != null">
schoolyear = #{schoolyear},
</if>
<if test="classorder != null">
classorder = #{classorder},
</if>
<if test="schoolid != null">
schoolid = #{schoolid},
</if>
<if test="areaid != null">
areaid = #{areaid},
</if>
<if test="teacherid != null">
teacherid = #{teacherid},
</if>
<if test="classtype != null">
classtype = #{classtype},
</if>
<if test="status != null">
status = #{status},
</if>
<if test="source != null">
source = #{source}
</if>
</set>
WHERE classesid=#{classesid}
</update>
<select id= "findSchoolByClassid" parameterType="long" resultType="com._3e.entity.School" >
SELECT * FROM school WHERE schoolid = (select schoolid from classes where classesid = #{classesid})
</select>
<select id= "findStudentsByClassid_1" parameterType="long" resultType="com._3e.entity.Student" >
SELECT a.*,u.goldmedalcount,u.userlevel FROM student a
INNER JOIN userhonor u on a.studentid=u.uid
WHERE studentid in (SELECT b.studentid from studentownclass b where b.classesid = #{classesid} and b.status = 1)
order by u.goldmedalcount desc nulls last,a.studentid
</select>
<select id= "findStudentsByClassid_map" parameterType="map" resultType="com._3e.entity.Student" >
with temp AS (
select s.* from studentownclass st INNER JOIN student s on st.studentid = s.studentid and s.areaid = #{areaId}
where st.areaid = #{areaId} and st.classesid = #{classesId} and st.status = 1
)
SELECT a.*,u.goldmedalcount,u.userlevel FROM temp a INNER JOIN userhonor u on a.studentid=u.uid where u.areaid = #{areaId}
order by u.goldmedalcount desc nulls last,a.studentid
</select>
<select id= "findStudentsByClassid_map3" parameterType="map" resultType="com._3e.http.myspace.dto._3EResClassMates" >
with temp AS (
select s.* from studentownclass st INNER JOIN student s on st.studentid = s.studentid and s.areaid = #{areaId}
where st.areaid = #{areaId} and st.classesid = #{classesId} and st.status = 1
)
SELECT a.*,u.goldmedalcount,u.userlevel FROM temp a INNER JOIN userhonor u on a.studentid=u.uid where u.areaid = #{areaId}
order by u.goldmedalcount desc nulls last,a.studentid
</select>
<select id= "findStudentsByClassid_3" parameterType="long" resultType="com._3e.http.myspace.dto._3EResClassMates" >
SELECT a.*,u.goldmedalcount,u.userlevel FROM student a
INNER JOIN userhonor u on a.studentid=u.uid
WHERE studentid in (SELECT b.studentid from studentownclass b where b.classesid = #{classesid} and b.status = 1)
order by u.goldmedalcount desc nulls last,a.studentid
</select>
<select id= "findStudentsByClassid" parameterType="long" resultType="com._3e.entity.Student" >
SELECT * FROM student
WHERE studentid in (SELECT b.studentid from studentownclass b where b.classesid = #{classesid} and b.status = 1)
ORDER BY trueName
</select>
<select id= "findStudesByClassid" parameterType="map" resultType="com._3e.dto.ClassStudentDto" >
SELECT s.*,c.isdelegate FROM Student s inner join StudentOwnClass c on
s.studentid = c.studentId
where classesId = #{classesId}
and c.status= 1
and s.status = 1
<if test="orderby != null">
order by ${orderby}
</if>
<if test="page != null">
LIMIT #{page.limit} OFFSET #{page.offset}
</if>
</select>
<select id= "findClassByTeacherid" parameterType="long" resultType="com._3e.entity.Classes" >
SELECT * FROM classes
WHERE teacherid = #{teacherid} and status = 1
ORDER BY classType
</select>
<select id= "findClassesByTeacherid_1" parameterType="long" resultType="com._3e.entity.Classes" >
SELECT * FROM classes
WHERE teacherid = #{teacherid} and status = 1 and classtype = 1
ORDER BY created desc
</select>
<select id= "findClassesByTeacherid" parameterType="long" resultType="com._3e.entity.Classes" >
SELECT * FROM classes
WHERE teacherid = #{teacherid} and status = 1 and classtype = 1
</select>
<select id= "findClassesByTeacherid_2" parameterType="long" resultType="com._3e.entity.Classes" >
SELECT * FROM classes
WHERE teacherid = #{teacherid} and status = 1 and classtype = 1 and classlevel>1
</select>
<select id= "findClassesAndTagNameByTeacherid" parameterType="long" resultType="com._3e.entity.Classes" >
SELECT * FROM classes
WHERE teacherid = #{teacherid} and status = 1 and classtype = 1
</select>
<select id= "findAllClassByTeacherid" parameterType="long" resultType="com._3e.entity.Classes" >
SELECT * FROM classes
WHERE teacherid = #{teacherid}
</select>
<select id= "findTeamByTeacherid" parameterType="long" resultType="com._3e.entity.Classes" >
SELECT * FROM classes
WHERE teacherid = #{teacherid} and classtype = 2 and status = 1
</select>
<select id= "findStudesByTeacherid_1" parameterType="long" resultType="com._3e.entity.Student" >
<!-- select a.*,u.goldmedalcount,u.userlevel,l.welcome from student a,studentownclass b,
classes c, userhonor u,leavemessmaster l
where a.studentid =u.uid and u.uid=l.uid and l.uid=b.studentid and b.classesid = c.classesid
and c.classtype = 1 and c.teacherid =#{teacherid} -->
select s.*,u.goldmedalcount,u.userlevel
from classes c
inner join studentownclass b on c.classesid = b.classesid and c.teacherid =#{teacherid} and b.status = 1 and c.classtype=1
inner join student s on b.studentId=s.studentid and s.status=1
inner join userhonor u on s.studentid =u.uid
order by u.goldmedalcount desc nulls last,s.studentid
</select>
<select id= "findStudesByTeacherid_2" parameterType="long" resultType="com._3e.entity.Student" >
<!-- select a.*,u.goldmedalcount,u.userlevel,l.welcome from student a,studentownclass b,
classes c, userhonor u,leavemessmaster l
where a.studentid =u.uid and u.uid=l.uid and l.uid=b.studentid and b.classesid = c.classesid
and c.classtype = 1 and c.teacherid =#{teacherid} -->
select s.*,u.goldmedalcount,u.userlevel
from classes c
inner join studentownclass b on c.classesid = b.classesid and c.teacherid =#{teacherid} and c.classtype=1
inner join student s on b.studentId=s.studentid
inner join userhonor u on s.studentid =u.uid
order by u.goldmedalcount desc nulls last,s.studentid
</select>
<select id= "findStudesByTeacherid_4" parameterType="long" resultType="com._3e.http.myspace.dto._3EResClassMates" >
<!-- select a.*,u.goldmedalcount,u.userlevel,l.welcome from student a,studentownclass b,
classes c, userhonor u,leavemessmaster l
where a.studentid =u.uid and u.uid=l.uid and l.uid=b.studentid and b.classesid = c.classesid
and c.classtype = 1 and c.teacherid =#{teacherid} -->
select s.*,u.goldmedalcount,u.userlevel,c.classesid,c.classname,c.source
from classes c
inner join studentownclass b on c.classesid = b.classesid and c.teacherid =#{teacherid} and c.classtype=1
inner join student s on b.studentId=s.studentid
inner join userhonor u on s.studentid =u.uid
order by u.goldmedalcount desc nulls last,s.studentid
</select>
<select id= "findStudesByTeacherid_5" parameterType="map" resultType="com._3e.http.myspace.dto._3EResClassMates" >
<!-- select a.*,u.goldmedalcount,u.userlevel,l.welcome from student a,studentownclass b,
classes c, userhonor u,leavemessmaster l
where a.studentid =u.uid and u.uid=l.uid and l.uid=b.studentid and b.classesid = c.classesid
and c.classtype = 1 and c.teacherid =#{teacherid} -->
select s.*,u.goldmedalcount,u.userlevel,c.classesid,c.classname,c.source
from classes c
inner join studentownclass b on c.classesid = b.classesid and c.teacherid =#{teacherId} and c.classtype=1 and c.classesid= #{classesId}
inner join student s on b.studentId=s.studentid
inner join userhonor u on s.studentid =u.uid
order by u.goldmedalcount desc nulls last,s.studentid
</select>
<select id= "findStudesByTeacherid" parameterType="long" resultType="com._3e.entity.Student" >
select a.* from student a,studentownclass b,classes c
where a.studentid = b.studentid and b.classesid = c.classesid and c.classtype = 1 and c.teacherid = #{teacherid}
</select>
<select id= "findMessageByTeacherid" parameterType="map" resultType="com._3e.entity.Classmessage" >
SELECT * FROM Classmessage
WHERE teacherid = #{teacherId} and status = 1 and source = 1
ORDER BY created desc
<if test="page != null">
LIMIT #{page.limit} OFFSET #{page.offset}
</if>
</select>
<insert id= "doPublishClassNotice" parameterType="com._3e.entity.Classmessage">
INSERT INTO classmessage(
classmessageid, content, teacherid, created, starttime, endtime,
status, areaid,isexam)
VALUES (
<if test="classmessageid == 0">
(SELECT NEXTVAL('seq_classmessageid')),
</if>
<if test="classmessageid != 0">
#{classmessageid},
</if>
#{content}, #{teacherid}, #{created}, #{starttime}, #{endtime},
#{status}, #{areaid},#{isexam})
</insert>
<insert id= "doClassMessageLink" parameterType="com._3e.entity.ClassOwnMessage">
INSERT INTO classownmessage(
classesid, classmessageid, areaid)
VALUES (#{classesid}, #{classmessageid}, #{areaid})
</insert>
<update id= "doDelClassNotice" parameterType="int">
update classmessage set status = 0 where classmessageid = #{classmessageid}
</update>
<update id= "doDelClassNotice1" parameterType="map">
update classmessage set status = 0 where classmessageid in
<foreach item="classmessageId" index="index" collection="classmessageIds"
open="(" separator="," close=")">
#{classmessageId}
</foreach>
</update>
<select id= "findClassdelegate" parameterType="long" resultType="com._3e.entity.StudentOwnClass">
SELECT * FROM studentOwnClass
WHERE isdelegate = 1 and classesid = #{classesid}
</select>
<update id= "doDelClassesDelegate" parameterType="long" >
update studentownclass set isdelegate = 0 where classesid = #{classesid}
</update>
<update id="doAssignDelegate" parameterType="map">
update studentownclass set isdelegate = 1 where classesid = #{classesId} and studentid = #{studentId}
</update>
<select id= "findClassAchivement" parameterType="map" resultType="com._3e.dto.ClassAchivement" >
select b.studentId as uid , b.recognizeCode , b.trueName , b.nickname ,
c.totalTime , c.totalNum , d.avgScore , d.totalLesson , e.totalAssign
from StudentOwnClass a
inner join Student b
on a.classesId = #{classesId}
<if test="areaid != null and areaid != 0">
and b.areaid = #{areaid}
</if>
and a.studentId = b.studentId
<if test="areaid != null and areaid != 0">
and a.areaid = #{areaid}
</if>
and a.status = 1
and b.status = 1
left join (
select m.studentId , sum( timeLength ) as totalTime , count(*) as totalNum
from StudentOwnClass m
inner join ConnectLog n
on m.classesId = #{classesId}
<if test="areaid != null and areaid != 0">
and m.areaid = #{areaid}
</if>
and m.studentId = n.uid
where n.starttime &gt; #{startTime} and n.endTime &lt;= #{endTime}
group by m.studentId ) c
on a.studentId = c.studentId
left join (
select p.studentId , avg( q.score ) as avgScore ,
count( objectId ) as totalLesson
from StudentOwnClass p
inner join Achivement q
on p.classesId = #{classesId}
<if test="areaid != null and areaid != 0">
and p.areaid = #{areaid}
</if>
and p.studentId = q.uid
<if test="areaid != null and areaid != 0">
and q.areaid = #{areaid}
</if>
and q.pointCaseType in (3, 4 ,5 , 6 , 7 , 8 )
and q.achiveType in ( 'L' , 'W' )
where q.created &gt; #{startTime} and q.created &lt;= #{endTime}
group by p.studentId ) d
on a.studentId = d.studentId
left join (
select t.studentId,count(case when f.lessoncount is not null and f.lessoncount=f.completecount then 1 else null end)
as totalAssign from studentownclass t
inner join finishassignstat f on t.studentid=f.uid
<if test="areaid != null and areaid != 0">
and t.areaid = #{areaid}
</if>
and t.classesId=#{classesId}
<if test="areaid != null and areaid != 0">
and f.areaid = #{areaid}
</if>
and f.created &gt;#{startTime} and f.created &lt;= #{endTime}
group by t.studentId) e
on a.studentId = e.studentId
order by d.avgScore desc nulls last,d.totalLesson desc nulls last,e.totalAssign desc nulls last,a.studentId
<if test="page != null">
LIMIT #{page.limit} OFFSET #{page.offset}
</if>
</select>
<select id= "findClassByTeacheridV3" parameterType="long" resultType="com._3e.dto.ClassesDto" >
select a.*,b.truename as teachername
from Classes a
left join teacher b on a.teacherid = b.teacherid
where a.teacherid = #{teacherid} and a.classtype = 1 and (a.status=1 or a.status = 2)
</select>
<select id= "findTeamByTeacheridV3" parameterType="long" resultType="com._3e.dto.ClassesDto" >
select a.*,b.truename as teachername
from Classes a
left join teacher b on a.teacherid = b.teacherid
where a.teacherid = #{teacherid} and a.classtype = 2 and a.status = 1
</select>
<select id= "findAllClass" resultType="map" >
SELECT classesId FROM classes WHERE classType = 1 AND status = 1
</select>
<delete id= "doDelTeamMember" parameterType="map">
DELETE FROM studentOwnClass
WHERE classesId = #{classesId}
AND studentId IN (${studentIds})
</delete>
<select id= "findTeamsByLookLike" parameterType="map" resultType="com._3e.dto.ClassesDto" >
SELECT c.classesid,c.classlevel,c.classname,c.description,c.schoolyear,
c.classorder,c.schoolid,c.areaid,c.teacherid,c.classtype,0 AS status,
t.truename AS teachername, COALESCE(a.source , 0) AS source
FROM classes c
INNER JOIN teacher t ON t.teacherid = c.teacherid
LEFT JOIN (SELECT count(s.studentid) AS source ,s.classesid
FROM studentownclass s
WHERE s.status = 1
<if test="areaid != null and areaid != 0">
and s.areaid = #{areaid}
</if>
GROUP BY s.classesid) a
ON a.classesid = c.classesid
WHERE c.classType = 2 AND c.status = 1
<if test="title != null and title != ''.toString()">
AND c.classname like '%'||#{title}||'%'
</if>
ORDER BY source DESC
<if test="page != null">
LIMIT #{page.limit} OFFSET #{page.offset}
</if>
</select>
<select id= "findMyTeams" parameterType="map" resultType="com._3e.dto.ClassesDto" >
SELECT c.classesid,c.classlevel,c.classname,c.description,c.schoolyear,
c.classorder,c.schoolid,c.areaid,c.teacherid,c.classtype,
t.truename AS teachername, COALESCE(a.source , 0) AS source,
CASE o.status WHEN 0 THEN 1
WHEN 1 THEN 2
END AS status
FROM classes c
INNER JOIN teacher t ON t.teacherid = c.teacherid
LEFT JOIN studentownclass o ON c.classesid = o.classesid
<if test="areaid != null and areaid != 0">
and o.areaid = #{areaid}
</if>
LEFT JOIN (SELECT count(s.studentid) AS source ,s.classesid
FROM studentownclass s
WHERE s.status = 1
<if test="areaid != null and areaid != 0">
and s.areaid = #{areaid}
</if>
GROUP BY s.classesid) a
ON a.classesid = c.classesid
WHERE o.studentid = #{studentId} AND c.classType = 2 AND c.status = 1
ORDER BY source DESC
<if test="page != null">
LIMIT #{page.limit} OFFSET #{page.offset}
</if>
</select>
<select id= "findTeamByIsdelegate" parameterType="long" resultType="com._3e.dto.ClassesDto" >
SELECT c.*
FROM studentownclass s
INNER JOIN classes c ON c.classesid = s.classesid
WHERE s.studentid = #{studentid} AND c.status = 1 AND s.isdelegate = 1
</select>
<delete id= "doDelClassesMember" parameterType="java.lang.Long">
DELETE FROM studentOwnClass
WHERE classesId in
(select s.classesid
from studentownclass s inner join
classes c
on s.classesid=c.classesid and s.status=1 and c.classtype=1 and s.studentId=#{studentId})
AND studentId=#{studentId}
</delete>
<select id= "findVirtualClassesBySchoolID" parameterType="long" resultType="com._3e.entity.Classes" >
SELECT * FROM classes WHERE schoolid = #{schoolId} and teacherid=0 and classtype=1 and status=1 order by classesid desc limit 1
</select>
<select id= "findClassesBySchoolID" parameterType="long" resultType="com._3e.entity.Classes" >
SELECT * FROM classes WHERE schoolid = #{schoolId} and teacherid != 0 and classtype=1 and status=1 order by classesid desc
</select>
<select id= "findClassesBySchoolIDAndClassLevel" parameterType="map" resultType="com._3e.entity.Classes" >
SELECT * FROM classes WHERE schoolid = #{schoolId} and classlevel = #{classLevel} and teacherid != 0 and classtype=1 and status=1 order by classesid desc
</select>
<update id="changeClasses" parameterType="map">
update studentownclass set classesid=#{newClassesId} where classesId=#{oldClassesId} and studentId = #{studentId}
</update>
<update id="deleteStudentOwnClasses" parameterType="map">
delete from studentownclass where classesId=#{classesId} and studentId = #{studentId}
</update>
<update id="deleteClassById" parameterType="long">
update classes set status = 0 where classesId=#{classesId}
</update>
<select id= "findClassesApplyNum" parameterType="java.util.Map" resultType="int">
SELECT count(*) FROM studentOwnClass s inner join student sd on s.studentid=sd.studentid
<if test="areaid != null and areaid != 0">
and sd.areaid = #{areaid}
</if>
and sd.status=1
WHERE s.status = #{status}
<if test="areaid != null and areaid != 0">
and s.areaid = #{areaid}
</if>
and s.classesid = #{classesId}
</select>
<select id="findUserLevel" parameterType="map" resultType="int">
select cs.classlevel from student s
inner JOIN studentownclass sc on s.studentid = sc.studentid
INNER JOIN classes cs on cs.classesid = sc.classesid
and s.studentid = #{uid} and cs.classtype = 1
</select>
<select id="findClassBySourceAndAreaId" parameterType="map" resultType="com._3e.entity.Classes">
select * from classes where source = #{source} and areaid = #{areaId}
</select>
<select id="findSchoolClassByClassId" parameterType="map" resultType="com._3e.http.myspace.dto._3EResSchoolClass">
select s.schoolid,s.schoolname,s.areaId,c.classesid,c.classname,c.teacherid from classes c
INNER JOIN school s on c.schoolid =s.schoolid
where substring(cast(c.classesid as varchar),7,6) = #{classid} and source = #{source} and c.status =1
</select>
<select id="findFictitiousClass" parameterType="map" resultType="com._3e.entity.Classes">
select classesid from classes where schoolid = #{schoolId} and teacherid = #{teacherId}
and source = #{source} and classtype = 1 and status = 1 limit 1
</select>
<select id="findGroupByStudentId" resultType="com._3e.http.myspace.dto.ResGroupDto">
select c.classesId,c.className,c.classType from classes c inner join studentownclass st on c.classesid = st.classesid and st.status = 1
inner join student s on st.studentid = s.studentid and s.status = 1
where c.classtype = 2 and c.status = 1 and s.studentid = #{studentId}
</select>
<select id="findStudentsByClassesId" resultType="com._3e.entity.Student">
select s.* from classes c inner join studentownclass st on c.classesid = st.classesid and st.areaId = #{areaId} and st.status = 1
inner join student s on st.studentid = s.studentid and s.areaId = #{areaId} and s.status = 1
where c.classesid = #{classesId} order by s.studentid
</select>
<select id="findTeacherTeamsByLookLike" resultType="com._3e.dto.ClassesDto">
SELECT c.classesid,c.classlevel,c.classname,c.description,c.schoolyear,
c.classorder,c.schoolid,c.areaid,c.teacherid,c.classtype,0 AS status,
t.truename AS teachername
FROM classes c INNER JOIN teacher t ON t.teacherid = c.teacherid
where c.teacherId = #{teacherId} and c.classType = 2 AND c.status = 1
<if test="title != null and title != ''.toString()">
AND c.classname like '%'||#{title}||'%'
</if>
ORDER BY c.classesid asc
<if test="page != null">
LIMIT #{page.limit} OFFSET #{page.offset}
</if>
</select>
</mapper>