| <?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.ruoyi.alarm.apponekey.mapper.ArdAlarmApponekeyMapper"> | 
|      | 
|     <resultMap type="ArdAlarmApponekey" id="ArdAlarmApponekeyResult"> | 
|         <result property="id"    column="id"    /> | 
|         <result property="userId"    column="user_id"    /> | 
|         <result property="name"    column="name"    /> | 
|         <result property="longitude"    column="longitude"    /> | 
|         <result property="latitude"    column="latitude"    /> | 
|         <result property="altitude"    column="altitude"    /> | 
|         <result property="recordUrl"    column="record_url"    /> | 
|         <result property="createTime"    column="create_time"    /> | 
|         <result property="viewTime"    column="view_time"    /> | 
|     </resultMap> | 
|   | 
|     <sql id="selectArdAlarmApponekeyVo"> | 
|         select id, user_id,name, longitude, latitude, altitude, record_url, create_time,view_time from ard_alarm_apponekey | 
|     </sql> | 
|   | 
|     <select id="selectArdAlarmApponekeyList" parameterType="ArdAlarmApponekey" resultMap="ArdAlarmApponekeyResult"> | 
|         <include refid="selectArdAlarmApponekeyVo"/> | 
|         <where>   | 
|         </where> | 
|     </select> | 
|      | 
|     <select id="selectArdAlarmApponekeyById" parameterType="String" resultMap="ArdAlarmApponekeyResult"> | 
|         <include refid="selectArdAlarmApponekeyVo"/> | 
|         where id = #{id} | 
|     </select> | 
|          | 
|     <insert id="insertArdAlarmApponekey" parameterType="ArdAlarmApponekey"> | 
|         insert into ard_alarm_apponekey | 
|         <trim prefix="(" suffix=")" suffixOverrides=","> | 
|             <if test="id != null">id,</if> | 
|             <if test="userId != null">user_id,</if> | 
|             <if test="name != null">name,</if> | 
|             <if test="longitude != null">longitude,</if> | 
|             <if test="latitude != null">latitude,</if> | 
|             <if test="altitude != null">altitude,</if> | 
|             <if test="recordUrl != null">record_url,</if> | 
|             <if test="createTime != null">create_time,</if> | 
|             <if test="viewTime != null">view_time,</if> | 
|          </trim> | 
|         <trim prefix="values (" suffix=")" suffixOverrides=","> | 
|             <if test="id != null">#{id},</if> | 
|             <if test="userId != null">#{userId},</if> | 
|             <if test="name != null">#{name},</if> | 
|             <if test="longitude != null">#{longitude},</if> | 
|             <if test="latitude != null">#{latitude},</if> | 
|             <if test="altitude != null">#{altitude},</if> | 
|             <if test="recordUrl != null">#{recordUrl},</if> | 
|             <if test="createTime != null">#{createTime},</if> | 
|             <if test="viewTime != null">#{viewTime},</if> | 
|          </trim> | 
|     </insert> | 
|   | 
|     <update id="updateArdAlarmApponekey" parameterType="ArdAlarmApponekey"> | 
|         update ard_alarm_apponekey | 
|         <trim prefix="SET" suffixOverrides=","> | 
|             <if test="userId != null">user_id = #{userId},</if> | 
|             <if test="name != null">name = #{name},</if> | 
|             <if test="longitude != null">longitude = #{longitude},</if> | 
|             <if test="latitude != null">latitude = #{latitude},</if> | 
|             <if test="altitude != null">altitude = #{altitude},</if> | 
|             <if test="recordUrl != null">record_url = #{recordUrl},</if> | 
|             <if test="createTime != null">create_time = #{createTime},</if> | 
|             <if test="viewTime != null">view_time = #{viewTime},</if> | 
|         </trim> | 
|         where id = #{id} | 
|     </update> | 
|   | 
|     <delete id="deleteArdAlarmApponekeyById" parameterType="String"> | 
|         delete from ard_alarm_apponekey where id = #{id} | 
|     </delete> | 
|   | 
|     <delete id="deleteArdAlarmApponekeyByIds" parameterType="String"> | 
|         delete from ard_alarm_apponekey where id in  | 
|         <foreach item="id" collection="array" open="(" separator="," close=")"> | 
|             #{id} | 
|         </foreach> | 
|     </delete> | 
|     <select id="selectCountByAlarmTime" resultType="Integer"> | 
|         SELECT COUNT(DISTINCT aaak.user_id) | 
|         FROM ard_alarm_apponekey aaak | 
|         WHERE aaak.create_time >= CURRENT_TIMESTAMP - INTERVAL '%${refreshTime}%' MINUTE | 
|           and aaak.view_time is null | 
|     </select> | 
|     <select id="selectListAllByCommand" resultMap="ArdAlarmApponekeyResult"> | 
|         SELECT T.* | 
|         FROM | 
|             ( | 
|                 SELECT | 
|                     aaa.ID, | 
|                     aaa.user_id, | 
|                     aaa.NAME, | 
|                     aaa.create_time, | 
|                     aaa.longitude, | 
|                     aaa.latitude, | 
|                     aaa.altitude, | 
|                     aaa.record_url, | 
|                     ROW_NUMBER () OVER ( PARTITION BY aaa.NAME ORDER BY aaa.create_time DESC ) AS rn, | 
|                         COUNT ( CASE WHEN aaa.view_time IS NULL THEN 1 END ) OVER ( PARTITION BY aaa.NAME ) AS COUNT, | 
|         COUNT ( aaa.create_time ) OVER ( PARTITION BY aaa.NAME ) AS total | 
|                 FROM | 
|                     ard_alarm_apponekey aaa | 
|                 WHERE | 
|                     aaa.create_time >= ( CURRENT_TIMESTAMP - INTERVAL '%${refreshTime}%' MINUTE ) | 
|                 ORDER BY | 
|                     aaa.create_time DESC | 
|             ) T | 
|         WHERE | 
|             T.rn = 1 | 
|     </select> | 
|     <update id="updateViewTimeByUserId" parameterType="String"> | 
|         update ard_alarm_apponekey | 
|         set view_time=#{viewTime} | 
|         where user_id = #{userId} | 
|           and create_time <= #{createTime} | 
|           and view_time is null | 
|     </update> | 
| </mapper> |