<?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.wecloud.im.mapper.ImMessageMapper">

    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id
        , create_time, withdraw_time, update_date, fk_appid, sender, content, withdraw, event, system, at, send_status, fk_conversation_id
    </sql>

    <select id="getImMessageById" resultType="com.wecloud.im.param.ImMessageQueryVo">
        select
        <include refid="Base_Column_List"/>
        from im_message where id = #{id}
    </select>

    <select id="getImMessagePageList" parameterType="com.wecloud.im.param.ImMessagePageParam"
            resultType="com.wecloud.im.param.ImMessageQueryVo">
        select
        <include refid="Base_Column_List"/>
        from im_message
    </select>
    <select id="getOfflineListByClientAndConversation" resultType="com.wecloud.im.vo.OfflineMsgDto">

        SELECT im_message.id         AS id,
               im_message.create_time,
               im_message.withdraw_time,
               im_message.update_date,
               `im_client`.client_id AS sender,
               im_message.content,
               im_message.withdraw,
               im_message.`event`,
               im_message.system,
               im_message.`at`,
               im_message.send_status,
               im_message.fk_conversation_id
        FROM im_inbox
                 INNER JOIN im_message im_message ON im_message.id = im_inbox.fk_msg_id
                 INNER JOIN `im_client` ON `im_client`.id = `im_message`.sender
        WHERE im_inbox.fk_conversation_id = #{conversationId}

          AND im_inbox.receiver = #{clientId}

          AND im_inbox.read_msg = 0
    </select>
    <select id="getHistoryMsgConversationId" resultType="com.wecloud.im.vo.OfflineMsgDto">
        SELECT im_message.id         AS id,
               im_message.create_time,
               im_message.withdraw_time,
               im_message.update_date,
               `im_client`.client_id AS sender,
               im_message.content,
               im_message.withdraw,
               im_message.`event`,
               im_message.system,
               im_message.`at`,
               im_message.send_status,
               im_message.fk_conversation_id
        FROM `im_message`
                 INNER JOIN `im_client` ON `im_client`.id = `im_message`.sender
        WHERE fk_conversation_id = #{param.conversationId}
        ORDER BY `im_message`.`create_time` DESC
    </select>

</mapper>
