<?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.dsh.communityWorldCup.mapper.WorldCupCompetitorMapper">
|
|
<select id="getNumberOfGamesRanked" resultType="map">
|
select * from (
|
select
|
CASE WHEN participantType = 2 THEN 0 ELSE 1 END as participantType,
|
participantId,
|
count(*) as num
|
from t_world_cup_competitor
|
where 1 = 1
|
<if test="null != appUserIds and appUserIds.size() > 0">
|
and appUserId in
|
<foreach collection="appUserIds" item="item" index="index" open="(" separator="," close=")">
|
#{item}
|
</foreach>
|
</if>
|
group by participantType, participantId
|
) as aa order by aa.num desc
|
</select>
|
|
|
|
<select id="getMatchRecord" resultType="com.dsh.communityWorldCup.model.MatchRecordList">
|
select
|
b.`name`,
|
a.ourScore,
|
a.opponentScore,
|
DATE_FORMAT(a.startTime, '%Y-%m-%d %H:%i') as startTime,
|
a.matchResult,
|
(a.participationIntegral + a.winIntegral) as award
|
from t_world_cup_competitor a
|
left join t_world_cup b on (a.worldCupId = b.id)
|
where a.participantId = #{item.id} and a.participantType = #{item.isStudent}
|
order by a.startTime desc limit #{item.pageNo}, #{item.pageSize}
|
</select>
|
|
|
|
|
<select id="getWorldCupRank" resultType="java.util.Map">
|
select * from (
|
select
|
a.participantType,
|
a.participantId,
|
a.appUserId,
|
a.num as totalSession,
|
(ifnull(b.num, 0) / a.num * 100) as winRate
|
from (
|
select
|
participantType,
|
participantId,
|
appUserId,
|
count(*) as num
|
from t_world_cup_competitor
|
where 1 = 1
|
<if test="null != item.year">
|
and DATE_FORMAT(a.startTime, '%Y') = #{item.year}
|
</if>
|
<if test="null != appUserIds and appUserIds.size() > 0">
|
and appUserId in
|
<foreach collection="appUserIds" item="iten" index="index" open="(" separator="," close=")">
|
#{iten}
|
</foreach>
|
</if>
|
group by participantType, participantId, appUserId
|
) as a
|
left join (
|
select
|
participantType,
|
participantId,
|
appUserId,
|
count(*) as num
|
from t_world_cup_competitor
|
where matchResult = 1
|
<if test="null != item.year">
|
and DATE_FORMAT(a.startTime, '%Y') = #{item.year}
|
</if>
|
<if test="null != appUserIds and appUserIds.size() > 0">
|
and appUserId in
|
<foreach collection="appUserIds" item="iten" index="index" open="(" separator="," close=")">
|
#{iten}
|
</foreach>
|
</if>
|
group by participantType, participantId, appUserId
|
) as b on (a.participantId = b.participantId and a.participantType = b.participantType)
|
) as aa
|
<if test="null != item.sort and item.sort == 1">
|
order by aa.totalSession desc
|
</if>
|
<if test="null != item.sort and item.sort == 2">
|
order by aa.winRate desc
|
</if>
|
</select>
|
|
</mapper>
|