<?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="ink.wgink.module.file.media.dao.rtmp.IRtmpClientDao">

    <resultMap id="clientDTO" type="ink.wgink.module.file.media.pojo.dtos.rtmp.RtmpClientDTO">
        <result column="client_id" property="clientId"/>
        <result column="client_code" property="clientCode"/>
        <result column="client_name" property="clientName"/>
        <result column="client_summary" property="clientSummary"/>
        <result column="client_key" property="clientKey"/>
        <result column="client_secret" property="clientSecret"/>
        <result column="client_status" property="clientStatus"/>
        <result column="client_url" property="clientUrl"/>
        <result column="expire_time" property="expireTime"/>
        <result column="creator" property="creator"/>
        <result column="gmt_create" property="gmtCreate"/>
        <result column="modifier" property="modifier"/>
        <result column="gmt_modified" property="gmtModified"/>
    </resultMap>

    <resultMap id="clientBO" type="ink.wgink.module.file.media.pojo.bos.rtmp.RtmpClientBO">
        <result column="client_id" property="clientId"/>
        <result column="client_code" property="clientCode"/>
        <result column="client_name" property="clientName"/>
        <result column="client_summary" property="clientSummary"/>
        <result column="client_key" property="clientKey"/>
        <result column="client_secret" property="clientSecret"/>
        <result column="client_status" property="clientStatus"/>
        <result column="client_url" property="clientUrl"/>
        <result column="expire_time" property="expireTime"/>
        <result column="creator" property="creator"/>
        <result column="gmt_create" property="gmtCreate"/>
        <result column="modifier" property="modifier"/>
        <result column="gmt_modified" property="gmtModified"/>
        <result column="is_delete" property="isDelete"/>
    </resultMap>

    <resultMap id="clientPO" type="ink.wgink.module.file.media.pojo.pos.rtmp.RtmpClientPO">
        <result column="client_id" property="clientId"/>
        <result column="client_code" property="clientCode"/>
        <result column="client_name" property="clientName"/>
        <result column="client_summary" property="clientSummary"/>
        <result column="client_key" property="clientKey"/>
        <result column="client_secret" property="clientSecret"/>
        <result column="client_status" property="clientStatus"/>
        <result column="client_url" property="clientUrl"/>
        <result column="expire_time" property="expireTime"/>
        <result column="area_code" property="expireTime"/>
        <result column="area_name" property="expireTime"/>
        <result column="position_lng" property="expireTime"/>
        <result column="position_lat" property="expireTime"/>
        <result column="position_address" property="expireTime"/>
        <result column="creator" property="creator"/>
        <result column="gmt_create" property="gmtCreate"/>
        <result column="modifier" property="modifier"/>
        <result column="gmt_modified" property="gmtModified"/>
        <result column="is_delete" property="isDelete"/>
    </resultMap>

    <!-- 建表 -->
    <update id="createTable">
        CREATE TABLE IF NOT EXISTS `rtmp_client` (
            `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
            `client_id` char(36) DEFAULT NULL COMMENT '主键',
            `client_code` varchar(255) DEFAULT NULL COMMENT '设备编码',
            `client_name` varchar(255) DEFAULT NULL COMMENT '客户端名称',
            `client_summary` varchar(255) DEFAULT NULL COMMENT '客户端描述',
            `client_key` varchar(255) DEFAULT NULL COMMENT '客户端用户名',
            `client_secret` varchar(255) DEFAULT NULL COMMENT '客户端密码',
            `client_status` varchar(20) DEFAULT '1' COMMENT '设备状态',
            `client_url` text COMMENT '客户端地址',
            `expire_time` varchar(255) DEFAULT '2099-12-31' COMMENT '过期时间',
            `area_code` varchar(255) DEFAULT NULL COMMENT '地区编码',
            `area_name` varchar(255) DEFAULT NULL COMMENT '地区名称',
            `position_lng` varchar(255) DEFAULT NULL COMMENT '位置经度',
            `position_lat` varchar(255) DEFAULT NULL COMMENT '位置纬度',
            `position_address` varchar(500) DEFAULT NULL COMMENT '位置地址',
            `creator` char(36) DEFAULT NULL COMMENT '创建人',
            `gmt_create` datetime DEFAULT NULL COMMENT '创建时间',
            `modifier` char(36) DEFAULT NULL COMMENT '修改人',
            `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
            `is_delete` int(1) DEFAULT '0' COMMENT '是否删除',
            PRIMARY KEY (`id`),
            UNIQUE KEY `client_id` (`client_id`),
            UNIQUE KEY `client_code` (`client_code`),
            KEY `area_code` (`area_code`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='rtmp客户端';
    </update>

    <!-- 新增rtmp客户端 -->
    <insert id="save" parameterType="map">
        INSERT INTO rtmp_client(
            client_id,
            client_code,
            client_name,
            client_summary,
            client_key,
            client_secret,
            client_status,
            client_url,
            expire_time,
            creator,
            gmt_create,
            modifier,
            gmt_modified,
            is_delete
        ) VALUES(
            #{clientId},
            #{clientCode},
            #{clientName},
            #{clientSummary},
            #{clientKey},
            #{clientSecret},
            #{clientStatus},
            #{clientUrl},
            #{expireTime},
            #{creator},
            #{gmtCreate},
            #{modifier},
            #{gmtModified},
            #{isDelete}
        )
    </insert>

    <!-- 删除rtmp客户端 -->
    <update id="remove" parameterType="map">
        UPDATE
            rtmp_client
        SET
            gmt_modified = #{gmtModified},
            modifier = #{modifier},
            is_delete = 1
        WHERE
            client_id IN
        <foreach collection="clientIds" index="index" open="(" separator="," close=")">
            #{clientIds[${index}]}
        </foreach>
    </update>

    <!-- 删除rtmp客户端（物理） -->
    <update id="delete" parameterType="map">
        DELETE FROM
            rtmp_client
        WHERE
            client_id IN
        <foreach collection="clientIds" index="index" open="(" separator="," close=")">
            #{clientIds[${index}]}
        </foreach>
    </update>

    <!-- 修改rtmp客户端 -->
    <update id="update" parameterType="map">
        UPDATE
            rtmp_client
        SET
        <if test="clientName != null and clientName != ''">
            client_name = #{clientName},
        </if>
        <if test="clientSummary != null and clientSummary != ''">
            client_summary = #{clientSummary},
        </if>
        <if test="clientKey != null and clientKey != ''">
            client_key = #{clientKey},
        </if>
        <if test="clientSecret != null and clientSecret != ''">
            client_secret = #{clientSecret},
        </if>
        <if test="clientStatus != null and clientStatus != ''">
            client_status = #{clientStatus},
        </if>
        <if test="clientUrl != null and clientUrl != ''">
            client_url = #{clientUrl},
        </if>
        <if test="expireTime != null and expireTime != ''">
            expire_time = #{expireTime},
        </if>
            gmt_modified = #{gmtModified},
            modifier = #{modifier},
            client_id = client_id
        WHERE
            client_id = #{clientId}
    </update>

    <!-- rtmp客户端详情 -->
    <select id="get" parameterType="map" resultMap="clientDTO">
        SELECT
            t1.client_code,
            t1.client_name,
            t1.client_summary,
            t1.client_key,
            t1.client_secret,
            t1.client_status,
            t1.client_url,
            t1.expire_time,
            t1.client_id
        FROM
            rtmp_client t1
        WHERE
            t1.is_delete = 0
            <if test="clientId != null and clientId != ''">
        AND
            t1.client_id = #{clientId}
            </if>
    </select>

    <!-- rtmp客户端详情 -->
    <select id="getBO" parameterType="map" resultMap="clientBO">
        SELECT
            t1.client_id,
            t1.client_code,
            t1.client_name,
            t1.client_summary,
            t1.client_key,
            t1.client_secret,
            t1.client_status,
            t1.client_url,
            t1.expire_time,
            t1.creator,
            t1.gmt_create,
            t1.modifier,
            t1.gmt_modified,
            t1.is_delete
        FROM
            rtmp_client t1
        WHERE
            t1.is_delete = 0
            <if test="clientId != null and clientId != ''">
        AND
            t1.client_id = #{clientId}
            </if>
    </select>

    <!-- rtmp客户端详情 -->
    <select id="getPO" parameterType="map" resultMap="clientPO">
        SELECT
            t1.client_id,
            t1.client_code,
            t1.client_name,
            t1.client_summary,
            t1.client_key,
            t1.client_secret,
            t1.client_status,
            t1.client_url,
            t1.expire_time,
            t1.creator,
            t1.gmt_create,
            t1.modifier,
            t1.gmt_modified,
            t1.is_delete
        FROM
            rtmp_client t1
        WHERE
            t1.is_delete = 0
            <if test="clientId != null and clientId != ''">
        AND
            t1.client_id = #{clientId}
            </if>
    </select>

    <!-- rtmp客户端列表 -->
    <select id="list" parameterType="map" resultMap="clientDTO">
        SELECT
            t1.client_id,
            t1.client_code,
            t1.client_name,
            t1.client_summary,
            t1.client_key,
            t1.client_secret,
            t1.client_status,
            t1.client_url,
            t1.expire_time,
            t1.creator,
            t1.gmt_create,
            t1.modifier,
            t1.gmt_modified
        FROM
            rtmp_client t1
        WHERE
            t1.is_delete = 0
        <if test="keywords != null and keywords != ''">
        AND (
            <!-- 这里添加其他条件 -->
            t1.id LIKE CONCAT('%', #{keywords}, '%')
        )
        </if>
        <if test="startTime != null and startTime != ''">
        AND
            LEFT(t1.gmt_create, 10) <![CDATA[ >= ]]> #{startTime}
        </if>
        <if test="endTime != null and endTime != ''">
            AND
            LEFT(t1.gmt_create, 10) <![CDATA[ <= ]]> #{endTime}
        </if>
        <if test="clientIds != null and clientIds.size > 0">
        AND
            t1.client_id IN
            <foreach collection="clientIds" index="index" open="(" separator="," close=")">
                #{clientIds[${index}]}
            </foreach>
        </if>
    </select>

    <!-- rtmp客户端列表 -->
    <select id="listBO" parameterType="map" resultMap="clientBO">
        SELECT
            t1.client_id,
            t1.client_code,
            t1.client_name,
            t1.client_summary,
            t1.client_key,
            t1.client_secret,
            t1.client_status,
            t1.client_url,
            t1.expire_time,
            t1.creator,
            t1.gmt_create,
            t1.modifier,
            t1.gmt_modified,
            t1.is_delete
        FROM
            rtmp_client t1
        WHERE
            t1.is_delete = 0
        <if test="keywords != null and keywords != ''">
        AND (
            <!-- 这里添加其他条件 -->
            t1.id LIKE CONCAT('%', #{keywords}, '%')
        )
        </if>
        <if test="startTime != null and startTime != ''">
        AND
            LEFT(t1.gmt_create, 10) <![CDATA[ >= ]]> #{startTime}
        </if>
        <if test="endTime != null and endTime != ''">
        AND
            LEFT(t1.gmt_create, 10) <![CDATA[ <= ]]> #{endTime}
        </if>
        <if test="clientIds != null and clientIds.size > 0">
        AND
            t1.client_id IN
            <foreach collection="clientIds" index="index" open="(" separator="," close=")">
                #{clientIds[${index}]}
            </foreach>
        </if>
    </select>

    <!-- rtmp客户端列表 -->
    <select id="listPO" parameterType="map" resultMap="clientPO">
        SELECT
            t1.client_id,
            t1.client_code,
            t1.client_name,
            t1.client_summary,
            t1.client_key,
            t1.client_secret,
            t1.client_status,
            t1.client_url,
            t1.expire_time,
            t1.creator,
            t1.gmt_create,
            t1.modifier,
            t1.gmt_modified,
            t1.is_delete
        FROM
            rtmp_client t1
        WHERE
            t1.is_delete = 0
        <if test="keywords != null and keywords != ''">
        AND (
            <!-- 这里添加其他条件 -->
            t1.id LIKE CONCAT('%', #{keywords}, '%')
        )
        </if>
        <if test="startTime != null and startTime != ''">
        AND
            LEFT(t1.gmt_create, 10) <![CDATA[ >= ]]> #{startTime}
        </if>
        <if test="endTime != null and endTime != ''">
        AND
            LEFT(t1.gmt_create, 10) <![CDATA[ <= ]]> #{endTime}
        </if>
        <if test="clientIds != null and clientIds.size > 0">
        AND
            t1.client_id IN
            <foreach collection="clientIds" index="index" open="(" separator="," close=")">
                #{clientIds[${index}]}
            </foreach>
        </if>
    </select>

    <!-- rtmp客户端统计  -->
    <select id="count" parameterType="map" resultType="Integer">
        SELECT
            COUNT(*)
        FROM
            rtmp_client t1
        WHERE
            t1.is_delete = 0
    </select>

    <!-- 最新客户端 -->
    <select id="latestClientCode" parameterType="java.lang.String" resultType="java.lang.String">
        SELECT
            client_code
        FROM
            rtmp_client
        WHERE
            is_delete = 0
        AND
            client_code LIKE CONCAT(#{_parameter}, '%')
        ORDER BY
            client_code DESC
        LIMIT 1
    </select>

</mapper>