<?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.gx.obe.server.management.im.dao.GroupItemMapper">


	<!-- 通用查询映射结果 -->
	<resultMap id="BaseResultMap" type="com.gx.obe.server.management.im.entity.GroupItem">
		<id column="GROUP_ITEM_ID" property="id"/>
		<result column="GROUP_ID" property="groupId"/>
		<result column="USER_ID" property="userId"/>
		<result column="ITEM_TYPE" property="itemType"/>
		<result column="NICK_NAME" property="nickName"/>
	</resultMap>

<!-- 通用查询映射结果 -->
	<resultMap id="EmployeeResultMap" type="com.gx.obe.server.management.im.entity.Employee">
		<id column="EMPLOYEE_ID" property="id"/>
		<result column="EMPLOYEE_NAME" property="employeeName"/>
		<result column="ACCOUNT" property="account"/>
		<result column="PASSWORD" property="password"/>
		<result column="NUMBER" property="number"/>
		<result column="AVATAR" property="avatar"/>
		<result column="POSITION" property="position"/>
		<result column="GENDER" property="gender"/>
		<result column="AGE" property="age"/>
		<result column="DEPARTMENTS" property="departments"/>
		<result column="EMAIL" property="email"/>
		<result column="MOBILE_PHONE" property="mobilePhone"/>
		<result column="COMPANY_TEL" property="companyTel"/>
		<result column="OTHER_TEL" property="otherTel"/>
		<result column="FAX_TEL" property="faxTel"/>
		<result column="ADDRESS" property="address"/>
		<result column="ZIPCODE" property="zipcode"/>
		<result column="BIRTHDAY" property="birthday"/>
		<result column="BLOOD_TYPE" property="bloodType"/>
		<result column="PERSONAL_WEB" property="personalWeb"/>
		<result column="SIGNATURE" property="signature"/>
		<result column="PERSONAL_NOTE" property="personalNote"/>
		<result column="USE_STATUS" property="useStatus"/>
		<result column="IP" property="ip"/>
		<result column="PORT" property="port"/>
		<result column="LINE_STATUS" property="lineStatus"/>
		<result column="LOGIN_TIME" property="loginTime"/>
		<result column="ONLINE_TIME" property="onlineTime"/>
	</resultMap>

	<!-- 通用查询结果列 -->
	<sql id="Base_Column_List">
		GROUP_ITEM_ID, GROUP_ID, USER_ID, ITEM_TYPE, NICK_NAME
	</sql>

	 	<!-- 批量更新 -->
	<update id="updateBatchList" parameterType="java.util.List">
		UPDATE
			group_item
		<set>
			GROUP_ID = 
			<foreach collection="GroupItemList" item="GroupItem" index="index" separator=" " open="case GROUP_ITEM_ID" close="end">
				<if test="GroupItem.groupId != null">
					when #{GroupItem.id} then #{GroupItem.groupId}
				</if>
				<if test="GroupItem.groupId == null">
					when #{GroupItem.id} then GROUP_ID
				</if>
			</foreach>
			USER_ID = 
			<foreach collection="GroupItemList" item="GroupItem" index="index" separator=" " open="case GROUP_ITEM_ID" close="end">
				<if test="GroupItem.userId != null">
					when #{GroupItem.id} then #{GroupItem.userId}
				</if>
				<if test="GroupItem.userId == null">
					when #{GroupItem.id} then USER_ID
				</if>
			</foreach>
			ITEM_TYPE = 
			<foreach collection="GroupItemList" item="GroupItem" index="index" separator=" " open="case GROUP_ITEM_ID" close="end">
				<if test="GroupItem.itemType != null">
					when #{GroupItem.id} then #{GroupItem.itemType}
				</if>
				<if test="GroupItem.itemType == null">
					when #{GroupItem.id} then ITEM_TYPE
				</if>
			</foreach>
			NICK_NAME = 
			<foreach collection="GroupItemList" item="GroupItem" index="index" separator=" " open="case GROUP_ITEM_ID" close="end">
				<if test="GroupItem.nickName != null">
					when #{GroupItem.id} then #{GroupItem.nickName}
				</if>
				<if test="GroupItem.nickName == null">
					when #{GroupItem.id} then NICK_NAME
				</if>
			</foreach>
		</set>
		<where>
			GROUP_ITEM_ID IN
			<foreach collection="GroupItemList" item="GroupItem" index="index" separator="," open="(" close=")">
            	#{GroupItem.id}
        	</foreach>
		</where>
	</update>

	<!-- 批量插入-->
	<insert id="insertByBatch" parameterType="java.util.List">
		insert into group_item 
			(
				GROUP_ITEM_ID, GROUP_ID, USER_ID, ITEM_TYPE, NICK_NAME
			)
		values
		<foreach collection="GroupItemList" item="GroupItem" index="index" open="" close="" separator=",">
			(
				#{GroupItem.id}, 
				#{GroupItem.groupId},
				#{GroupItem.userId},
				#{GroupItem.itemType},
				#{GroupItem.nickName}
			)
		</foreach>
	</insert> 

	<!-- 指定字段修改 -->
	<update id="updateAssignProperty">
		UPDATE
			group_item
		<set>
			<foreach collection="attributes" item="attribute" index="index" open="" close="" separator=",">
				<if test="attribute == 'groupId'">
					GROUP_ID = #{GroupItem.groupId}
				</if>
				<if test="attribute == 'userId'">
					USER_ID = #{GroupItem.userId}
				</if>
				<if test="attribute == 'itemType'">
					ITEM_TYPE = #{GroupItem.itemType}
				</if>
				<if test="attribute == 'nickName'">
					NICK_NAME = #{GroupItem.nickName}
				</if>
			</foreach>
		</set>
		<where>
			GROUP_ITEM_ID = #{GroupItem.id}
		</where>
	</update>

	<!-- 批量指定字段修改 -->
	<update id="batchUpdateProperty">
		UPDATE
			group_item
		<set>
			<foreach collection="attributes" item="attribute" index="index" open="" close="" separator=",">
				<if test="attribute == 'groupId'">
					GROUP_ID = 
					<foreach collection="GroupItemList" item="GroupItem" index="index" separator=" " open="case GROUP_ITEM_ID" close="end">
            			when #{GroupItem.id} then #{GroupItem.groupId}
        			</foreach>
				</if>
				<if test="attribute == 'userId'">
					USER_ID = 
					<foreach collection="GroupItemList" item="GroupItem" index="index" separator=" " open="case GROUP_ITEM_ID" close="end">
            			when #{GroupItem.id} then #{GroupItem.userId}
        			</foreach>
				</if>
				<if test="attribute == 'itemType'">
					ITEM_TYPE = 
					<foreach collection="GroupItemList" item="GroupItem" index="index" separator=" " open="case GROUP_ITEM_ID" close="end">
            			when #{GroupItem.id} then #{GroupItem.itemType}
        			</foreach>
				</if>
				<if test="attribute == 'nickName'">
					NICK_NAME = 
					<foreach collection="GroupItemList" item="GroupItem" index="index" separator=" " open="case GROUP_ITEM_ID" close="end">
            			when #{GroupItem.id} then #{GroupItem.nickName}
        			</foreach>
				</if>
			</foreach>
		</set>
		<where>
			GROUP_ITEM_ID IN
			<foreach collection="GroupItemList" item="GroupItem" index="index" separator="," open="(" close=")">
            	#{GroupItem.id}
        	</foreach>
		</where>
	</update>
	<!-- 获得群组成员 -->
	<select id="getGroupItemByGroupId" resultMap="EmployeeResultMap">
		SELECT
			t.*
		FROM
			employee t
		LEFT JOIN group_item g ON t.EMPLOYEE_ID = g.USER_ID
		WHERE
			g.GROUP_ID = #{groupId}
	</select>
</mapper>