OpenApiRecordTopMapper.xml 2.71 KB
<?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="org.thingsboard.server.dao.yunteng.mapper.OpenApiRecordMapper">
    <resultMap type="org.thingsboard.server.common.data.yunteng.dto.OpenApiRecordTopDTO" id="DTOMap">
        <result property="name" column="application_name"/>
        <result property="recordNum" column="recordNum"/>
        <result property="successCount" column="success_count"/>
        <result property="failureCount" column="failure_count"/>
        <result property="recordProportion" column="recordProportion"/>
    </resultMap>

    <resultMap type="org.thingsboard.server.common.data.yunteng.dto.OpenApiRecordClassifyDTO" id="map">
        <result property="classify" column="classify"/>
        <result property="time" column="time_period"/>
        <result property="count" column="call_count"/>

    </resultMap>

    <select id="getTop" resultMap="DTOMap">
        SELECT
        application_name,
        COUNT(*) AS recordNum,
        ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM tk_open_api_record WHERE tenant_id = #{tenantId} ), 2) AS recordProportion,
        SUM(CASE WHEN state = 1 THEN 1 ELSE 0 END) AS success_count,
        SUM(CASE WHEN state = 0 THEN 1 ELSE 0 END) AS failure_count
        FROM  tk_open_api_record
        WHERE tenant_id = #{tenantId}
        GROUP BY application_name
        ORDER BY recordNum desc
        <if test="page != null">
            LIMIT #{pageSize}
            OFFSET (#{page} - 1) * #{pageSize};
        </if>
    </select>

    <select id="getClassify" resultMap="map">
        SELECT
        classify,
        <if test="type == 'hour'">
            DATE_TRUNC('hour', request_time) AS time_period,
        </if>
        <if test="type == 'week'">
            DATE_TRUNC('week', request_time) AS time_period,
        </if>
        <if test="type == 'month'">
            DATE_TRUNC('month', request_time) AS time_period,
        </if>
        COUNT(*) AS call_count
        FROM
        tk_open_api_record
        WHERE tenant_id = #{tenantId}
        GROUP BY
        classify,
        <if test="type == 'hour'">
        DATE_TRUNC('hour', request_time)
        </if>
        <if test="type == 'week'">
            DATE_TRUNC('week', request_time)
        </if>
        <if test="type == 'month'">
            DATE_TRUNC('month', request_time)
        </if>
        ORDER BY
        time_period
    </select>

    <delete id="deleteByAppIds">
        DELETE FROM tk_open_api_record WHERE application_id IN
        <foreach collection="applicationIds" item="applicationId" open="(" separator="," close=")">
            #{applicationId}
        </foreach>
    </delete>

</mapper>