하석형 하석형 04-22
250422 하석형 콘텐츠유형/게시판관리 등록 시 시스템제공여부 '1'로 메뉴등록, 메뉴권한조회 조건 수정, 게시판관리명 변경 시 메뉴명 변경
@e216bf7186437e260f194e81ad84534ae0611fb5
src/main/java/com/takensoft/cms/bbs/service/Impl/BbsMngServiceImpl.java
--- src/main/java/com/takensoft/cms/bbs/service/Impl/BbsMngServiceImpl.java
+++ src/main/java/com/takensoft/cms/bbs/service/Impl/BbsMngServiceImpl.java
@@ -126,16 +126,19 @@
 
             // 메뉴 등록
             MenuVO menuVO = new MenuVO();
-            menuVO.setUpMenuId("MENU_000000000000027"); // 상위메뉴아이디(콘텐츠 관리 메뉴 아이디)
+            menuVO.setUpMenuId("MENU_000000000000027"); // 상위메뉴아이디(게시판 내용 메뉴 아이디)
             menuVO.setMenuNm(bbsMngVO.getBbsNm()); // 메뉴명
             menuVO.setMenuType("bbs"); // 메뉴타입
-            menuVO.setMenuTypeCtgry(bbsMngVO.getBbsMngId()); // 메뉴타입항목(콘텐츠 유형 아이디)
+            menuVO.setMenuTypeCtgry(bbsMngVO.getBbsMngId()); // 메뉴타입항목(게시판 관리 아이디)
             menuVO.setLinkType("0"); // 링크유형(현재창)
             menuVO.setDgstfnExmnUseYn("Y"); // 만족도조사사용여부(노출)
             menuVO.setMenuExpsrYn("Y"); // 메뉴노출여부(노출)
             menuVO.setMenuUser("A"); // 메뉴사용자(관리자)
-            menuVO.setSysPvsnYn("1"); // 시스템제공여부(시스템등록)
-            menuService.menuSave(menuVO);
+//            menuVO.setSysPvsnYn("1"); // 시스템제공여부(사용자등록)
+            int insertMenu = menuService.menuSave(menuVO);
+            if (insertMenu == 0) {
+                throw new CustomInsertFailException("메뉴 등록에 실패했습니다.");
+            }
 
             result.put("bbsMngId", bbsMngId);
             result.put("result", insertResult);
@@ -276,6 +279,20 @@
                 throw new CustomNotFoundException("사용자 정보 조회에 실패했습니다.");
             }
             bbsMngVO.setMdfr(writer);
+            
+            /** 메뉴명 변경 프로세스 */
+            // 메뉴 조회
+            MenuVO menuVO = new MenuVO();
+            menuVO.setMenuTypeCtgry(bbsMngVO.getBbsMngId());
+            List<MenuVO> menuList = menuService.findExceptTopMenu(menuVO);
+            if(menuList != null && !menuList.isEmpty()) {
+                // 메뉴명 변경
+                for (MenuVO menu : menuList) {
+                    menu.setMenuNm(bbsMngVO.getBbsNm());
+                    menu.setMdfr(writer);
+                    int menuResult = menuService.MenuUpdate(menu);
+                }
+            }
 
             // 확장자 리스트 문자열로 변경
             bbsMngVO.setFileExtnNm(String.join(",", bbsMngVO.getFileExtnNmList()));
@@ -304,9 +321,7 @@
                     if (crsResult == 0) {
                         throw new CustomUpdateFailException("게시판 라우터 페이지 경로 수정에 실패했습니다.");
                     }
-
                 }
-
             }
 
             int result = bbsMngDAO.update(bbsMngVO);
@@ -315,7 +330,7 @@
             }
 
             return result;
-        } catch (CustomDeleteFailException | CustomInsertFailException le) {
+        } catch (CustomUpdateFailException | CustomDeleteFailException | CustomInsertFailException le) {
             throw le;
         } catch (DataAccessException dae) {
             throw dae;
src/main/java/com/takensoft/cms/contsType/service/Impl/ContsTypeServiceImpl.java
--- src/main/java/com/takensoft/cms/contsType/service/Impl/ContsTypeServiceImpl.java
+++ src/main/java/com/takensoft/cms/contsType/service/Impl/ContsTypeServiceImpl.java
@@ -93,7 +93,7 @@
             menuVO.setDgstfnExmnUseYn("N"); // 만족도조사사용여부(미노출)
             menuVO.setMenuExpsrYn(contsTypeVO.getExpsrYn()); // 메뉴노출여부(노출)
             menuVO.setMenuUser("A"); // 메뉴사용자(관리자)
-            menuVO.setSysPvsnYn("0"); // 시스템제공여부(시스템등록)
+//            menuVO.setSysPvsnYn("0"); // 시스템제공여부(시스템등록)
             int insertMenu = menuService.menuSave(menuVO);
             if (insertMenu == 0) {
                 throw new CustomInsertFailException("메뉴 등록에 실패했습니다.");
src/main/java/com/takensoft/cms/menu/dao/MenuDAO.java
--- src/main/java/com/takensoft/cms/menu/dao/MenuDAO.java
+++ src/main/java/com/takensoft/cms/menu/dao/MenuDAO.java
@@ -49,12 +49,12 @@
     List<MenuVO> findChildMenus(String menuId);
 
     /**
-     * @param
+     * @param menuVO - 메뉴 정보
      * @return List<MenuVO> - 메뉴 목록
      *
      * 메뉴 전체 조회(최상위 메뉴 제외-> grd:0)
      */
-    List<MenuVO> findExceptTopMenu();
+    List<MenuVO> findExceptTopMenu(MenuVO menuVO);
 
     /**
      * @param menuVO - 메뉴 정보
src/main/java/com/takensoft/cms/menu/service/Impl/MenuAuthorServiceImpl.java
--- src/main/java/com/takensoft/cms/menu/service/Impl/MenuAuthorServiceImpl.java
+++ src/main/java/com/takensoft/cms/menu/service/Impl/MenuAuthorServiceImpl.java
@@ -93,7 +93,7 @@
                 // 신규 권한 등록 시
             } else if ("author".equals(type)) {
                 // 등록된 메뉴 목록 조회
-                List<MenuVO> menuList = menuDAO.findExceptTopMenu();
+                List<MenuVO> menuList = menuDAO.findExceptTopMenu(new MenuVO());
                 for (MenuVO menu : menuList) {
                     MenuAuthorVO menuAuthor = saveMenuAuthor(menu.getMenuId(), id);
                     int saveAuth = menuAuthorDAO.menuAuthrtSave(menuAuthor);
src/main/java/com/takensoft/cms/menu/service/Impl/MenuServiceImpl.java
--- src/main/java/com/takensoft/cms/menu/service/Impl/MenuServiceImpl.java
+++ src/main/java/com/takensoft/cms/menu/service/Impl/MenuServiceImpl.java
@@ -39,6 +39,7 @@
  *  2024.05.10  |    박정하     | updateList, updateChildNode 추가
  *  2024.06.07  |    방선주     | bbsMngMenuDelete 추가
  *  2025.03.13  |    방선주     | 코드 리펙토링
+ *  2025.04.22  |    하석형     | findExceptTopMenu 추가
  *
  * EgovAbstractServiceImpl - 전자정부 프레임워크에서 제공하는 추상 서비스 구현 클래스
  * MenuService - 메뉴 정보 인터페이스 상속
@@ -102,16 +103,16 @@
             String writer = jwtUtil.getWriter();
             menuVO.setRgtr(writer);
             // 시스템 제공 여부
-            menuVO.setSysPvsnYn("1");
-            if (menuVO.getMenuGrd() != 0) {
-                String upMenuId = menuVO.getUpMenuId();
-                for (int i = 0; i < menuVO.getMenuGrd() - 1; i++) {
-                    upMenuId = menuDAO.findUpMenuId(upMenuId);
-                }
-                if (upMenuId.equals("MENU_000000000000001")) {
-                    menuVO.setSysPvsnYn("0");
-                }
-            }
+            menuVO.setSysPvsnYn("1"); // 사용자 등록
+//            if (menuVO.getMenuGrd() != 0) {
+//                String upMenuId = menuVO.getUpMenuId();
+//                for (int i = 0; i < menuVO.getMenuGrd() - 1; i++) {
+//                    upMenuId = menuDAO.findUpMenuId(upMenuId);
+//                }
+//                if (upMenuId.equals("MENU_000000000000001")) {
+//                    menuVO.setSysPvsnYn("0");
+//                }
+//            }
             // 메뉴 등록
             int result = menuDAO.save(menuVO);
             if(result == 0) {
@@ -142,7 +143,7 @@
         } catch (NullPointerException ne) {
             throw ne;
         } catch (Exception e) {
-            throw new RuntimeException(e);
+            throw e;
         }
     }
 
@@ -241,7 +242,28 @@
         } catch (NullPointerException ne) {
             throw ne;
         } catch (Exception e) {
-            throw new RuntimeException(e);
+            throw e;
+        }
+    }
+
+    /**
+     * @param menuVO - 메뉴 정보
+     * @return List<MenuVO> - 메뉴 목록
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws Exception - 그 외 예외 발생 시
+     *
+     * 전체 메뉴 조회(최상위 메뉴 제외-> grd:0)
+     */
+    @Override
+    public List<MenuVO> findExceptTopMenu(MenuVO menuVO) {
+        try{
+            // 메뉴 조회
+            List<MenuVO> menuList = menuDAO.findExceptTopMenu(menuVO);
+            return menuList;
+        } catch (DataAccessException dae) {
+            throw dae;
+        } catch (Exception e) {
+            throw e;
         }
     }
 
@@ -319,7 +341,7 @@
         }  catch (DataAccessException dae) {
             throw dae;
         } catch (Exception e) {
-            throw new RuntimeException(e);
+            throw e;
         }
     }
 
@@ -409,7 +431,7 @@
         } catch (NullPointerException ne) {
             throw ne;
         } catch (Exception e) {
-            throw new RuntimeException(e);
+            throw e;
         }
     }
     /**
@@ -464,7 +486,7 @@
         } catch (NullPointerException ne) {
             throw ne;
         } catch (Exception e) {
-            throw new RuntimeException(e);
+            throw e;
         }
     }
     /**
@@ -492,7 +514,7 @@
         } catch (NullPointerException ne) {
             throw ne;
         } catch (Exception e) {
-            throw new RuntimeException(e);
+            throw e;
         }
     }
 }
src/main/java/com/takensoft/cms/menu/service/MenuService.java
--- src/main/java/com/takensoft/cms/menu/service/MenuService.java
+++ src/main/java/com/takensoft/cms/menu/service/MenuService.java
@@ -63,6 +63,14 @@
      */
     int MenuUpdate(MenuVO menuVO);
 
+    /**
+     * @param menuVO - 메뉴 정보
+     * @return List<MenuVO> - 전체 메뉴 정보
+     *
+     * 전체 메뉴 조회
+     */
+    List<MenuVO> findExceptTopMenu(MenuVO menuVO);
+
     /************************************** Hierachy 전용 **************************************/
 
     /**
src/main/resources/mybatis/mapper/menu/menu-SQL.xml
--- src/main/resources/mybatis/mapper/menu/menu-SQL.xml
+++ src/main/resources/mybatis/mapper/menu/menu-SQL.xml
@@ -164,6 +164,7 @@
              , mi.link_type
              , mi.dgstfn_exmn_use_yn
              , mi.menu_expsr_yn
+             , mi.sys_pvsn_yn
              , mi.menu_user
              , mi.use_yn
              , mi.rgtr
@@ -202,9 +203,17 @@
         작성일 : 2024.04.15
         내 용 : 메뉴 전체 조회(최상위 메뉴 제외-> grd:0)
     -->
-    <select id="findExceptTopMenu" resultType="MenuVO">
+    <select id="findExceptTopMenu" parameterType="MenuVO" resultType="MenuVO">
         <include refid="selectMenu" />
-        WHERE menu_grd != 0
+        WHERE 1=1
+        <choose>
+            <when test ="menuTypeCtgry != null and menuTypeCtgry != ''">
+                AND menu_type_ctgry = #{menuTypeCtgry}
+            </when>
+            <otherwise>
+                AND menu_grd != 0
+            </otherwise>
+        </choose>
     </select>
 
     <!--
@@ -372,6 +381,7 @@
              , mi.link_type
              , mi.menu_type
              , mi.menu_type_ctgry
+             , mi.sys_pvsn_yn
           FROM menu_info mi
      LEFT JOIN ( SELECT conts_id
                     <choose>
@@ -461,7 +471,7 @@
     <!--
        작성자 : 방선주
        작성일 : 2024.06.07
-       내 용 : 게시판 관리에서 게시판 삭제 시 게시판 메뉴 미노출로 변경 (MENU_000000000000032 강제 적용)
+       내 용 : 게시판 관리에서 게시판 삭제 시 게시판 메뉴 미노출로 변경 (MENU_000000000000027 강제 적용)
    -->
     <update id="bbsMngMenuDelete" parameterType="MenuVO">
         UPDATE menu_info
src/main/resources/mybatis/mapper/menu/menuAuthor-SQL.xml
--- src/main/resources/mybatis/mapper/menu/menuAuthor-SQL.xml
+++ src/main/resources/mybatis/mapper/menu/menuAuthor-SQL.xml
@@ -96,6 +96,8 @@
              , mt.menu_id
              , mt.up_menu_id
              , mt.menu_nm
+             , mt.sys_pvsn_yn
+             , mt.menu_user
              , mai.inq_authrt
              , mai.reg_authrt
              , mai.mdfcn_authrt
@@ -107,7 +109,8 @@
            AND mai.authrt_cd = #{authrtCd}
          WHERE mt.use_yn = 'Y'
         <if test="authrtCd != 'ROLE_ADMIN'">
-           AND mt.sys_pvsn_yn = '1'
+           <!-- AND mt.sys_pvsn_yn = '1' -->
+            AND mt.menu_user = 'U'
         </if>
       ORDER BY mt.name
     </select>
Add a comment
List