<?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.elephant.framework.galaxy.aroad.module.system.mapper.DeptRelationMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.elephant.framework.galaxy.aroad.module.system.entity.DeptRelation">
        <id column="ancestor" property="ancestor" />
        <result column="descendant" property="descendant" />
    </resultMap>

    <!-- 更新部门关系(报错) -->
    <delete id="deleteDeptRelations">
        DELETE FROM sys_dept_relation
        WHERE
                descendant IN ( SELECT temp.descendant FROM
                    ( SELECT descendant FROM sys_dept_relation WHERE ancestor = #{descendant} ) temp )
          AND ancestor IN ( SELECT temp.ancestor FROM ( SELECT ancestor FROM
            sys_dept_relation WHERE descendant = #{descendant} AND ancestor != descendant ) temp );
    </delete>

    <insert id="insertDeptRelations">
        INSERT INTO sys_dept_relation (ancestor, descendant) SELECT a.ancestor, b.descendant
        FROM sys_dept_relation a
                 CROSS JOIN sys_dept_relation b
        WHERE a.descendant = #{ancestor}
          AND b.ancestor = #{descendant};
    </insert>

    <!--删除部门-->
    <delete id="deleteDeptRelationsById">
        DELETE
        FROM
            sys_dept_relation
        WHERE
                descendant IN (
                SELECT
                    temp.descendant
                FROM
                    (
                        SELECT
                            descendant
                        FROM
                            sys_dept_relation
                        WHERE
                            ancestor = #{id}
                    ) temp
            )
    </delete>

</mapper>
