From aafd4bee6178b9883ee714e6e45307ccb773d643 Mon Sep 17 00:00:00 2001 From: KNKIM Date: Fri, 30 Jul 2021 09:28:25 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AC=BB=EA=B3=A0=EB=8B=B5=ED=95=98=EA=B8=B0?= =?UTF-8?q?=20=EC=82=AD=EC=A0=9C=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/dataxml/uac.service.board.qna_DELETE.xml | 7 ++ .../java/nlib/bbs/service/impl/BoardDAO.java | 3 +- .../bbs/service/impl/BoardServiceImpl.java | 2 +- .../java/nlib/bbs/web/BoardController.java | 90 +++++++++++++++-- .../java/nlib/cmm/NlibCommonController.java | 22 ++++- .../WEB-INF/jsp/nlib/board/listQnAs.jsp | 2 + .../WEB-INF/jsp/nlib/board/selectQnA.jsp | 96 +++++++++++-------- 7 files changed, 171 insertions(+), 51 deletions(-) create mode 100644 data/dataxml/uac.service.board.qna_DELETE.xml diff --git a/data/dataxml/uac.service.board.qna_DELETE.xml b/data/dataxml/uac.service.board.qna_DELETE.xml new file mode 100644 index 00000000..7065f35c --- /dev/null +++ b/data/dataxml/uac.service.board.qna_DELETE.xml @@ -0,0 +1,7 @@ + + + + + 10 + + diff --git a/src/main/java/nlib/bbs/service/impl/BoardDAO.java b/src/main/java/nlib/bbs/service/impl/BoardDAO.java index 31b4aa27..19550c74 100644 --- a/src/main/java/nlib/bbs/service/impl/BoardDAO.java +++ b/src/main/java/nlib/bbs/service/impl/BoardDAO.java @@ -58,7 +58,8 @@ public class BoardDAO extends DataApi } public DataApiResVO deleteQnA(DataApiReqVO reqVO) { - return null; + reqVO.setReqUrl(RESOURCE_URI); + return delete(reqVO); } public DataApiResVO insertQnA(DataApiReqVO reqVO) { diff --git a/src/main/java/nlib/bbs/service/impl/BoardServiceImpl.java b/src/main/java/nlib/bbs/service/impl/BoardServiceImpl.java index a339bcdf..1d827304 100644 --- a/src/main/java/nlib/bbs/service/impl/BoardServiceImpl.java +++ b/src/main/java/nlib/bbs/service/impl/BoardServiceImpl.java @@ -59,7 +59,7 @@ public class BoardServiceImpl implements BoardService } public DataApiResVO deleteQnA(DataApiReqVO reqVO) { - return null; + return boardDAO.deleteQnA(reqVO); } diff --git a/src/main/java/nlib/bbs/web/BoardController.java b/src/main/java/nlib/bbs/web/BoardController.java index f48f69d8..e288ec97 100644 --- a/src/main/java/nlib/bbs/web/BoardController.java +++ b/src/main/java/nlib/bbs/web/BoardController.java @@ -100,10 +100,12 @@ public class BoardController extends NlibCommonController String searchKeyword = paramMap.get("searchKeyword"); String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1"); String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE); + String message = paramMap.get("message"); log.debug("listQnAs > pageIndex = " + pageIndex); log.debug("listQnAs > pageSize = " + pageSize); log.debug("listQnAs > searchKeyword = " + searchKeyword); + log.debug("listQnAs > message = " + message); // 페이징 사이즈 코드 목록 조회 DataApiReqVO reqVOforPageSize = new DataApiReqVO(); @@ -117,6 +119,7 @@ public class BoardController extends NlibCommonController model.addAttribute("pageSize" , pageSize); model.addAttribute("searchKeyword", searchKeyword); model.addAttribute("pageSizeCodes", resVOforPageSize.getList()); + model.addAttribute("message" , message); return "nlib/board/listQnAs"; } @@ -262,7 +265,7 @@ public class BoardController extends NlibCommonController return "redirect:/board/insertQnAForm.do"; } - return "redirect:nlib/board/listQnAs"; + return "redirect:/board/listQnAs.do"; } @RequestMapping("/board/verifyWriter.do") @@ -405,26 +408,99 @@ public class BoardController extends NlibCommonController // 처리결과 확인 if(!updateResVO.isSuccess()) { message = updateResVO.getResultMessage(); - addParamsToModel(paramMap, model); + model.addAttribute("message", message); + addParamsToModel(paramMap, model, null, "pageIndex,pageSize,searchKeyword,articleNo"); + addParamsToModel(paramMap, model, "article" + , "articleNo,articleType," + + "articleTypeName,title,articlePassword,readCount," + + "regDate, reguserName, repStats, " + + "email, contentQeust, " + + "contentQuestFile"); + return "redirect:/board/updateQnAForm.do"; } // 반환 정보 model.addAttribute("articleNo" , updateResVO.getInfoItem("articleNo")); // 신규등록된 게시물 ID - model.addAttribute("article" , resVO.getInfo()); - model.addAttribute("message" , "성공적으로 수정처리되었습니다."); + model.addAttribute("message" , "성공적으로 수정되었습니다."); // 검색 정보 model.addAttribute("pageIndex" , pageIndex); model.addAttribute("pageSize" , pageSize); model.addAttribute("searchKeyword", searchKeyword); - return "redirect:nlib/board/selectQnA"; + return "redirect:/board/selectQnA.do"; } @RequestMapping("/board/deleteQnA.do") - public String deleteQnA(HttpServletRequest req) { - return "nlib/board/deleteQnA"; + public String deleteQnA(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) { + + String message = null; + + // 목록 이동시 전달할 매개변수 + String searchKeyword = paramMap.get("searchKeyword"); + String pageIndex = paramMap.get("pageIndex"); + String pageSize = paramMap.get("pageSize"); + + // 게시물 번호 + String articleNo = paramMap.get("articleNo"); + String articlePassword = paramMap.get("articlePassword"); + + log.debug("deleteQnA > pageIndex = " + pageIndex); + log.debug("deleteQnA > pageSize = " + pageSize); + log.debug("deleteQnA > searchKeyword = " + searchKeyword); + log.debug("deleteQnA > articleNo = " + articleNo); + log.debug("deleteQnA > articlePassword = " + articlePassword); + + if(StringUtil.isEmpty(articlePassword)) { + model.addAttribute("message", "비밀빈호가 올바르지 않습니다.(D1)"); + return "redirect:/board/selectQnA.do"; + } + + //------------------------------- + // REQ VO 구성 + //------------------------------- + DataApiReqVO reqVO = new DataApiReqVO(); + reqVO.setAuthKey(createAuthKey(req, authentication)); + reqVO.setPageIndex(pageIndex); + reqVO.setPageSize(pageSize); + reqVO.addInfoItem("boardNo", "QNA"); // 게시판ID + reqVO.addInfoItem("articleNo", articleNo); // 게시물번호 + + // 요청 + DataApiResVO resVO = boardService.selectQnA(reqVO); + + // 비밀번호 확인 + HashMap article = resVO.getInfo(); + String shaArticlePassword = nlibPasswordEncoder.encode(articlePassword); + log.debug("updateQnAForm > 입력받은 비밀번호를 SHA256 암호화한 값 : " + shaArticlePassword); + + if(!shaArticlePassword.equals(article.get("articlePassword"))) { + model.addAttribute("message", "비밀번호가 올바르지 않습니다.(D2)"); + return "redirect:/board/selectQnA.do"; + } + + // 삭제 처리 + DataApiResVO delResVO = boardService.deleteQnA(reqVO); + + // 처리결과 확인 + if(!delResVO.isSuccess()) { + message = delResVO.getResultMessage(); + model.addAttribute("message", message); + addParamsToModel(paramMap, model, null, "pageIndex,pageSize,searchKeyword,articleNo"); + + return "redirect:/board/selectQnA.do"; + } + + // 반환 정보 + model.addAttribute("message" , "성공적으로 삭제되었습니다."); + + // 검색 정보 + model.addAttribute("pageIndex" , pageIndex); + model.addAttribute("pageSize" , pageSize); + model.addAttribute("searchKeyword", searchKeyword); + + return "redirect:/board/listQnAs.do"; } } \ No newline at end of file diff --git a/src/main/java/nlib/cmm/NlibCommonController.java b/src/main/java/nlib/cmm/NlibCommonController.java index c8de86f0..89909936 100644 --- a/src/main/java/nlib/cmm/NlibCommonController.java +++ b/src/main/java/nlib/cmm/NlibCommonController.java @@ -183,13 +183,31 @@ public class NlibCommonController { } public ModelMap addParamsToModel(Map paramMap, ModelMap model, String upperMapName, String itemNames) { + if(paramMap == null || paramMap.size() < 1) return model; if(model == null) return model; + String filter = null; + if(StringUtil.isNotEmpty(itemNames)) { + filter = "," + itemNames + ","; + filter = filter.replaceAll(" ", ""); + } + boolean existUpperMap = StringUtil.isNotEmpty(upperMapName); - Map uppperMap = new HashMap(); + Map uppperMap = null; + if(existUpperMap) uppperMap = new HashMap(); + for(String key : paramMap.keySet()) { - model.addAttribute(key, paramMap.get(key)); + + if(filter != null && !filter.contains("," + key + ",")) { + continue; + } + if(existUpperMap) { + uppperMap.put(key, paramMap.get(key)); + } else { + model.addAttribute(key, paramMap.get(key)); + } + } return model; diff --git a/src/main/webapp/WEB-INF/jsp/nlib/board/listQnAs.jsp b/src/main/webapp/WEB-INF/jsp/nlib/board/listQnAs.jsp index 0992f3f7..2e6a34bc 100644 --- a/src/main/webapp/WEB-INF/jsp/nlib/board/listQnAs.jsp +++ b/src/main/webapp/WEB-INF/jsp/nlib/board/listQnAs.jsp @@ -161,6 +161,8 @@ function fn_searchArticle(pageSize, pageIndex) {

${pageTitle }

+메시지 : ${message} + 
diff --git a/src/main/webapp/WEB-INF/jsp/nlib/board/selectQnA.jsp b/src/main/webapp/WEB-INF/jsp/nlib/board/selectQnA.jsp index 41600701..5db2f3ec 100644 --- a/src/main/webapp/WEB-INF/jsp/nlib/board/selectQnA.jsp +++ b/src/main/webapp/WEB-INF/jsp/nlib/board/selectQnA.jsp @@ -37,6 +37,57 @@ ${pageTitle} + + + @@ -103,50 +154,15 @@ - - - + -
- - - -