하석형 하석형 04-11
250411 하석형 부서 사용자 삭제 시 사용자 존재 확인 과정 추가
@1be68abaa5dec2d959e7516ac1524b45b07c180b
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
@@ -113,12 +113,12 @@
     List<DeptMbrVO> findByMber(Map<String, String> params);
 
     /**
-     * @param deptId - 부서 ID
+     * @param params - 부서 ID, 사용자 ID
      * @return int - List<DeptMbrVO>- 부서 사용자 정보 목록
      *
      * 부서에 등록된 사용자 목록 조회
      */
-    List<DeptMbrVO> findByDeptMber(String deptId);
+    List<DeptMbrVO> findByDeptMber(Map<String, String> params);
 
     /**
      * @param deptId - 부서 ID
@@ -150,7 +150,7 @@
      *
      * 부서에 등록된 사용자 제거
      */
-    int deleteDeptMbr(Map<String, Object> params);
+    int deleteDeptMbr(Map<String, String> params);
 
     /**
      * @param deptVO - 부서 정보 객체
src/main/java/com/takensoft/cms/dept/service/DeptService.java
--- src/main/java/com/takensoft/cms/dept/service/DeptService.java
+++ src/main/java/com/takensoft/cms/dept/service/DeptService.java
@@ -62,7 +62,7 @@
      *
      * 부서 정보 조회
      */
-    Map<String, Object> findByDept(HashMap<String, Object> params);
+    Map<String, Object> findByDept(Map<String, String> params);
 
     /**
      * @param deptVO - 부서 정보
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
@@ -196,11 +196,11 @@
      * 부서 정보 조회
      */
     @Override
-    public Map<String, Object> findByDept(HashMap<String, Object> params) {
+    public Map<String, Object> findByDept(Map<String, String> params) {
         try {
             String deptId = params.get("deptId").toString(); // 아이디 추출
             DeptVO dept = deptDAO.findByDept(deptId); // 부서 정보 조회
-            List<DeptMbrVO> deptMbr = deptDAO.findByDeptMber(deptId); // 부서에 등록된 사용자 정보 조회
+            List<DeptMbrVO> deptMbr = deptDAO.findByDeptMber(params); // 부서에 등록된 사용자 정보 조회
             // 사용자 정보 복호화
             if (deptMbr.size() > 0) {
                 for (DeptMbrVO vo : deptMbr) {
@@ -316,13 +316,15 @@
         if(deptMbrList.size() == 0) return 0;
 
         for(DeptMbrVO vo : deptMbrList) {
-            Map<String, Object> param = new HashMap<String, Object>();
+            Map<String, String> param = new HashMap<String, String>();
             param.put("mbrId", vo.getMbrId());
-            int delMbrResult = deptDAO.deleteDeptMbr(param); // 부서 사용자 삭제
-            if (delMbrResult == 0) {
-                throw new CustomDeleteFailException("부서 사용자 삭제 실패");
+            if(deptDAO.findByDeptMber(param).size() > 0) {
+                int delMbrResult = deptDAO.deleteDeptMbr(param); // 부서 사용자 삭제
+                if (delMbrResult == 0) {
+                    throw new CustomDeleteFailException("부서 사용자 삭제 실패");
+                }
+                result += delMbrResult;
             }
-            result += delMbrResult;
         }
         return result;
     }
@@ -348,7 +350,7 @@
                     vo.setMblTelno(Secret.decrypt(vo.getMblTelno().toString()));
                 }
             }
-            List<DeptMbrVO> deptMbr = deptDAO.findByDeptMber(params.get("deptId").toString()); // 부서에 등록된 사용자 정보 조회
+            List<DeptMbrVO> deptMbr = deptDAO.findByDeptMber(params); // 부서에 등록된 사용자 정보 조회
             // 사용자 정보 복호화
             if (deptMbr.size() > 0) {
                 for (DeptMbrVO vo : deptMbr) {
@@ -372,13 +374,13 @@
 
     /**
      * @param deptList - 부서 목록 객체
-     * @return Map<String, Object> - 부서에 등록되지 않는 사용자 정보
+     * @return int - 부서 정보 수정 결과
      * @throws CustomUpdateFailException - 수정 실패 예외 발생 시
      * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
      * @throws NullPointerException - Null 값이 발생할 경우
      * @throws Exception - 그 외 예외 발생 시
      *
-     * 부서에 등록되지 않는 사용자 조회
+     * 부서 정보 수정
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
src/main/java/com/takensoft/cms/dept/web/DeptController.java
--- src/main/java/com/takensoft/cms/dept/web/DeptController.java
+++ src/main/java/com/takensoft/cms/dept/web/DeptController.java
@@ -104,7 +104,7 @@
      * 부서 정보 상세 조회
      */
     @PostMapping(value = "/findByDept.json")
-    public ResponseEntity<?> findByDept(@RequestBody HashMap<String, Object> params) {
+    public ResponseEntity<?> findByDept(@RequestBody Map<String, String> params) {
         // 부서정보 조회
         Map<String, Object> result = deptService.findByDept(params);
 
src/main/java/com/takensoft/cms/mber/service/Impl/AdmMbrServiceImpl.java
--- src/main/java/com/takensoft/cms/mber/service/Impl/AdmMbrServiceImpl.java
+++ src/main/java/com/takensoft/cms/mber/service/Impl/AdmMbrServiceImpl.java
@@ -1,5 +1,7 @@
 package com.takensoft.cms.mber.service.Impl;
 
+import com.takensoft.cms.dept.service.DeptService;
+import com.takensoft.cms.dept.vo.DeptMbrVO;
 import com.takensoft.cms.mber.dao.AdmMbrDAO;
 import com.takensoft.cms.mber.dto.AdmMbrDTO;
 import com.takensoft.cms.mber.dto.JoinDTO;
@@ -22,6 +24,7 @@
 
 import jakarta.servlet.http.HttpServletRequest;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 /**
@@ -43,6 +46,7 @@
     private final BCryptPasswordEncoder bCryptPasswordEncoder;
     private final AdmMbrDAO admMbrDAO;
     private final MberService mbrService;
+    private final DeptService deptService;
 
     /**
      * @param params - 회원정보
@@ -161,7 +165,7 @@
 
         // 권한 수정
         result += admMbrDAO.deleteAuthorListByMbrId(admMbrDTO.getMbrId()); // 회원 권한 전체 삭제
-        if (admMbrDTO.getUseYn().equals("Y")) {
+        if (admMbrDTO.getUseYn().equals("Y")) { // 수정일 경우 회원 권한 재 등록
             if(admMbrDTO.getAuthorList() != null && admMbrDTO.getAuthorList().size() > 0) {
                 for(MberAuthorVO mberAuthorVO : admMbrDTO.getAuthorList()) {
                     mberAuthorVO.setMbrId(admMbrDTO.getMbrId());
@@ -169,6 +173,13 @@
                     result += admMbrDAO.insertAuthor(mberAuthorVO);
                 }
             }
+        } else { // 회원 탈퇴일 경우 관련 정보 삭제
+            // 부서 사용자 삭제
+            DeptMbrVO deptMbrVO = new DeptMbrVO();
+            deptMbrVO.setMbrId(admMbrDTO.getMbrId());
+            List<DeptMbrVO> deptMbrList = new ArrayList<>();
+            deptMbrList.add(deptMbrVO);
+            int deptResult = deptService.deptMbrDelete(deptMbrList);
         }
         return result;
         } catch (DataAccessException dae) {
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
@@ -256,7 +256,7 @@
         작성일 : 2024.04.26
         내 용 : 부서에 등록된 사용자 목록 조회
     -->
-    <select id="findByDeptMber" parameterType="String" resultType="DeptMbrVO">
+    <select id="findByDeptMber" parameterType="Map" resultType="DeptMbrVO">
         SELECT dmi.dept_id
              , mi.mbr_id
              , mi.lgn_id
@@ -269,7 +269,13 @@
           FROM dept_mbr_info dmi
      LEFT JOIN mbr_info mi
             ON dmi.mbr_id = mi.mbr_id
-         WHERE dmi.dept_id = #{deptId}
+         WHERE 1=1
+         <if test="deptId != null and deptId != ''">
+             AND dmi.dept_id = #{deptId}
+         </if>
+         <if test="mbrId != null and mbrId != ''">
+             AND dmi.mbr_id = #{mbrId}
+         </if>
     </select>
 
     <!--
Add a comment
List