267 lines
10 KiB
XML
267 lines
10 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.univ3e.dao.UnivRaceDao">
|
||
|
|
|
||
|
|
<select id= "getNextSeq" resultType="int">
|
||
|
|
SELECT NEXTVAL('seq_univracescoreid')
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<insert id="doSaveRaceScore" parameterType="com.univ3e.entity.UnivRaceScore">
|
||
|
|
INSERT INTO univracescore(racescoreid,uid,raceid,score,ismax,accuracy,fluent,
|
||
|
|
integrity,content,created,areaid,uuid)
|
||
|
|
VALUES (
|
||
|
|
<if test="racescoreid == 0">
|
||
|
|
(SELECT NEXTVAL('seq_univracescoreid')),
|
||
|
|
</if>
|
||
|
|
<if test="racescoreid != 0">
|
||
|
|
#{racescoreid},
|
||
|
|
</if>
|
||
|
|
#{uid},#{raceid},#{score},#{ismax},#{accuracy},#{fluent},
|
||
|
|
#{integrity},#{content},#{created},#{areaid},#{uuid})
|
||
|
|
</insert>
|
||
|
|
|
||
|
|
<insert id="doSaveMaxScore" parameterType="com.univ3e.entity.UnivRaceMaxScore">
|
||
|
|
INSERT INTO UnivRaceMaxScore(raceid,uid,maxscore,created,racescoreid)
|
||
|
|
VALUES (#{raceid},#{uid},#{maxscore},#{created},#{racescoreid})
|
||
|
|
</insert>
|
||
|
|
|
||
|
|
<update id="doRecordRaceVoice" parameterType="map">
|
||
|
|
update univracescore set uuid = #{uuid} where racescoreid = #{racescoreid}
|
||
|
|
</update>
|
||
|
|
|
||
|
|
<update id="doUpdateMaxScore" parameterType="com.univ3e.entity.UnivRaceMaxScore">
|
||
|
|
Update univracemaxscore
|
||
|
|
<set>
|
||
|
|
<if test="maxscore != null">maxscore = #{maxscore},</if>
|
||
|
|
<if test="created != null">created = #{created},</if>
|
||
|
|
<if test="racescoreid != null">racescoreid = #{racescoreid}</if>
|
||
|
|
</set>
|
||
|
|
WHERE raceid = #{raceid} and uid = #{uid}
|
||
|
|
</update>
|
||
|
|
|
||
|
|
<select id="findMyAllRacescore" parameterType="map" resultType="com.univ3e.entity.UnivRaceScore">
|
||
|
|
SELECT * FROM UnivRaceScore
|
||
|
|
WHERE uid = #{uid} and to_char(created, 'yyyy-MM-dd') >= #{begintime}
|
||
|
|
and to_char(created, 'yyyy-MM-dd') <= #{endtime}
|
||
|
|
ORDER BY score desc,raceScoreId desc
|
||
|
|
<if test="page != null">
|
||
|
|
LIMIT #{page.limit} OFFSET #{page.offset}
|
||
|
|
</if>
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="findRaceByRaceid" parameterType="int" resultType="com.univ3e.entity.UnivRace">
|
||
|
|
SELECT * FROM UnivRace
|
||
|
|
WHERE raceid = #{raceid}
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="findStudentClassRaceGoodVoice" parameterType="long" resultType="com.univ3e.entity.UnivRaceScore" >
|
||
|
|
SELECT * FROM univracescore
|
||
|
|
WHERE EXISTS (
|
||
|
|
SELECT * FROM (
|
||
|
|
SELECT b.* FROM Univstudentownclass b
|
||
|
|
WHERE EXISTS (
|
||
|
|
SELECT C.*
|
||
|
|
FROM Univstudentownclass C
|
||
|
|
WHERE b.classesid = C.classesid AND C.studentid = #{uid}
|
||
|
|
)
|
||
|
|
) d
|
||
|
|
WHERE uid = d.studentid
|
||
|
|
)
|
||
|
|
and uuid <![CDATA[<>]]> ''
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="findTeacherClassRaceGoodVoice" parameterType="long" resultType="com.univ3e.entity.UnivRaceScore" >
|
||
|
|
SELECT * FROM univracescore
|
||
|
|
WHERE EXISTS (
|
||
|
|
SELECT *
|
||
|
|
FROM (
|
||
|
|
SELECT b.*
|
||
|
|
FROM Univteacher b
|
||
|
|
WHERE EXISTS (
|
||
|
|
SELECT C.*
|
||
|
|
FROM Univclasses C
|
||
|
|
WHERE C .teacherid = b.teacherid AND C.teacherid = #{uid}
|
||
|
|
)
|
||
|
|
) d
|
||
|
|
WHERE uid = d.teacherid
|
||
|
|
)
|
||
|
|
and uuid <![CDATA[<>]]> ''
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="findMyRaceGoodVoice" parameterType="map" resultType="com.univ3e.entity.UnivRaceScore" >
|
||
|
|
SELECT * FROM UnivRacescore
|
||
|
|
WHERE uid = #{uid} and uuid <![CDATA[<>]]> ''
|
||
|
|
and to_char(created, 'yyyy-MM-dd') >= #{begintime}
|
||
|
|
and to_char(created, 'yyyy-MM-dd') <= #{endtime}
|
||
|
|
ORDER BY score desc, racescoreid desc
|
||
|
|
<if test="page != null">
|
||
|
|
LIMIT #{page.limit} OFFSET #{page.offset}
|
||
|
|
</if>
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="findRaceRank" parameterType="map" resultType="int" >
|
||
|
|
SELECT count(1)
|
||
|
|
FROM univracescore
|
||
|
|
WHERE score >= #{score} AND raceid = #{raceid}
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="findRaceSchool" parameterType="int" resultType="com.univ3e.entity.UnivErsity" >
|
||
|
|
SELECT * FROM university
|
||
|
|
WHERE schoolid IN(SELECT schoolid FROM univownrace WHERE raceid = #{raceid}) AND STATUS =1
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="findMyOngoingRace" parameterType="long" resultType="com.univ3e.entity.UnivRace" >
|
||
|
|
SELECT b.*
|
||
|
|
FROM ( SELECT distinct a.raceId
|
||
|
|
FROM univracescore a
|
||
|
|
WHERE a.uid = #{uid})a
|
||
|
|
INNER JOIN univrace b
|
||
|
|
ON a.raceId = b.raceId
|
||
|
|
and b.endTime > current_timestamp
|
||
|
|
ORDER BY raceId DESC
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="findOverRace" parameterType="com.mobile.common.page.Page" resultType="com._3e.http.race.dto._3EResRaceOver" >
|
||
|
|
WITH temp as (
|
||
|
|
select raceId ,raceName , startTime , endTime
|
||
|
|
from univRace
|
||
|
|
where (status = 0 or current_timestamp > endTime)
|
||
|
|
order by endTime desc ,raceId desc
|
||
|
|
limit #{limit} offset #{offset}
|
||
|
|
)
|
||
|
|
SELECT a.raceId , a.raceName , a.startTime , a.endTime ,
|
||
|
|
case when c.joinTotal is null then 0 else c.joinTotal end as joinTotal ,
|
||
|
|
case when b.uid is null then 0 else b.uid end as uid ,
|
||
|
|
case when b.score is null then 0 else b.score end as score ,
|
||
|
|
case when d.truename is null then '' else d.truename end as truename
|
||
|
|
FROM temp AS a
|
||
|
|
left join
|
||
|
|
( select raceid , uid , maxscore as score ,
|
||
|
|
rank() over (partition by raceId order by maxscore desc , created desc ) as mm
|
||
|
|
from univRacemaxScore
|
||
|
|
where raceId in ( select raceId from temp ) ) b
|
||
|
|
on a.raceId = b.raceId and b.mm = 1
|
||
|
|
left join
|
||
|
|
( SELECT raceId , count(*) joinTotal
|
||
|
|
FROM univraceScore
|
||
|
|
WHERE raceId in ( select raceId from temp )
|
||
|
|
GROUP BY raceId ) c
|
||
|
|
ON a.raceId = c.raceId
|
||
|
|
left JOIN V_Univbaseuser d
|
||
|
|
on b.uid = d.studentId and b.mm = 1
|
||
|
|
ORDER BY a.endTime desc , raceId desc
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="findOngoingRaceList" parameterType="int" resultType="com.univ3e.entity.UnivRace" >
|
||
|
|
SELECT raceId , raceName , holder , raceType , description ,
|
||
|
|
startTime , endTime , joinRace , credential , badge , reward ,
|
||
|
|
timeLength , content , status , created , raceAreaId , banner,title
|
||
|
|
FROM univRace
|
||
|
|
WHERE status = 1
|
||
|
|
<if test="_parameter != 0">
|
||
|
|
and raceType = #{racetype}
|
||
|
|
</if>
|
||
|
|
and current_timestamp < endTime
|
||
|
|
ORDER BY endTime, raceId
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="findJoinRacePhbByRaceID" parameterType="map" resultType="com._3e.http.race.dto._3EResRacePhb" >
|
||
|
|
|
||
|
|
SELECT ROW_NUMBER() OVER(ORDER BY m.maxScore DESC,m.avgscore DESC,m.created DESC) AS rowindex,
|
||
|
|
m.raceId , m.uid , m.maxScore , m.created , m.raceScoreId , r.uuid, m.avgscore
|
||
|
|
FROM UnivRaceMaxScore m
|
||
|
|
INNER JOIN Univracescore r
|
||
|
|
ON m.raceId = #{raceId} AND m.racescoreid = r.racescoreid
|
||
|
|
ORDER BY m.maxscore desc ,m.avgscore DESC, m.created DESC
|
||
|
|
<if test="page != null">
|
||
|
|
LIMIT 20 OFFSET #{page.offset}
|
||
|
|
</if>
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="findMyFrontJoinRacePhbByRaceID" parameterType="map" resultType="int" >
|
||
|
|
select count(*) as rankid from UnivRaceMaxscore m inner join univstudent s on
|
||
|
|
m.uid=s.studentid and raceid =#{raceId} and maxScore >#{score}
|
||
|
|
</select>
|
||
|
|
<select id="findMyJoinRacePhbByRaceID" parameterType="map" resultType="com._3e.http.race.dto._3EResRacePhb" >
|
||
|
|
SELECT ROW_NUMBER() OVER(ORDER BY m.maxscore DESC,m.avgscore DESC,m.created DESC) AS rowindex,
|
||
|
|
m.raceid,m.uid,m.maxscore,m.created,m.racescoreid,m.avgscore,r.uuid
|
||
|
|
FROM UnivRaceMaxScore m
|
||
|
|
INNER JOIN Univracescore r
|
||
|
|
ON m.racescoreid = r.racescoreid AND m.raceid = #{raceId} AND m.uid = #{uid}
|
||
|
|
ORDER BY m.maxscore DESC,m.avgscore DESC,m.created DESC
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="getJoinRaceCountByRaceID" parameterType="int" resultType="int" >
|
||
|
|
select count(m.uid) from univRaceMaxScore m inner join univstudent s
|
||
|
|
on m.uid = s.studentid and s.status = 1 and m.raceId = #{raceId}
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="findRaceMaxScore" parameterType="map" resultType="com.univ3e.entity.UnivRaceMaxScore">
|
||
|
|
SELECT * FROM UnivRaceMaxScore
|
||
|
|
WHERE uid = #{uid} and raceid = #{raceId}
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="findMyRaceAvgScore" parameterType="map" resultType="double">
|
||
|
|
SELECT round(AVG(score),2) AS avgScore
|
||
|
|
FROM Univracescore
|
||
|
|
WHERE raceId =#{raceId}
|
||
|
|
and uid=#{uid}
|
||
|
|
GROUP BY uid
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<update id="doSaveAvgScore" parameterType="map">
|
||
|
|
update univracemaxscore
|
||
|
|
<set>
|
||
|
|
<if test="myAvgSoce != null">avgscore = #{myAvgSoce}</if>
|
||
|
|
</set>
|
||
|
|
WHERE raceid = #{raceId} and uid = #{uid}
|
||
|
|
</update>
|
||
|
|
<select id="findMyJoinMaxScore" parameterType="map" resultType="com._3e.http.race.dto._3EResIsPromotion">
|
||
|
|
select maxscore,avgscore from univracemaxscore where uid = #{uid} and raceid = #{raceid}
|
||
|
|
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="findMyJoinJoinNum" parameterType="map" resultType="com._3e.http.race.dto._3EResIsPromotion">
|
||
|
|
select count(1) as joinNum from univracescore where uid = #{uid} and raceid = #{raceid}
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="findTwoRaceScore" parameterType="map" resultType="com._3e.http.race.dto._3EResIsPromotion">
|
||
|
|
select rms.uid,rms.avgscore,rms.maxscore,rs.count joinnum from univracemaxscore rms INNER JOIN (select uid,count(1) from univracescore
|
||
|
|
where raceid = #{primaryRaceId} and areaid = #{areaid} and created between #{primaryStartTime} and #{primaryEndTime} group by uid) rs
|
||
|
|
on rms.uid = rs.uid and rms.raceid = #{primaryRaceId}
|
||
|
|
INNER JOIN univstudent s on rms.uid = s.studentid and s.areaid = #{areaid}
|
||
|
|
and s.schoolid = #{schoolid} and rms.uid = #{uid}
|
||
|
|
UNION all
|
||
|
|
select rms.uid,rms.avgscore,rms.maxscore,rs.count from univracemaxscore rms INNER JOIN (select uid,count(1) from univracescore
|
||
|
|
where raceid = #{midleRaceId} and areaid = #{areaid} and created between #{midleStartTime} and #{midleEndTime} group by uid) rs
|
||
|
|
on rms.uid = rs.uid and rms.raceid = #{midleRaceId}
|
||
|
|
INNER JOIN univstudent s on rms.uid = s.studentid and s.areaid = #{areaid}
|
||
|
|
and s.schoolid = #{schoolid} and rms.uid = #{uid}
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="findSchoolJoinNum" parameterType="map" resultType="com._3e.http.race.dto._3EResIsPromotion">
|
||
|
|
select uid,round(avg(avgscore),2) avgscore,sum(count) joinnum from (
|
||
|
|
select rms.uid,rms.avgscore,rs.count from univracemaxscore rms INNER JOIN (select uid,count(1) from univracescore
|
||
|
|
where raceid = #{primaryRaceId} and areaid = #{areaid} and created between #{primaryStartTime} and #{primaryEndTime} group by uid) rs
|
||
|
|
on rms.uid = rs.uid and rms.raceid = #{primaryRaceId}
|
||
|
|
INNER JOIN univstudent s on rms.uid = s.studentid and s.areaid = #{areaid}
|
||
|
|
and s.schoolid = #{schoolid}
|
||
|
|
UNION all
|
||
|
|
select rms.uid,rms.avgscore,rs.count from univracemaxscore rms INNER JOIN (select uid,count(1) from univracescore
|
||
|
|
where raceid = #{midleRaceId} and areaid = #{areaid} and created between #{midleStartTime} and #{midleEndTime} group by uid) rs
|
||
|
|
on rms.uid = rs.uid and rms.raceid = #{midleRaceId}
|
||
|
|
INNER JOIN univstudent s on rms.uid = s.studentid and s.areaid = #{areaid}
|
||
|
|
and s.schoolid = #{schoolid}
|
||
|
|
|
||
|
|
) su where uid not in
|
||
|
|
<foreach collection="studentids" open="(" close=")" index="index" item="studentid" separator=",">
|
||
|
|
#{studentid}
|
||
|
|
</foreach>
|
||
|
|
GROUP BY uid HAVING avg(avgscore)>60 ORDER BY joinnum desc,avgscore desc limit 5
|
||
|
|
|
||
|
|
</select>
|
||
|
|
|
||
|
|
</mapper>
|