<?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.tzld.piaoquan.growth.common.dao.mapper.SpecialSendMessageMapper">
    <resultMap id="BaseResultMap" type="com.tzld.piaoquan.growth.common.model.po.SpecialSendMessage">
        <id column="id" jdbcType="BIGINT" property="id"/>
        <result column="staff_id" jdbcType="BIGINT" property="staffId"/>
        <result column="user_id" jdbcType="BIGINT" property="userId"/>
        <result column="group" jdbcType="INTEGER" property="group"/>
        <result column="content" jdbcType="VARCHAR" property="content"/>
        <result column="attachment_ids" jdbcType="VARCHAR" property="attachmentIds"/>
        <result column="pre_send_date" jdbcType="VARCHAR" property="preSendDate"/>
        <result column="is_send" jdbcType="INTEGER" property="isSend"/>
        <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
        <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
    </resultMap>
    <sql id="Example_Where_Clause">
        <where>
            <foreach collection="oredCriteria" item="criteria" separator="or">
                <if test="criteria.valid">
                    <trim prefix="(" prefixOverrides="and" suffix=")">
                        <foreach collection="criteria.criteria" item="criterion">
                            <choose>
                                <when test="criterion.noValue">
                                    and ${criterion.condition}
                                </when>
                                <when test="criterion.singleValue">
                                    and ${criterion.condition} #{criterion.value}
                                </when>
                                <when test="criterion.betweenValue">
                                    and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                                </when>
                                <when test="criterion.listValue">
                                    and ${criterion.condition}
                                    <foreach close=")" collection="criterion.value" item="listItem" open="("
                                             separator=",">
                                        #{listItem}
                                    </foreach>
                                </when>
                            </choose>
                        </foreach>
                    </trim>
                </if>
            </foreach>
        </where>
    </sql>
    <sql id="Update_By_Example_Where_Clause">
        <where>
            <foreach collection="example.oredCriteria" item="criteria" separator="or">
                <if test="criteria.valid">
                    <trim prefix="(" prefixOverrides="and" suffix=")">
                        <foreach collection="criteria.criteria" item="criterion">
                            <choose>
                                <when test="criterion.noValue">
                                    and ${criterion.condition}
                                </when>
                                <when test="criterion.singleValue">
                                    and ${criterion.condition} #{criterion.value}
                                </when>
                                <when test="criterion.betweenValue">
                                    and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                                </when>
                                <when test="criterion.listValue">
                                    and ${criterion.condition}
                                    <foreach close=")" collection="criterion.value" item="listItem" open="("
                                             separator=",">
                                        #{listItem}
                                    </foreach>
                                </when>
                            </choose>
                        </foreach>
                    </trim>
                </if>
            </foreach>
        </where>
    </sql>
    <sql id="Base_Column_List">
        id
        , staff_id, user_id, `group`, content, attachment_ids, pre_send_date, is_send,
    create_time, update_time
    </sql>
    <select id="selectByExample" parameterType="com.tzld.piaoquan.growth.common.model.po.SpecialSendMessageExample"
            resultMap="BaseResultMap">
        select
        <if test="distinct">
            distinct
        </if>
        <include refid="Base_Column_List"/>
        from we_com_special_send_message
        <if test="_parameter != null">
            <include refid="Example_Where_Clause"/>
        </if>
        <if test="orderByClause != null">
            order by ${orderByClause}
        </if>
        <if test="page != null">
            limit #{page.offset} , #{page.pageSize}
        </if>
    </select>
    <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from we_com_special_send_message
        where id = #{id,jdbcType=BIGINT}
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
        delete
        from we_com_special_send_message
        where id = #{id,jdbcType=BIGINT}
    </delete>
    <delete id="deleteByExample" parameterType="com.tzld.piaoquan.growth.common.model.po.SpecialSendMessageExample">
        delete from we_com_special_send_message
        <if test="_parameter != null">
            <include refid="Example_Where_Clause"/>
        </if>
    </delete>
    <insert id="insert" parameterType="com.tzld.piaoquan.growth.common.model.po.SpecialSendMessage">
        insert into we_com_special_send_message (id, staff_id, user_id,
                                                 `group`, content, attachment_ids,
                                                 pre_send_date, is_send, create_time,
                                                 update_time)
        values (#{id,jdbcType=BIGINT}, #{staffId,jdbcType=BIGINT}, #{userId,jdbcType=BIGINT},
                #{group,jdbcType=INTEGER}, #{content,jdbcType=VARCHAR}, #{attachmentIds,jdbcType=VARCHAR},
                #{preSendDate,jdbcType=VARCHAR}, #{isSend,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP},
                #{updateTime,jdbcType=TIMESTAMP})
    </insert>
    <insert id="insertSelective" parameterType="com.tzld.piaoquan.growth.common.model.po.SpecialSendMessage">
        insert into we_com_special_send_message
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">
                id,
            </if>
            <if test="staffId != null">
                staff_id,
            </if>
            <if test="userId != null">
                user_id,
            </if>
            <if test="group != null">
                `group`,
            </if>
            <if test="content != null">
                content,
            </if>
            <if test="attachmentIds != null">
                attachment_ids,
            </if>
            <if test="preSendDate != null">
                pre_send_date,
            </if>
            <if test="isSend != null">
                is_send,
            </if>
            <if test="createTime != null">
                create_time,
            </if>
            <if test="updateTime != null">
                update_time,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">
                #{id,jdbcType=BIGINT},
            </if>
            <if test="staffId != null">
                #{staffId,jdbcType=BIGINT},
            </if>
            <if test="userId != null">
                #{userId,jdbcType=BIGINT},
            </if>
            <if test="group != null">
                #{group,jdbcType=INTEGER},
            </if>
            <if test="content != null">
                #{content,jdbcType=VARCHAR},
            </if>
            <if test="attachmentIds != null">
                #{attachmentIds,jdbcType=VARCHAR},
            </if>
            <if test="preSendDate != null">
                #{preSendDate,jdbcType=VARCHAR},
            </if>
            <if test="isSend != null">
                #{isSend,jdbcType=INTEGER},
            </if>
            <if test="createTime != null">
                #{createTime,jdbcType=TIMESTAMP},
            </if>
            <if test="updateTime != null">
                #{updateTime,jdbcType=TIMESTAMP},
            </if>
        </trim>
    </insert>
    <select id="countByExample" parameterType="com.tzld.piaoquan.growth.common.model.po.SpecialSendMessageExample"
            resultType="java.lang.Long">
        select count(*) from we_com_special_send_message
        <if test="_parameter != null">
            <include refid="Example_Where_Clause"/>
        </if>
    </select>
    <update id="updateByExampleSelective" parameterType="map">
        update we_com_special_send_message
        <set>
            <if test="record.id != null">
                id = #{record.id,jdbcType=BIGINT},
            </if>
            <if test="record.staffId != null">
                staff_id = #{record.staffId,jdbcType=BIGINT},
            </if>
            <if test="record.userId != null">
                user_id = #{record.userId,jdbcType=BIGINT},
            </if>
            <if test="record.group != null">
                `group` = #{record.group,jdbcType=INTEGER},
            </if>
            <if test="record.content != null">
                content = #{record.content,jdbcType=VARCHAR},
            </if>
            <if test="record.attachmentIds != null">
                attachment_ids = #{record.attachmentIds,jdbcType=VARCHAR},
            </if>
            <if test="record.preSendDate != null">
                pre_send_date = #{record.preSendDate,jdbcType=VARCHAR},
            </if>
            <if test="record.isSend != null">
                is_send = #{record.isSend,jdbcType=INTEGER},
            </if>
            <if test="record.createTime != null">
                create_time = #{record.createTime,jdbcType=TIMESTAMP},
            </if>
            <if test="record.updateTime != null">
                update_time = #{record.updateTime,jdbcType=TIMESTAMP},
            </if>
        </set>
        <if test="_parameter != null">
            <include refid="Update_By_Example_Where_Clause"/>
        </if>
    </update>
    <update id="updateByExample" parameterType="map">
        update we_com_special_send_message
        set id = #{record.id,jdbcType=BIGINT},
        staff_id = #{record.staffId,jdbcType=BIGINT},
        user_id = #{record.userId,jdbcType=BIGINT},
        `group` = #{record.group,jdbcType=INTEGER},
        content = #{record.content,jdbcType=VARCHAR},
        attachment_ids = #{record.attachmentIds,jdbcType=VARCHAR},
        pre_send_date = #{record.preSendDate,jdbcType=VARCHAR},
        is_send = #{record.isSend,jdbcType=INTEGER},
        create_time = #{record.createTime,jdbcType=TIMESTAMP},
        update_time = #{record.updateTime,jdbcType=TIMESTAMP}
        <if test="_parameter != null">
            <include refid="Update_By_Example_Where_Clause"/>
        </if>
    </update>
    <update id="updateByPrimaryKeySelective"
            parameterType="com.tzld.piaoquan.growth.common.model.po.SpecialSendMessage">
        update we_com_special_send_message
        <set>
            <if test="staffId != null">
                staff_id = #{staffId,jdbcType=BIGINT},
            </if>
            <if test="userId != null">
                user_id = #{userId,jdbcType=BIGINT},
            </if>
            <if test="group != null">
                `group` = #{group,jdbcType=INTEGER},
            </if>
            <if test="content != null">
                content = #{content,jdbcType=VARCHAR},
            </if>
            <if test="attachmentIds != null">
                attachment_ids = #{attachmentIds,jdbcType=VARCHAR},
            </if>
            <if test="preSendDate != null">
                pre_send_date = #{preSendDate,jdbcType=VARCHAR},
            </if>
            <if test="isSend != null">
                is_send = #{isSend,jdbcType=INTEGER},
            </if>
            <if test="createTime != null">
                create_time = #{createTime,jdbcType=TIMESTAMP},
            </if>
            <if test="updateTime != null">
                update_time = #{updateTime,jdbcType=TIMESTAMP},
            </if>
        </set>
        where id = #{id,jdbcType=BIGINT}
    </update>
    <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.growth.common.model.po.SpecialSendMessage">
        update we_com_special_send_message
        set staff_id       = #{staffId,jdbcType=BIGINT},
            user_id        = #{userId,jdbcType=BIGINT},
            `group`        = #{group,jdbcType=INTEGER},
            content        = #{content,jdbcType=VARCHAR},
            attachment_ids = #{attachmentIds,jdbcType=VARCHAR},
            pre_send_date  = #{preSendDate,jdbcType=VARCHAR},
            is_send        = #{isSend,jdbcType=INTEGER},
            create_time    = #{createTime,jdbcType=TIMESTAMP},
            update_time    = #{updateTime,jdbcType=TIMESTAMP}
        where id = #{id,jdbcType=BIGINT}
    </update>

    <select id="getGroupList" resultMap="BaseResultMap">
        select staff_id, `group`, content, attachment_ids
        from we_com_special_send_message
        where is_send = 0 and pre_send_date = #{preSendDate,jdbcType=VARCHAR}
        group by staff_id, `group`, content, attachment_ids
    </select>

    <select id="selectExternalUserId" resultType="java.lang.String">
        select t2.external_user_id
        from we_com_special_send_message t1
        left join we_com_user t2 on t1.user_id = t2.id
        where t1.staff_id = #{staffId,jdbcType=BIGINT}
        and t1.content = #{content,jdbcType=INTEGER}
        and t1.group = #{group,jdbcType=VARCHAR}
        and t1.pre_send_date = #{preSendDate,jdbcType=VARCHAR}
        and t1.is_send = 0
    </select>
</mapper>