<?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.SmsPhonepoolMapper">

    <resultMap id="BaseResultMap" type="cn.roadm.bo.SmsPhonepool">
        <result column="id" property="id"/>
        <result column="city" property="city"/>
        <result column="createtime" property="createtime"/>
        <result column="updatetime" property="updatetime"/>
        <result column="gid" property="gid"/>
        <result column="groupName" property="groupName"/>
        <result column="phone" property="phone"/>
    </resultMap>
    <sql id="Base_Column_List">
        `id`,`city`,`gid`,`phone`,`createtime`,`updatetime`
    </sql>

    <select id="listPageSmsPhonepool" parameterType="cn.roadm.bo.SmsPhonepoolInfo" resultMap="BaseResultMap">
        select
        p.`id`,p.`city`,p.`gid`,p.`phone`,p.`createtime`,p.`updatetime`,g.`name` as groupName
        from sms_phonepool p ,sms_phonepool_group g
        where p.gid = g.id
            <if test="groupId != null">
                and p.gid = #{groupId}
            </if>
            <if test="@cn.roadm.util.StringUtil@isNotEmpty(phone)">
                and p.phone like CONCAT(#{phone},'%')
            </if>
        order by p.id desc
    </select>

    <select id="getSmsPhonepoolByGroupId" parameterType="list" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from sms_phonepool where
        gid in
        <foreach collection="groupIds" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </select>

    <insert id="insert" parameterType="SmsPhonepool">
        insert into sms_phonepool (`city`,`gid`,`phone`,`createtime`,`updatetime`)
            value (#{city,jdbcType=VARCHAR},#{gid,jdbcType=INTEGER},#{phone,jdbcType=VARCHAR},#{createtime,jdbcType=TIMESTAMP},#{updatetime,jdbcType=TIMESTAMP})
    </insert>

    <select id="selecteSmsPhonepoolByPhone" parameterType="string" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from sms_phonepool
        where phone = #{phoneNumber}
    </select>

    <update id="update" parameterType="SmsPhonepool">
        update sms_phonepool s
        <set>
            <if test="city != null and city != ''">
                s.city = #{city},
            </if>
            <if test="gid != null and gid > 0" >
                s.gid = #{gid},
            </if>
            <if test="phone != null and phone != '' ">
                s.phone = #{phone},
            </if>
            <if test="updatetime != null and updatetime != '' ">
                s.updatetime = #{updatetime},
            </if>
        </set>
        where id = #{id}
    </update>

    <update id="updateByGId">
        update sms_phonepool s
        <set>
            <if test="smsPhonepool.city != null and smsPhonepool.city != ''">
                s.city = #{smsPhonepool.city},
            </if>
            <if test="smsPhonepool.phone != null and smsPhonepool.phone != '' ">
                s.phone = #{smsPhonepool.phone},
            </if>
            <if test="smsPhonepool.updatetime != null and smsPhonepool.updatetime != '' ">
                s.updatetime = #{smsPhonepool.updatetime},
            </if>
        </set>
        where s.gid in
        <foreach collection="groupIds" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </update>

    <delete id="deleteByPhone" parameterType="string">
        delete from sms_phonepool where phone=#{phone}
    </delete>

    <delete id="deleteByGroupid" parameterType="integer">
        delete from sms_phonepool where gid=#{gid}
    </delete>
</mapper>