246 lines
9.3 KiB
XML
Raw Permalink Normal View History

2026-03-10 14:30:24 +08:00
<?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="Teacher">
<insert id="insertTeacher" parameterType="Teacher">
INSERT INTO Teacher ( teacherId, schoolId, loginNo, password, truename,
nickname, gender, address, areaId, recognizeCode, cellphone,
telephone, email, status, source
<if test="issuper != null">
,issuper
</if>
)
Values ( #{teacherId}, #{schoolId}, upper(#{loginNo}), #{password}, #{truename},
#{nickname}, #{gender}, #{address}, #{areaId}, #{recognizeCode}, #{cellphone},
#{telephone}, #{email}, #{status}, #{source}
<if test="issuper != null">
,#{issuper}
</if>
)
</insert>
<update id="updateTeacher" parameterType="Teacher">
UPDATE Teacher
SET teacherId = #{teacherId}, schoolId = #{schoolId}, loginNo = upper(#{loginNo}),
truename = #{truename}, nickname = #{nickname},
gender = #{gender}, address = #{address}, areaId = #{areaId},
recognizeCode = #{recognizeCode}, cellphone = #{cellphone},
telephone = #{telephone}, email = #{email}, status = #{status}, source = #{source} ,
lastSignIn = #{lastSignIn} , jdToken = #{jdToken},signature=#{signature}
<if test="issuper != null">
,issuper= #{issuper}
</if>
WHERE teacherId=#{teacherId}
</update>
<select id="getTeacherByKey" parameterType="java.lang.Long" resultType="Teacher">
SELECT teacherId , schoolId , loginNo , password , truename , nickname ,
gender , address , areaId , recognizeCode , cellphone , telephone ,
avatar , email , status , source ,signature,lastSignIn,issuper
FROM Teacher
WHERE teacherId=#{teacherId}
</select>
<select id="getSeqTeacher" resultType="Integer" useCache="false" flushCache="true">
SELECT nextval('seq_teacherId') ;
</select>
<select id="getAllTeacher" resultType="Teacher">
SELECT teacherId , schoolId , loginNo , password , truename ,
nickname , gender , address , areaId , recognizeCode ,
cellphone , telephone , email , status , source ,signature,issuper
FROM Teacher
</select>
<insert id="insertTeacherBatch" parameterType="java.util.List">
INSERT INTO Teacher ( teacherId, schoolId, loginNo, password, truename,
nickname, gender, address, areaId, recognizeCode, cellphone,
telephone, email, status, source,issuper ) Values
<foreach collection="list" index="index" item="item" separator=",">
( #{item.teacherId}, #{item.schoolId}, upper(#{item.loginNo}),
#{item.password}, #{item.truename}, #{item.nickname},
#{item.gender}, #{item.address}, #{item.areaId},
#{item.recognizeCode}, #{item.cellphone}, #{item.telephone},
#{item.email}, #{item.status}, #{item.source}
, #{item.issuper}
)
</foreach>
</insert>
<select id="getTeacherByLoginNo" parameterType="java.lang.String" resultType="Teacher">
SELECT teacherId , schoolId , loginNo , password , truename , nickname ,
gender , address , areaId , recognizeCode , cellphone , telephone ,
avatar , email , status , source ,signature,lastSignIn,issuper
FROM Teacher
WHERE upper(loginNo)=upper(#{_parameter})
</select>
<select id="getTeachersCountByschoolId" parameterType="java.lang.Long" resultType="Integer">
SELECT count(*) as howmuch
FROM Teacher
WHERE schoolId=#{schoolId}
AND status = 1
</select>
<select id="getTeachersBySchoolId" parameterType="java.util.Map" resultType="Teacher">
SELECT teacherId , schoolId , loginNo , password , truename , nickname ,
gender , address , areaId , recognizeCode , cellphone , telephone ,
avatar , email , status , source,issuper
FROM Teacher
WHERE schoolId=#{schoolId} and status = 1
ORDER BY loginNo
<if test="pageSize!=null">
LIMIT #{pageSize}
</if>
<if test="offset!=null">
OFFSET #{offset}
</if>
</select>
<update id="updateTeacherPassword" parameterType="java.util.Map">
UPDATE Teacher
SET password = #{password}
where teacherId =#{teacherId}
</update>
<update id="updateTeacherAvatar" parameterType="java.util.Map">
UPDATE Teacher
SET avatar = #{avatar}
where teacherId =#{teacherId}
</update>
<select id="getServerFeeByTeacherId" parameterType="long" resultType="integer">
select distinct(s.serviceFee) from school s inner join classes c on c.schoolId = s.schoolId
and c.teacherId = #{uid}
</select>
<select id="getSchoolIdByTeacherId" parameterType="long" resultType="Long">
select distinct(schoolid) from classes where classtype = 1 and status = 1 and teacherId = #{uid}
limit 1
</select>
<select id="getTeacherMapByTrueName" parameterType="java.util.HashMap" resultType="java.util.HashMap">
SELECT t.teacherid , t.truename , t.loginno , 0 as classesid ,
array_agg(case when c.classname is null then '' else c.classname end) as classname , s.schoolid , s.schoolname,t.source,t.cellphone
FROM teacher t left join classes c on t.teacherid = c.teacherid
and c.classtype = 1 and c.status =1
INNER JOIN school s
ON t.schoolid = s.schoolId and s.status = 1 and t.status=1
WHERE t.truename like '%${trueName}%' group by t.teacherid , t.truename , t.loginno ,s.schoolid , s.schoolname,t.source
ORDER BY t.loginno
LIMIT #{pageSize} OFFSET #{offset}
</select>
<select id="getTeacherMapByTrueNameCount" parameterType="String" resultType="Integer">
SELECT count(*)
FROM teacher t
INNER JOIN school s
ON t.schoolid = s.schoolId and s.status = 1 and t.status=1
WHERE t.truename like '%${_parameter}%'
</select>
<select id="getTeacherMapByRecognizeCode" parameterType="java.util.HashMap" resultType="java.util.HashMap">
select t.teacherid , t.truename , t.loginno ,array_agg(case when c.classname is null then '' else c.classname end) as classname ,
s.schoolid , s.schoolname,t.source,t.cellphone from teacher t left join classes c on t.teacherid = c.teacherid
and c.classtype = 1 and c.status =1
left join school s on s.schoolid = t.schoolId
where upper(t.loginno) = upper(#{loginNo}) and t.status=1
group by t.teacherid , t.truename ,t.loginno ,s.schoolid , s.schoolname,t.source
order by t.loginno
limit #{pageSize} offset #{offset}
</select>
<select id="getTeacherMapByCellphone" parameterType="java.util.HashMap" resultType="java.util.HashMap">
select t.teacherid , t.truename , t.loginno ,array_agg(case when c.classname is null then '' else c.classname end) as classname ,
s.schoolid , s.schoolname,t.source,t.cellphone from teacher t left join classes c on t.teacherid = c.teacherid
and c.classtype = 1 and c.status =1
left join school s on s.schoolid = t.schoolId
where t.cellphone = #{cellphone} and t.status=1
group by t.teacherid , t.truename ,t.loginno ,s.schoolid , s.schoolname,t.source
order by t.loginno
limit #{pageSize} offset #{offset}
</select>
<select id="getTeacherMapByRecognizeCodeCount" parameterType="String" resultType="Integer">
select count(distinct(t.teacherid))
from teacher t
left join classes c
on t.teacherid = c.teacherid
and c.classtype = 1 and c.status =1
left join school s on s.schoolid = c.schoolId
where upper(t.loginno) = upper(#{_parameter}) and t.status=1
</select>
<select id="getTeacherCountByCellPhone" parameterType="String" resultType="Integer">
select count(teacherId) from teacher where cellphone=#{_parameter}
</select>
<select id="getTeacherByStudentId" parameterType="java.lang.Long" resultType="Teacher">
SELECT teacherId , schoolId , truename , nickname
FROM Teacher where teacherid=(select teacherid from classes c
inner join studentownclass s on c.classesid=s.classesid and c.classtype=1 and c.status=1 and s.status=1
and s.studentid=#{studentId})
</select>
<select id="getMockPermission" resultType="java.util.HashMap" parameterType="Long">
select startTime "startTime",valueStr as "endTime" from parameter where paralong=#{teacherId} and paraType=12 order by created desc limit 1
</select>
<select id="getAllClassesHasRegister" parameterType = "java.lang.Long" resultType="java.util.Map">
with temp as (select classesid from classes where teacherid = #{teacherId} and source = 9 and status = 1)
select classesid,count(classesid) as count from temp as a inner join parameter as b on a.classesid = b.valuelong where b.paraint = 1 and status = 1 and paratype =20 group by classesid
</select>
<select id="getAllClassesLogouters" parameterType="java.util.Map" resultType="java.util.Map">
select soc.classesid as classesId from parameter as a
inner join student as s on a.paraLong = s.studentId and s.areaid = #{areaId}
inner join studentownclass as soc on soc.studentId = s.studentId and soc.areaid = #{areaId}
inner join classes as c on c.classesid = soc.classesid and c.classtype=1 and c.status = 1
where a.paraInt = 1 and a.status = 1 and a.paraType = 16 and a.valuelong = #{teacherId} group by soc.classesid
</select>
</mapper>