|
|
@@ -0,0 +1,107 @@
|
|
|
+<?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.fs.proxy.mapper.CompanySmsDeviceMapper">
|
|
|
+
|
|
|
+ <resultMap type="com.fs.proxy.domain.CompanySmsDevice" id="DeviceResult">
|
|
|
+ <result property="deviceId" column="device_id"/>
|
|
|
+ <result property="tenantId" column="tenant_id"/>
|
|
|
+ <result property="companyUserId" column="company_user_id"/>
|
|
|
+ <result property="deviceName" column="device_name"/>
|
|
|
+ <result property="imei" column="imei"/>
|
|
|
+ <result property="appVersion" column="app_version"/>
|
|
|
+ <result property="middlewareId" column="middleware_id"/>
|
|
|
+ <result property="lastHeartbeat" column="last_heartbeat"/>
|
|
|
+ <result property="status" column="status"/>
|
|
|
+ <result property="remark" column="remark"/>
|
|
|
+ <result property="createTime" column="create_time"/>
|
|
|
+ <result property="updateTime" column="update_time"/>
|
|
|
+ <result property="tenantName" column="tenant_name"/>
|
|
|
+ <result property="userName" column="user_name"/>
|
|
|
+ <result property="middlewareName" column="middleware_name"/>
|
|
|
+ <result property="cardCount" column="card_count"/>
|
|
|
+ <result property="onlineCardCount" column="online_card_count"/>
|
|
|
+ </resultMap>
|
|
|
+
|
|
|
+ <sql id="selectDeviceVo">
|
|
|
+ SELECT d.device_id, d.tenant_id, d.company_user_id, d.device_name, d.imei,
|
|
|
+ d.app_version, d.middleware_id, d.last_heartbeat, d.status,
|
|
|
+ d.remark, d.create_time, d.update_time,
|
|
|
+ ti.tenant_name,
|
|
|
+ u.user_name,
|
|
|
+ m.middleware_name,
|
|
|
+ (SELECT COUNT(1) FROM company_sms_card c WHERE c.device_id = d.device_id) AS card_count,
|
|
|
+ (SELECT COUNT(1) FROM company_sms_card c WHERE c.device_id = d.device_id AND c.status = 1) AS online_card_count
|
|
|
+ FROM company_sms_device d
|
|
|
+ LEFT JOIN tenant_info ti ON d.tenant_id = ti.id
|
|
|
+ LEFT JOIN sys_user u ON d.company_user_id = u.user_id
|
|
|
+ LEFT JOIN company_sms_card_middleware m ON d.middleware_id = m.id
|
|
|
+ </sql>
|
|
|
+
|
|
|
+ <select id="selectDeviceList" resultMap="DeviceResult">
|
|
|
+ <include refid="selectDeviceVo"/>
|
|
|
+ <where>
|
|
|
+ <if test="tenantId != null">AND d.tenant_id = #{tenantId}</if>
|
|
|
+ <if test="companyUserId != null">AND d.company_user_id = #{companyUserId}</if>
|
|
|
+ <if test="imei != null and imei != ''">AND d.imei LIKE CONCAT('%', #{imei}, '%')</if>
|
|
|
+ <if test="deviceName != null and deviceName != ''">AND d.device_name LIKE CONCAT('%', #{deviceName}, '%')</if>
|
|
|
+ <if test="status != null">AND d.status = #{status}</if>
|
|
|
+ </where>
|
|
|
+ ORDER BY d.device_id DESC
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="selectDeviceById" resultMap="DeviceResult">
|
|
|
+ <include refid="selectDeviceVo"/>
|
|
|
+ WHERE d.device_id = #{deviceId}
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="selectDeviceByImei" resultMap="DeviceResult">
|
|
|
+ <include refid="selectDeviceVo"/>
|
|
|
+ WHERE d.imei = #{imei}
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <insert id="insertDevice" useGeneratedKeys="true" keyProperty="deviceId">
|
|
|
+ INSERT INTO company_sms_device (tenant_id, company_user_id, device_name, imei,
|
|
|
+ app_version, middleware_id, last_heartbeat, status, remark, create_time)
|
|
|
+ VALUES (#{tenantId}, #{companyUserId}, #{deviceName}, #{imei},
|
|
|
+ #{appVersion}, #{middlewareId}, #{lastHeartbeat}, #{status}, #{remark}, NOW())
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <update id="updateDevice">
|
|
|
+ UPDATE company_sms_device
|
|
|
+ <set>
|
|
|
+ <if test="tenantId != null">tenant_id = #{tenantId},</if>
|
|
|
+ <if test="companyUserId != null">company_user_id = #{companyUserId},</if>
|
|
|
+ <if test="deviceName != null">device_name = #{deviceName},</if>
|
|
|
+ <if test="appVersion != null">app_version = #{appVersion},</if>
|
|
|
+ <if test="middlewareId != null">middleware_id = #{middlewareId},</if>
|
|
|
+ <if test="status != null">status = #{status},</if>
|
|
|
+ <if test="remark != null">remark = #{remark},</if>
|
|
|
+ update_time = NOW()
|
|
|
+ </set>
|
|
|
+ WHERE device_id = #{deviceId}
|
|
|
+ </update>
|
|
|
+
|
|
|
+ <update id="assignUser">
|
|
|
+ UPDATE company_sms_device SET company_user_id = #{companyUserId}, update_time = NOW()
|
|
|
+ WHERE device_id = #{deviceId}
|
|
|
+ </update>
|
|
|
+
|
|
|
+ <delete id="deleteDeviceById">
|
|
|
+ DELETE FROM company_sms_device WHERE device_id = #{deviceId}
|
|
|
+ </delete>
|
|
|
+
|
|
|
+ <!-- 心跳更新: 按imei更新 -->
|
|
|
+ <update id="updateHeartbeat">
|
|
|
+ UPDATE company_sms_device
|
|
|
+ SET last_heartbeat = NOW(), status = 1
|
|
|
+ <if test="appVersion != null">, app_version = #{appVersion}</if>
|
|
|
+ WHERE imei = #{imei}
|
|
|
+ </update>
|
|
|
+
|
|
|
+ <!-- 批量更新离线: 90秒无心跳 -->
|
|
|
+ <update id="updateOfflineDevices">
|
|
|
+ UPDATE company_sms_device SET status = 0
|
|
|
+ WHERE status = 1 AND last_heartbeat < DATE_SUB(NOW(), INTERVAL #{timeoutSeconds} SECOND)
|
|
|
+ </update>
|
|
|
+
|
|
|
+</mapper>
|