<?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="cn.stylefeng.roses.kernel.system.modular.home.mapper.SysStatisticsUrlMapper">

    <!--根据统计urlId集合获取菜单id集合-->
    <select id="getMenuIdsByStatUrlIdList" resultType="java.lang.Long">
        select stat_menu_id as statMenuId from sys_statistics_url stat
        <where>
            <if test="statUrlIds != null and statUrlIds.size() > 0">
                stat.stat_url_id in
                <foreach item="item" collection="statUrlIds" index="index" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
        </where>
        order by field(stat_url_id,
        <foreach item="item" collection="statUrlIds" index="index" open="" separator="," close=")">
            #{item}
        </foreach>
    </select>

    <!--根据统计urlId集合获取菜单id集合，oracle版本-->
    <select id="getMenuIdsByStatUrlIdList" resultType="java.lang.Long" databaseId="oracle">
        select stat_menu_id as statMenuId from sys_statistics_url stat
        <where>
            <if test="statUrlIds != null and statUrlIds.size() > 0">
                stat.stat_url_id in
                <foreach item="item" collection="statUrlIds" index="index" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
        </where>
        order by instr(
        <foreach item="item" collection="statUrlIds" index="index" open="'" separator="," close="'">
            ${item}
        </foreach>,stat_url_id)
    </select>

    <!--根据统计urlId集合获取菜单id集合，pgsql版本-->
    <select id="getMenuIdsByStatUrlIdList" resultType="java.lang.Long" databaseId="pgsql">
        select stat_menu_id as statMenuId from sys_statistics_url stat
        <where>
            <if test="statUrlIds != null and statUrlIds.size() > 0">
                stat.stat_url_id in
                <foreach item="item" collection="statUrlIds" index="index" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
        </where>
        order by case stat_url_id
        <foreach item="item" collection="statUrlIds" index="index" open="" separator="," close="">
            when ${item} then ${index}
        </foreach>
        end
    </select>

    <!--根据统计urlId集合获取菜单id集合，sql server版本-->
    <select id="getMenuIdsByStatUrlIdList" resultType="java.lang.Long" databaseId="mssql">
        select stat_menu_id as statMenuId from sys_statistics_url stat
        <where>
            <if test="statUrlIds != null and statUrlIds.size() > 0">
                stat.stat_url_id in
                <foreach item="item" collection="statUrlIds" index="index" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
        </where>
        order by charindex(CAST(stat_url_id AS VARCHAR),
        <foreach item="item" collection="statUrlIds" index="index" open="'" separator="," close="'">
            ${item}
        </foreach>
        )
    </select>

</mapper>
