From f1e20b08fcc05d78e3d25921494f92f5b9ca49cf Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期四, 16 五月 2024 17:19:40 +0800
Subject: [PATCH] 部门管理员权限

---
 src/main/resources/mapper/DepartmentMapper.xml |   93 ++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 81 insertions(+), 12 deletions(-)

diff --git a/src/main/resources/mapper/DepartmentMapper.xml b/src/main/resources/mapper/DepartmentMapper.xml
index 43083d2..bd448a9 100644
--- a/src/main/resources/mapper/DepartmentMapper.xml
+++ b/src/main/resources/mapper/DepartmentMapper.xml
@@ -8,7 +8,8 @@
     </resultMap>
 
     <sql id="Base_Column_List">
-        id, name,deleted
+        id
+        , name,deleted
     </sql>
 
     <insert id="add" parameterType="com.mindskip.xzs.domain.Department" useGeneratedKeys="true" keyProperty="id">
@@ -17,37 +18,105 @@
     </insert>
 
     <update id="update" parameterType="com.mindskip.xzs.domain.Department">
-        update t_user
+        update t_department
         <set>
             <if test="name != null">
                 name = #{name,jdbcType=VARCHAR},
             </if>
+            <if test="adminId != null">
+                admin_id = #{adminId},
+            </if>
             <if test="deleted != null">
-                name = #{deleted,jdbcType=VARCHAR},
+                deleted = #{deleted,jdbcType=VARCHAR},
             </if>
         </set>
         where id = #{id,jdbcType=INTEGER}
     </update>
 
     <select id="gets" resultMap="BaseResultMap">
-        select
-        <include refid="Base_Column_List"/>
-        from t_department where deleted=0
+        SELECT
+            td.id,
+            td.name
+        FROM
+            t_department td
+        WHERE
+            td.deleted = 0
+            <if test="deptId != null and deptId.size() > 0">
+                AND td.id in <foreach collection="deptId" item="item" index="index" open="(" separator="," close=")"> #{item} </foreach>
+            </if>
     </select>
 
-    <select id="page" resultMap="BaseResultMap" parameterType="com.mindskip.xzs.viewmodel.admin.department.DepartmentResponseVM">
+    <select id="getById" resultMap="BaseResultMap">
         SELECT
-        <include refid="Base_Column_List"/>
-        FROM t_department
+            td.id,
+            td.name
+        FROM
+            t_department td
+        WHERE
+              td.id = #{id} AND td.deleted = 0
+    </select>
+
+    <resultMap id="pageResult" type="com.mindskip.xzs.viewmodel.admin.department.DepartmentResponseVM">
+        <id column="id" property="id"/>
+        <result column="name" property="name"/>
+        <collection column="id" property="adminIds" ofType="integer" select="selectUserIdsByDeptId"></collection>
+        <collection column="id" property="adminNames" ofType="integer" select="selectUserNamesByDeptId"></collection>
+    </resultMap>
+
+    <select id="selectUserIdsByDeptId" resultType="integer">
+        SELECT
+               tu.id
+        FROM
+             t_user_department tud
+                 INNER JOIN t_user tu ON tud.user_id = tu.id AND tud.department_id = #{deptId} AND tu.status = 1 AND deleted = 0 AND tud.dept_admin = 1
+    </select>
+
+    <select id="selectUserNamesByDeptId" resultType="string">
+        SELECT
+            tu.real_name
+        FROM
+            t_user_department tud
+                INNER JOIN t_user tu ON tud.user_id = tu.id AND tud.department_id = #{deptId} AND tu.status = 1 AND deleted = 0 AND tud.dept_admin = 1
+    </select>
+
+    <select id="page" resultMap="pageResult"
+            parameterType="com.mindskip.xzs.viewmodel.admin.department.DepartmentResponseVM">
+        SELECT
+            td.id,
+            td.name
+        FROM
+             t_department td
         <where>
-            and deleted=0
+            AND td.deleted = 0
             <if test="id != null ">
-                and id= #{id}
+                AND td.id= #{id}
             </if>
             <if test="name != null ">
-                and name like concat('%',#{name},'%')
+                AND td.name like concat('%',#{name},'%')
             </if>
 
         </where>
     </select>
+
+    <select id="getName" resultMap="BaseResultMap">
+        SELECT
+            td.id,
+            td.name,
+            td.admin_id as adminId,
+            tu.real_name as adminName
+        FROM
+            t_department td
+                LEFT JOIN t_user tu ON td.admin_id = tu.id AND tu.deleted = 0
+        WHERE
+            td.name = #{name} AND td.deleted = 0
+    </select>
+
+    <select id="selectByAdminId" resultType="integer">
+        SELECT id FROM t_department WHERE admin_id = #{userId} AND deleted = 0
+    </select>
+
+    <select id="countByAdminId" resultType="integer">
+        SELECT count(*) FROM t_department WHERE admin_id = #{userId} AND deleted = 0 AND id != #{id}
+    </select>
+
 </mapper>

--
Gitblit v1.8.0