검색어 페이징 수정

This commit is contained in:
dyhj625 2025-03-28 11:09:41 +09:00
parent fe7afd1d7f
commit fe3081e859

View File

@ -55,16 +55,14 @@ public class localbordService {
private final PasswordEncoder passwordEncoder;
public List<MapDto> selectNotices(MapDto map) {
String keyword = map.getString("searchKeyword");
map.put("searchKeyword", null);
List<MapDto> posts = boardMapper.selectNotices(map);
enrichPostsWithAdditionalData(posts);
return filterPostsByKeyword(posts, keyword);
return posts; // 검색 없이 전체 공지사항 리스트 반환
}
public PageInfo<MapDto> selectGeneralPosts(MapDto map) {
int page = map.getString("page") != null ? Integer.parseInt(map.getString("page")) : 1;
int size = map.getString("size") != null ? Integer.parseInt(map.getString("size")) : 10;
@ -75,28 +73,34 @@ public class localbordService {
}
String keyword = map.getString("searchKeyword");
map.put("searchKeyword", null); // MyBatis에 전달하지 않음
boolean hasKeyword = keyword != null && !keyword.trim().isEmpty();
// 넉넉히 많이 가져온 Java에서 필터링
PageHelper.startPage(1, 1000); // 최대 1000개까지만 조회
List<MapDto> result = boardMapper.selectGeneralPosts(map);
if (hasKeyword) {
// 전체 데이터를 가져와서 필터링
map.put("searchKeyword", null);
List<MapDto> allPosts = boardMapper.selectGeneralPosts(map);
enrichPostsWithAdditionalData(allPosts);
enrichPostsWithAdditionalData(result);
// 검색어 기반 필터링
List<MapDto> filtered = filterPostsByKeyword(allPosts, keyword.trim());
// 키워드 필터링 적용
List<MapDto> filtered = filterPostsByKeyword(result, keyword);
// 원하는 페이지만 잘라서 리턴
// Java에서 수동 페이징
int fromIndex = (page - 1) * size;
int toIndex = Math.min(fromIndex + size, filtered.size());
List<MapDto> pageList = fromIndex >= filtered.size() ? new ArrayList<>() : filtered.subList(fromIndex, toIndex);
List<MapDto> pagedList = fromIndex >= filtered.size() ? new ArrayList<>() : filtered.subList(fromIndex, toIndex);
PageInfo<MapDto> pageInfo = new PageInfo<>(pageList);
PageInfo<MapDto> pageInfo = new PageInfo<>(pagedList);
pageInfo.setTotal(filtered.size());
return PageUtil.redefineNavigation(pageInfo);
}
// 키워드 없으면 MyBatis에서 DB 페이징 처리
PageHelper.startPage(page, size);
List<MapDto> result = boardMapper.selectGeneralPosts(map);
enrichPostsWithAdditionalData(result);
return PageUtil.redefineNavigation(new PageInfo<>(result));
}
public void updateIncrementViewCount(Long boardId) {
boardMapper.updateIncrementViewCount(boardId);
}