<?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.jeeplus.modules.iim.dao.MailBoxDao">
    
	<sql id="mailBoxColumns">
		a.id AS "id",
		a.readstatus AS "readstatus",
		a.senderid AS "sender.id",
		a.receiverid AS "receiver.id",
		a.sendtime AS "sendtime",
		a.mailid AS "mail.id",
		receiver.name AS "receiver.name",
		sender.name AS "sender.name",
		sender.photo AS "sender.photo",
		mail.title AS "mail.title",
		mail.overview AS "mail.overview",
		mail.content AS "mail.content"
	</sql>
	
	<sql id="mailBoxJoins">
		LEFT JOIN iim_mail mail ON mail.id = a.mailid
		LEFT JOIN sys_user receiver ON receiver.id = a.receiverid
		LEFT JOIN sys_user sender ON sender.id = a.senderid
	</sql>
     <resultMap type="MailBox" id="MailMap" autoMapping="true">
    	<association property="mail"  javaType="Mail">
			<id property="id" column="mail.id"/>
			<result property="title" column="mail.title"/>
			<result property="overview" column="mail.overview"/>
			<result property="content" column="mail.content" typeHandler="com.jeeplus.common.mapper.ConvertBlobTypeHandler"/>
		</association>
	</resultMap>
	<select id="get" resultMap="MailMap">
		SELECT 
			<include refid="mailBoxColumns"/>
		FROM iim_mail_box a
		<include refid="mailBoxJoins"/>
		WHERE a.id = #{id}
	</select>
	
	<select id="findList" resultType="MailBox">
		SELECT 
			<include refid="mailBoxColumns"/>
		FROM iim_mail_box a
		<include refid="mailBoxJoins"/>
		<where>
			<if test="receiver != null and receiver.id != null and receiver.id != ''">
				AND a.receiverid = #{receiver.id}
			</if>
			<if test="readstatus != null and readstatus != ''">
				AND a.readstatus = #{readstatus}
			</if>
			<if test="mail != null and mail.title != null and mail.title != ''">
				AND ( mail.title like 
					<if test="dbName == 'oracle'">'%'||#{mail.title}||'%'</if>
					<if test="dbName == 'mysql'">CONCAT('%', #{mail.title}, '%')</if>
					or 
					mail.content like
					<if test="dbName == 'oracle'">'%'||#{mail.title}||'%'</if>
					<if test="dbName == 'mysql'">CONCAT('%', #{mail.title}, '%')</if>
					)
			</if>
		</where>
		<choose>
			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
				ORDER BY ${page.orderBy}
			</when>
			<otherwise>
			</otherwise>
		</choose>
	</select>
	
	<select id="findAllList" resultType="MailBox">
		SELECT 
			<include refid="mailBoxColumns"/>
		FROM iim_mail_box a
		<include refid="mailBoxJoins"/>
		<where>
			
		</where>		
		<choose>
			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
				ORDER BY ${page.orderBy}
			</when>
			<otherwise>
			</otherwise>
		</choose>
	</select>
	
	<select id="getCount" resultType="java.lang.Integer">
		SELECT count(*)
		FROM iim_mail_box a
		<include refid="mailBoxJoins"/>
		<where>
			<if test="receiver != null and receiver.id != null and receiver.id != ''">
				AND a.receiverid = #{receiver.id}
			</if>
			
			<if test="readstatus !=null and readstatus != ''">
				and a.readstatus = #{readstatus}
			</if>
		</where>		
	
	</select>
	
	<insert id="insert">
		INSERT INTO iim_mail_box(
			id,
			readstatus,
			senderid,
			receiverid,
			sendtime,
			mailid
		) VALUES (
			#{id},
			#{readstatus},
			#{sender.id},
			#{receiver.id},
			#{sendtime},
			#{mail.id}
		)
	</insert>
	
	<update id="update">
		UPDATE iim_mail_box SET 	
			readstatus = #{readstatus},
			senderid = #{sender.id},
			receiverid = #{receiver.id},
			sendtime = #{sendtime},
			mailid = #{mail.id}
		WHERE id = #{id}
	</update>
	
	<update id="delete">
		DELETE FROM iim_mail_box
		<choose>
			<when test="id !=null and id != ''">
				WHERE id = #{id}
			</when>
			<otherwise>
				WHERE mailid = #{mail.id}
			</otherwise>
		</choose>
	</update>
	
<!-- 	<update id="deleteByLogic">
		DELETE FROM iim_mail_box
		<choose>
			<when test="id !=null and id != ''">
				WHERE id = #{id}
			</when>
			<otherwise>
				WHERE mailid = #{mail.id}
			</otherwise>
		</choose>
	</update>-->
	
</mapper>