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 @@