From f4ae40d7813a7bf5203dabd7e6b8b6b3d7c64256 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=84=9D=20=EC=B5=9C?= Date: Thu, 15 Jun 2023 18:13:38 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A4=91=EA=B0=84=EC=A0=80=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../searchEngine/SearchEngineController.java | 29 ++- .../main/searchEngine/model/SearchParams.java | 40 ++- .../service/SearchEngineService.java | 5 +- src/main/resources/static/js/common.js | 12 +- .../searchEngine/{layout.js => searchPage.js} | 9 + .../templates/searchEngine/search.html | 227 +++++++++++------- 6 files changed, 219 insertions(+), 103 deletions(-) rename src/main/resources/static/js/searchEngine/{layout.js => searchPage.js} (74%) diff --git a/src/main/java/com/dbnt/faisp/main/searchEngine/SearchEngineController.java b/src/main/java/com/dbnt/faisp/main/searchEngine/SearchEngineController.java index 06e1fbe4..d4d352ae 100644 --- a/src/main/java/com/dbnt/faisp/main/searchEngine/SearchEngineController.java +++ b/src/main/java/com/dbnt/faisp/main/searchEngine/SearchEngineController.java @@ -1,6 +1,8 @@ package com.dbnt.faisp.main.searchEngine; import com.dbnt.faisp.main.codeMgt.service.CodeMgtService; +import com.dbnt.faisp.main.menuMgt.model.MenuMgt; +import com.dbnt.faisp.main.menuMgt.service.MenuMgtService; import com.dbnt.faisp.main.publicBoard.model.PublicBoard; import com.dbnt.faisp.main.publicBoard.model.PublicComment; import com.dbnt.faisp.main.publicBoard.service.PublicBoardService; @@ -24,20 +26,21 @@ import java.util.List; public class SearchEngineController { private final SearchEngineService searchEngineService; + private final MenuMgtService menuMgtService; @GetMapping("/searchPage") public ModelAndView organMgtPage(@AuthenticationPrincipal UserInfo loginUser, SearchParams params) { ModelAndView mav = new ModelAndView("searchEngine/search"); if (Utils.isEmpty(params.getActiveTab())){ params.setActiveTab("all"); + params.setPageIndex(1); } - mav.addObject("searchParams", params); int totalCnt = 0; SearchResult result = null; + MenuMgt menuParam = new MenuMgt(); switch (params.getActiveTab()){ case "all": -// params.setOffset("0"); -// params.setLimit("10"); + params.setQueryInfo(); params.setForm("search_menu_view.search_menu_view"); result = searchEngineService.getData(params, SearchMenuView.class); totalCnt += result.getTotalCount(); @@ -50,26 +53,46 @@ public class SearchEngineController { result = searchEngineService.getData(params, SearchFileView.class); totalCnt += result.getTotalCount(); mav.addObject("fileResult", result); + + menuParam.setUserSeq(loginUser.getUserSeq()); + menuParam.setFirstIndex(0); + menuParam.setRowCnt(Integer.MAX_VALUE); + mav.addObject("menuList", menuMgtService.selectMenuMgtList(null)); break; case "menu": + params.setQueryInfo(); params.setForm("search_menu_view.search_menu_view"); result = searchEngineService.getData(params, SearchMenuView.class); totalCnt += result.getTotalCount(); + params.setContentCnt(totalCnt); mav.addObject("menuResult", result); + params.setPaginationInfo(); break; case "board": + params.setQueryInfo(); params.setForm("search_board_view.search_board_view"); result = searchEngineService.getData(params, SearchBoardView.class); totalCnt += result.getTotalCount(); + params.setContentCnt(totalCnt); mav.addObject("boardResult", result); + params.setPaginationInfo(); + + menuParam.setUserSeq(loginUser.getUserSeq()); + menuParam.setFirstIndex(0); + menuParam.setRowCnt(Integer.MAX_VALUE); + mav.addObject("menuList", menuMgtService.selectMenuMgtList(null)); break; case "file": + params.setQueryInfo(); params.setForm("search_file_view.search_file_view"); result = searchEngineService.getData(params, SearchFileView.class); totalCnt += result.getTotalCount(); + params.setContentCnt(totalCnt); mav.addObject("fileResult", result); + params.setPaginationInfo(); break; } + mav.addObject("searchParams", params); mav.addObject("totalCnt", totalCnt); return mav; } diff --git a/src/main/java/com/dbnt/faisp/main/searchEngine/model/SearchParams.java b/src/main/java/com/dbnt/faisp/main/searchEngine/model/SearchParams.java index ea27894a..ffa38c3d 100644 --- a/src/main/java/com/dbnt/faisp/main/searchEngine/model/SearchParams.java +++ b/src/main/java/com/dbnt/faisp/main/searchEngine/model/SearchParams.java @@ -3,12 +3,48 @@ package com.dbnt.faisp.main.searchEngine.model; import lombok.Data; import lombok.NoArgsConstructor; +import javax.persistence.Transient; + @Data @NoArgsConstructor public class SearchParams { private String form; private String keyword; - private String offset; - private String limit; + private Integer offset; + private Integer limit; private String activeTab; + private Integer pageIndex; + + private Integer contentCnt; + private Integer startNum=1; // pagination 시작값 + private Integer endNum=5; // pagination 마지막값 + private Integer maxNum; // pagination 최대값 + + public void setQueryInfo(){ + setLimit(10); + setOffset((getPageIndex()-1)*10); + } + + public void setPaginationInfo(){ + int contentCnt = getContentCnt(); + int rowCnt = 10; + int maxNum = (int)Math.ceil(((double)contentCnt)/rowCnt); + if (maxNum==0){ + maxNum = 1; + } + setMaxNum(maxNum); + + int pageIndex = getPageIndex(); + int startNum = pageIndex - 2; + if(startNum <= 0){ + startNum = 1; + } + setStartNum(startNum); + + int endNum = startNum + 4; + if(endNum>maxNum){ + endNum = maxNum; + } + setEndNum(endNum); + } } diff --git a/src/main/java/com/dbnt/faisp/main/searchEngine/service/SearchEngineService.java b/src/main/java/com/dbnt/faisp/main/searchEngine/service/SearchEngineService.java index 5ae85627..a3040bf0 100644 --- a/src/main/java/com/dbnt/faisp/main/searchEngine/service/SearchEngineService.java +++ b/src/main/java/com/dbnt/faisp/main/searchEngine/service/SearchEngineService.java @@ -41,8 +41,9 @@ public class SearchEngineService { .queryParam("select", "*") .queryParam("from", params.getForm()) .queryParam("where", "text_idx = '"+params.getKeyword()+"' allword synonym order by $relevance desc") -// .queryParam("offset", params.getOffset()) -// .queryParam("limit", params.getLimit()) + .queryParam("offset", params.getOffset().toString()) + //.queryParam("limit", params.getLimit().toString()) + // total_count 갯수수가 limit로 제한걸려 조건에서 제외. 검색 결과는 정상적으로 나옴. .queryParam("charset", "UTF-8") .queryParam("hilite-keywords", params.getKeyword()) .encode() diff --git a/src/main/resources/static/js/common.js b/src/main/resources/static/js/common.js index 6c658e96..def50017 100644 --- a/src/main/resources/static/js/common.js +++ b/src/main/resources/static/js/common.js @@ -59,10 +59,12 @@ $(document).on('click', '.allChk', function (){ $(this).parents('table').find('[type="checkbox"]').prop("checked", this.checked); }) $(document).on('click', '.page-item', function (){ - if(!this.className.includes("modalPage")){ - searchFormSubmit($(this).attr("data-pageindex")) - }else{ + if(this.className.includes("modalPage")){ searchModalSubmit($(this).attr("data-pageindex")) + }else if(this.className.includes("searchPage")){ + searchPageFormSubmit($(this).attr("data-pageindex")) + }else{ + searchFormSubmit($(this).attr("data-pageindex")) } }) $(document).on('click', '#searchModalBtn', function (){ @@ -84,6 +86,10 @@ function searchFormSubmit(pageIndex){ $("#pageIndex").val(pageIndex); $("#searchBtn").click(); } +function searchPageFormSubmit(pageIndex){ + $("#pageIndexInput").val(pageIndex); + $("#searchForm").submit(); +} function searchModalSubmit(pageIndex){ $("#modalPageIndex").val(pageIndex); $.ajax({ diff --git a/src/main/resources/static/js/searchEngine/layout.js b/src/main/resources/static/js/searchEngine/searchPage.js similarity index 74% rename from src/main/resources/static/js/searchEngine/layout.js rename to src/main/resources/static/js/searchEngine/searchPage.js index 4ee3f90d..e5b85b94 100644 --- a/src/main/resources/static/js/searchEngine/layout.js +++ b/src/main/resources/static/js/searchEngine/searchPage.js @@ -18,3 +18,12 @@ $(function () { } }); }); + +$(document).on('click', '#searchBtn', function (){ + searchPageFormSubmit(1); +}) + +$(document).on('click', '.searchTabLink', function (){ + $("#activeTabInput").val($(this).attr('data-activetab')) + searchPageFormSubmit(1); +}) \ No newline at end of file diff --git a/src/main/resources/templates/searchEngine/search.html b/src/main/resources/templates/searchEngine/search.html index f275abe7..dd2d697f 100644 --- a/src/main/resources/templates/searchEngine/search.html +++ b/src/main/resources/templates/searchEngine/search.html @@ -8,16 +8,17 @@ - +
-
+