<?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.keao.edu.user.dao.OrganizationDao">
	
	<resultMap type="com.keao.edu.user.entity.Organization" id="Organization">
		<result column="id_" property="id" />
		<result column="user_id_" property="userId" />
		<result column="name_" property="name" />
		<result column="contact_name_" property="contactName" />
		<result column="contact_phone_" property="contactPhone" />
		<result column="level_" property="level"/>
		<result column="parent_organ_id_" property="parentOrganId" />
		<result column="parent_organ_id_tag_" property="parentOrganIdTag" />
		<result column="settlement_type_" property="settlementType" typeHandler="com.keao.edu.common.dal.CustomEnumTypeHandler"/>
		<result column="del_flag_" property="delFlag" typeHandler="com.keao.edu.common.dal.CustomEnumTypeHandler"/>
		<result column="share_profit_amount_" property="shareProfitAmount" />
		<result column="is_allow_arrange_exam_" property="isAllowArrangeExam" typeHandler="com.keao.edu.common.dal.CustomEnumTypeHandler"/>
		<result column="create_time_" property="createTime" />
		<result column="update_time_" property="updateTime" />
		<result column="tenant_id_" property="tenantId" />
		<association property="sysUser" resultMap="com.keao.edu.user.dao.SysUserDao.SysUser"/>
	</resultMap>
	
	<!-- 根据主键查询一条记录 -->
	<select id="get" resultMap="Organization" >
		SELECT * FROM organization WHERE id_ = #{id}
	</select>
	
	<!-- 全查询 -->
	<select id="findAll" resultMap="Organization">
		SELECT * FROM organization WHERE tenant_id_ = #{tenantId} ORDER BY id_
	</select>
	
	<!-- 向数据库增加一条记录 -->
	<insert id="insert" parameterType="com.keao.edu.user.entity.Organization" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
		INSERT INTO organization (id_,user_id_,name_,contact_name_,contact_phone_,level_,parent_organ_id_,parent_organ_id_tag_,settlement_type_,share_profit_amount_,is_allow_arrange_exam_,create_time_,update_time_,tenant_id_)
		VALUES(#{id},#{userId},#{name},#{contactName},#{contactPhone},#{level},#{parentOrganId},#{parentOrganIdTag},#{settlementType,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
		#{shareProfitAmount},#{isAllowArrangeExam,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},NOW(),NOW(),#{tenantId})
	</insert>
	
	<!-- 根据主键查询一条记录 -->
	<update id="update" parameterType="com.keao.edu.user.entity.Organization">
		UPDATE organization
		<set>
			<if test="contactPhone != null">
				contact_phone_ = #{contactPhone},
			</if>
			<if test="level != null">
				level_ = #{level},
			</if>
			<if test="parentOrganId != null">
				parent_organ_id_ = #{parentOrganId},
			</if>
			<if test="parentOrganIdTag != null">
				parent_organ_id_tag_ = #{parentOrganIdTag},
			</if>
			<if test="settlementType != null">
				settlement_type_ = #{settlementType,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
			</if>
			<if test="contactName != null">
				contact_name_ = #{contactName},
			</if>
			<if test="shareProfitAmount != null">
				share_profit_amount_ = #{shareProfitAmount},
			</if>
			<if test="name != null">
				name_ = #{name},
			</if>
			<if test="isAllowArrangeExam != null">
				is_allow_arrange_exam_ = #{isAllowArrangeExam,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
			</if>
			<if test="delFlag != null">
				del_flag_ = #{delFlag,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
			</if>
			<if test="tenantId != null">
				tenant_id_ = #{tenantId},
			</if>
			<if test="userId != null">
				user_id_ = #{userId},
			</if>
			update_time_ = NOW()
		</set> WHERE id_ = #{id}
	</update>
	
	<!-- 根据主键删除一条记录 -->
	<delete id="delete" >
		UPDATE organization SET del_flag_ = 1,update_time_ = NOW() WHERE id_ = #{id}
	</delete>

	<sql id="organQueryPage">
		<where>
			del_flag_ = 0 AND tenant_id_ = #{tenantId}
			<if test="settlementType != null and settlementType != ''">
				AND settlement_type_ = #{settlementType}
			</if>
			<if test="isAllowArrangeExam != null">
				AND is_allow_arrange_exam_ = #{isAllowArrangeExam}
			</if>
			<if test="search != null and search != ''">
				AND (id_ = #{search} OR name_ LIKE CONCAT('%',#{search},'%')
				OR contact_name_ LIKE CONCAT('%',#{search},'%')
				OR contact_phone_ LIKE CONCAT('%',#{search},'%'))
			</if>
		</where>
	</sql>
	
	<!-- 分页查询 -->
	<select id="queryPage" resultMap="Organization" parameterType="map">
		SELECT * FROM organization
		<include refid="organQueryPage"/>
		ORDER BY update_time_ DESC <include refid="global.limit"/>
	</select>
	
	<!-- 查询当前表的总记录数 -->
	<select id="queryCount" resultType="int">
		SELECT COUNT(*) FROM organization
		<include refid="organQueryPage"/>
	</select>

	<select id="getByTenant" resultMap="Organization">
		SELECT * FROM organization WHERE tenant_id_ = #{tenantId} ORDER BY id_
	</select>

	<select id="getChildOrganIds" resultType="int">
		SELECT id_ FROM organization WHERE parent_organ_id_tag_ LIKE CONCAT(#{parentOrganIdTag}, '%');
	</select>

	<select id="getChildOrgans" resultMap="Organization">
		SELECT * FROM organization WHERE parent_organ_id_tag_ LIKE CONCAT(#{parentOrganIdTag}, '%');
	</select>

	<select id="getNextLevelOrganIds" resultType="int">
		SELECT id_ FROM organization WHERE parent_organ_id_ =#{organId};
	</select>
    <select id="getOrgans" resultMap="Organization">
		SELECT * FROM organization WHERE id_ IN
		<foreach collection="organIds" item="organId" separator="," open="(" close=")">
			#{organId}
		</foreach>
	</select>
</mapper>
