<?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="hls.support.core.wechat.mapper.WechatDepartmentMapper"> <resultMap id="BaseResultMap" type="hls.support.core.wechat.dto.WechatDepartment"> <result column="id" property="id" jdbcType="DECIMAL"/> <result column="department_id" property="departmentId" jdbcType="DECIMAL"/> <result column="department_name" property="departmentName" jdbcType="VARCHAR"/> <result column="parent_id" property="parentId" jdbcType="DECIMAL"/> <result column="department_order" property="departmentOrder" jdbcType="DECIMAL"/> <result column="account_id" property="accountId" jdbcType="DECIMAL"/> <result column="parent_name" property="parentName" jdbcType="VARCHAR"/> <result column="is_active" property="parentName" jdbcType="DECIMAL"/> <result column="we_id" property="weId" jdbcType="VARCHAR"/> <result column="name" property="name" jdbcType="VARCHAR"/> <result column="type" property="type" jdbcType="DECIMAL"/> </resultMap> <select id="queryByApp" resultMap="BaseResultMap"> SELECT * FROM ( SELECT ad.department_id AS is_active FROM enterprise_app_department ad, wechat_department wd WHERE ad.department_id = wd.id AND ad.app_id = #{appId} ) t1 left join ( SELECT wa.company_name, wd.*, ( SELECT pwd.department_name FROM wechat_department pwd WHERE pwd.department_id = wd.parent_id ) parent_name FROM wechat_account wa, wechat_department wd WHERE wa.ACCOUNT_ID = #{accountId} AND wd.account_id = wa.account_id ) t2 ON t1.IS_ACTIVE = t2.id </select> <select id="queryDepartment" resultMap="BaseResultMap"> SELECT wa.company_name, wd.*, ( SELECT pwd.department_name FROM wechat_department pwd WHERE pwd.department_id = wd.parent_id ) parent_name FROM wechat_account wa, wechat_department wd <where> wa.account_id = wd.account_id <if test="accountId"> AND wd.account_id = #{accountId} </if> <if test="departmentName"> AND wd.department_name LIKE concat(concat('%',#{departmentName}),'%') </if> <if test="departmentId"> AND wd.department_id = #{departmentId} </if> <if test="parentId"> AND wd.parent_id = #{parentId} </if> </where> </select> <select id="treeListDeapartmentQuery" resultMap="BaseResultMap"> SELECT wd.id, CONCAT(wd.department_id, '') we_id, wd.department_name NAME, ( SELECT childwd.id FROM wechat_department childwd WHERE childwd.department_id = wd.parent_id ) parent_id, 1 type FROM wechat_department wd <where> 1=1 <if test="accountId"> AND wd.account_id = #{accountId} </if> </where> UNION ( SELECT NULL id, CASE wm.user_id WHEN NULL THEN wm.open_id ELSE wm.user_id END we_id, wm.NAME, wmd.department_id parent_id, 2 type FROM wechat_member wm LEFT JOIN wechat_member_department wmd ON wm.member_id = wmd.member_id <where> 1=1 <if test="accountId"> AND wm.account_id = #{accountId} </if> </where> ) </select> <insert id="insertDepartment"> INSERT into wechat_department (department_id,department_name,parent_id,department_order) VALUES (#{departmentId},#{departmentName},#{parentId},#{departmentOrder}) </insert> <update id="updateDepartment"> UPDATE wechat_department SET department_name = #{departmentName},parent_id = #{parentId},department_order=#{departmentOrder} WHERE DEPARTMENT_ID = #{departmentId} </update> </mapper>