<?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.roadm.mapper.SmsReplyKeywordMapper" >
    <resultMap id="BaseResultMap" type="SmsReplyKeyword" >
        <id column="ID" property="id" jdbcType="INTEGER" />
        <result column="sp_id" property="spId" jdbcType="INTEGER" />
        <result column="keyword" property="keyword" jdbcType="VARCHAR" />
        <result column="transaction_code" property="transactionCode" jdbcType="VARCHAR" />
        <result column="mq_id" property="mqId" jdbcType="INTEGER" />
        <result column="params" property="params" jdbcType="VARCHAR" />
        <result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
        <result column="is_del" property="isDel" jdbcType="INTEGER" />
        <result column="mq_desc" property="mqDesc" jdbcType="VARCHAR" />
    </resultMap>
    <resultMap id="resultMQMap" type="SmsReplyKeywordMQ">
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="mq_topic" property="mqTopic" jdbcType="VARCHAR" />
        <result column="mq_desc" property="mqDesc" jdbcType="VARCHAR" />
        <result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
    </resultMap>

    <select id="selectAllKeyWordMQ" resultMap="resultMQMap">
        SELECT id ,mq_topic,mq_desc FROM sms_reply_keyword_mq WHERE status = 1
    </select>
    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
       SELECT k.ID,k.sp_id,k.keyword,k.transaction_code,k.mq_id,k.params,k.create_time,k.is_del,m.mq_desc
       from sms_reply_keyword k,sms_reply_keyword_mq m
       WHERE k.mq_id = m.id
       AND k.ID = #{id,jdbcType=INTEGER}
    </select>

    <insert id="insert" parameterType="SmsReplyKeyword" >
        insert into sms_reply_keyword (sp_id, keyword,transaction_code,
            mq_id, params, create_time,
            is_del)
        values (#{spId,jdbcType=INTEGER}, #{keyword,jdbcType=VARCHAR},#{transactionCode,jdbcType=VARCHAR},
            #{mqId,jdbcType=INTEGER}, #{params,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},
            #{isDel,jdbcType=INTEGER})
    </insert>

    <update id="updateByPrimaryKeySelective" parameterType="SmsReplyKeyword" >
        update sms_reply_keyword
        <set >
            <if test="spId != null" >
                sp_id = #{spId,jdbcType=INTEGER},
            </if>
            <if test="keyword != null and keyword != ''">
                keyword = #{keyword,jdbcType=VARCHAR},
            </if>
            <if test="transactionCode != null and transactionCode != ''" >
                transaction_code = #{transactionCode,jdbcType=VARCHAR},
            </if>
            <if test="mqId != null" >
                mq_id = #{mqId,jdbcType=INTEGER},
            </if>
            <if test="params != null" >
                params = #{params,jdbcType=VARCHAR},
            </if>
            <if test="createTime != null" >
                create_time = #{createTime,jdbcType=TIMESTAMP},
            </if>
            <if test="isDel != null" >
                is_del = #{isDel,jdbcType=INTEGER}
            </if>

        </set>
        where ID = #{id,jdbcType=INTEGER}
    </update>

    <delete id="deleteSmsReplyKeyword" parameterType="Integer" >
        UPDATE  sms_reply_keyword set is_del = 1
        where ID = #{id,jdbcType=INTEGER}
    </delete>

    <select id="listPageSmsReplyKeyword" resultMap="BaseResultMap" parameterType="SmsReplyKeyword" >
        SELECT k.ID,k.sp_id,k.keyword,k.transaction_code,k.mq_id,k.params,k.create_time,k.is_del,m.mq_desc
        from sms_reply_keyword k,sms_reply_keyword_mq m
        WHERE k.mq_id = m.id
        and k.is_del = 0
        <if test="spId != null and spId > 0">
            AND k.sp_id=#{spId}
        </if>
        <if test="keyword != null and keyword != ''">
            AND keyword like CONCAT('%',#{keyword},'%')
        </if>
        order by id desc
    </select>
    <select id="countBySmsReplyKeyword" resultType="java.lang.Integer" parameterType="SmsReplyKeyword" >
        select
        count(1)
        from sms_reply_keyword
        <where>
            AND  is_del = 0
            <if test="spId != null and spId > 0">
                AND sp_id=#{spId}
            </if>
            <if test="keyword !=null and keyword != ''">
                and keyword=#{keyword}
            </if>
        </where>
    </select>
</mapper>