하석형 하석형 04-04
250404 하석형 부서 삭제 시 부서 사용자 조회 후 삭제 진행
@037eb28b7634057c800ff6ea2216d2c94c759237
src/main/java/com/takensoft/cms/dept/dao/DeptDAO.java
--- src/main/java/com/takensoft/cms/dept/dao/DeptDAO.java
+++ src/main/java/com/takensoft/cms/dept/dao/DeptDAO.java
@@ -130,6 +130,14 @@
 
     /**
      * @param deptId - 부서 ID
+     * @return int - 부서의 사용자 수
+     *
+     * 상위, 하위 부서의 사용자 수 조회
+     */
+    int countDeptInDeptMbr(String deptId);
+
+    /**
+     * @param deptId - 부서 ID
      * @return int - 삭제 성공 여부
      *
      * 상위, 하위 부서 삭제에 따른 부서의 사용자 삭제
src/main/java/com/takensoft/cms/dept/service/Impl/DeptServiceImpl.java
--- src/main/java/com/takensoft/cms/dept/service/Impl/DeptServiceImpl.java
+++ src/main/java/com/takensoft/cms/dept/service/Impl/DeptServiceImpl.java
@@ -287,10 +287,14 @@
             throw new CustomDeleteFailException("부서 삭제 실패");
         }
 
-        int deleteDeptAuth = 0; // 부서 권한 삭제 결과
-        deleteDeptAuth = deptDAO.deleteDeptInDeptMbr(deptVO.getDeptId());
-        if (deleteDeptAuth == 0) {
-            throw new CustomDeleteFailException("부서 권한 삭제 실패");
+        int deptMberCnt = deptDAO.countDeptInDeptMbr(deptVO.getDeptId()); // 부서에 등록된 사용자 수 조회
+        // 사용자가 있다면 부서 사용자 삭제 진행
+        if(deptMberCnt > 0) {
+            int deleteDeptAuth = 0; // 부서 사용자 삭제 결과
+            deleteDeptAuth = deptDAO.deleteDeptInDeptMbr(deptVO.getDeptId());
+            if (deleteDeptAuth == 0) {
+                throw new CustomDeleteFailException("부서 사용자 삭제 실패");
+            }
         }
         return delResult;
     }
src/main/resources/mybatis/mapper/dept/dept-SQL.xml
--- src/main/resources/mybatis/mapper/dept/dept-SQL.xml
+++ src/main/resources/mybatis/mapper/dept/dept-SQL.xml
@@ -294,6 +294,22 @@
     </update>
 
     <!--
+        작성자 : 하석형
+        작성일 : 2025.04.04
+        내 용 : 상위, 하위 부서의 사용자 수 조회
+    -->
+    <select id="countDeptInDeptMbr" parameterType="String" resultType="int">
+        WITH RECURSIVE DeptHierarchy AS (
+            SELECT dept_id, up_dept_id FROM dept_info WHERE dept_id = #{deptId}
+            UNION ALL
+            SELECT di.dept_id, di.up_dept_id
+            FROM dept_info di
+                     JOIN DeptHierarchy dh ON di.up_dept_id = dh.dept_id
+        )
+        SELECT COUNT(*) FROM dept_mbr_info WHERE dept_id IN (SELECT dept_id FROM DeptHierarchy)
+    </select>
+
+    <!--
         작성자 : takensoft
         작성일 : 2024.04.26
         내 용 : 상위, 하위 부서 삭제에 따른 부서의 사용자 삭제
Add a comment
List