puzhibing
2024-02-29 7e1737e6b43827d5f766a49a4005077c5fa5eae3
cloud-server-communityWorldCup/src/main/resources/mapper/WorldCupCompetitorMapper.xml
@@ -20,4 +20,78 @@
        ) 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>