검색 게시물 불러오기 API 구현완료

This commit is contained in:
2024-09-11 17:44:22 +09:00
parent 234c866111
commit 09eda85b3a
6 changed files with 81 additions and 1 deletions

View File

@ -16,6 +16,7 @@ import com.eogns.board_back.dto.response.board.GetBoardResponseDto;
import com.eogns.board_back.dto.response.board.GetCommentListResponseDto;
import com.eogns.board_back.dto.response.board.GetFavoriteListResponseDto;
import com.eogns.board_back.dto.response.board.GetLatestBoardListResponseDto;
import com.eogns.board_back.dto.response.board.GetSearchBoardListResponseDto;
import com.eogns.board_back.dto.response.board.GetTop3BoardListResponseDto;
import com.eogns.board_back.dto.response.board.IncreaseViewCountResponseDto;
import com.eogns.board_back.dto.response.board.PatchBoardResponseDto;
@ -92,6 +93,15 @@ public class BoardController {
return response;
}
@GetMapping(value={"/search-list/{searchWord}", "/search-list/{searchWord}/{preSearchWord}"})
public ResponseEntity<? super GetSearchBoardListResponseDto> getSearchBoardList(
@PathVariable("searchWord") String searchWord,
@PathVariable(value="preSearchWord", required = false) String preSearchWord
){
ResponseEntity<? super GetSearchBoardListResponseDto> response = boardService.getSearchBoardList(searchWord, preSearchWord);
return response;
}
@PostMapping("")
public ResponseEntity<? super PostBoardResponseDto> postBoard(

View File

@ -0,0 +1,31 @@
package com.eogns.board_back.dto.response.board;
import java.util.List;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import com.eogns.board_back.common.ResponseCode;
import com.eogns.board_back.common.ResponseMessage;
import com.eogns.board_back.dto.object.BoardListItem;
import com.eogns.board_back.dto.response.ResponseDto;
import com.eogns.board_back.entity.BoardListViewEntity;
import lombok.Getter;
@Getter
public class GetSearchBoardListResponseDto extends ResponseDto{
private List<BoardListItem> searchList;
private GetSearchBoardListResponseDto(List<BoardListViewEntity> boardListViewEntities){
super(ResponseCode.SUCCESS, ResponseMessage.SUCCESS);
this.searchList = BoardListItem.getList(boardListViewEntities);
}
public static ResponseEntity<GetSearchBoardListResponseDto> success(List<BoardListViewEntity> boardListViewEntities){
GetSearchBoardListResponseDto result = new GetSearchBoardListResponseDto(boardListViewEntities);
return ResponseEntity.status(HttpStatus.OK).body(result);
}
}

View File

@ -20,4 +20,11 @@ public class SearchLogEntity {
private String searchWord;
private String relationWord;
private boolean relation;
public SearchLogEntity(String searchWord, String relationWord, boolean relation){
this.searchWord = searchWord;
this.relationWord = relationWord;
this.relation = relation;
}
}

View File

@ -12,5 +12,5 @@ public interface BoardListViewRepository extends JpaRepository<BoardListViewEnti
List<BoardListViewEntity> findByOrderByWriteDatetimeDesc();
List<BoardListViewEntity> findTop3ByWriteDatetimeGreaterThanOrderByFavoriteCountDescCommentCountDescViewCountDescWriteDatetimeDesc(String writeDatetime);
List<BoardListViewEntity> findByTitleContainsOrContentContainsOrderByWriteDatetimeDesc(String title, String content);
}

View File

@ -13,6 +13,7 @@ import com.eogns.board_back.dto.response.board.PostCommentResponseDto;
import com.eogns.board_back.dto.response.board.PutFavoriteResponseDto;
import com.eogns.board_back.dto.response.board.GetFavoriteListResponseDto;
import com.eogns.board_back.dto.response.board.GetLatestBoardListResponseDto;
import com.eogns.board_back.dto.response.board.GetSearchBoardListResponseDto;
import com.eogns.board_back.dto.response.board.GetTop3BoardListResponseDto;
import com.eogns.board_back.dto.response.board.IncreaseViewCountResponseDto;
import com.eogns.board_back.dto.response.board.PatchBoardResponseDto;
@ -23,6 +24,7 @@ public interface BoardService {
ResponseEntity<? super GetCommentListResponseDto> getCommentList(Integer boardNumber);
ResponseEntity<? super GetLatestBoardListResponseDto> getLatestBoardList();
ResponseEntity<? super GetTop3BoardListResponseDto> getTop3BoardList();
ResponseEntity<? super GetSearchBoardListResponseDto> getSearchBoardList(String searchWord, String preSearchWord);
ResponseEntity<? super PostBoardResponseDto> postBoard(PostBoardRequestDto dto, String email);
ResponseEntity<? super PostCommentResponseDto> postComment(PostCommentRequestDto Dto, Integer boardNumber, String email);
ResponseEntity<? super PutFavoriteResponseDto> putFavorite(Integer boardNumber, String email);

View File

@ -16,6 +16,7 @@ import com.eogns.board_back.dto.response.board.GetBoardResponseDto;
import com.eogns.board_back.dto.response.board.GetCommentListResponseDto;
import com.eogns.board_back.dto.response.board.GetFavoriteListResponseDto;
import com.eogns.board_back.dto.response.board.GetLatestBoardListResponseDto;
import com.eogns.board_back.dto.response.board.GetSearchBoardListResponseDto;
import com.eogns.board_back.dto.response.board.GetTop3BoardListResponseDto;
import com.eogns.board_back.dto.response.board.IncreaseViewCountResponseDto;
import com.eogns.board_back.dto.response.board.PatchBoardResponseDto;
@ -27,11 +28,13 @@ import com.eogns.board_back.entity.BoardListViewEntity;
import com.eogns.board_back.entity.CommentEntity;
import com.eogns.board_back.entity.FavoriteEntity;
import com.eogns.board_back.entity.ImageEntity;
import com.eogns.board_back.entity.SearchLogEntity;
import com.eogns.board_back.repository.BoardListViewRepository;
import com.eogns.board_back.repository.BoardRepository;
import com.eogns.board_back.repository.CommentRepository;
import com.eogns.board_back.repository.FavoriteRepository;
import com.eogns.board_back.repository.ImageRepository;
import com.eogns.board_back.repository.SearchLogRepository;
import com.eogns.board_back.repository.UserRepository;
import com.eogns.board_back.repository.resultSet.GetBoardResultSet;
import com.eogns.board_back.repository.resultSet.GetCommentListResultSet;
@ -55,6 +58,7 @@ public class BoardServiceImplement implements BoardService{
private final CommentRepository commentRepository;
private final FavoriteRepository favoriteRepository;
private final BoardListViewRepository boardListViewRepository;
private final SearchLogRepository searchLogRepository;
@Override
public ResponseEntity<? super GetBoardResponseDto> getBoard(Integer boardNumber) {
@ -146,6 +150,30 @@ public class BoardServiceImplement implements BoardService{
return GetTop3BoardListResponseDto.success(boardListViewEntities);
}
@Override
public ResponseEntity<? super GetSearchBoardListResponseDto> getSearchBoardList(String searchWord,String preSearchWord) {
List<BoardListViewEntity> boardListViewEntities = new ArrayList<>();
try {
boardListViewEntities = boardListViewRepository.findByTitleContainsOrContentContainsOrderByWriteDatetimeDesc(searchWord, searchWord);
SearchLogEntity searchLogEntity = new SearchLogEntity(searchWord, preSearchWord, false);
searchLogRepository.save(searchLogEntity);
boolean relation = preSearchWord != null; /* 이전에 검색한걸로 넘어오는지 아니면 첫번째 검색한건지 판단 */
if(relation){
searchLogEntity = new SearchLogEntity (preSearchWord ,searchWord, relation);
searchLogRepository.save(searchLogEntity);
}
} catch (Exception exception) {
exception.printStackTrace();
return ResponseDto.databaseError();
}
return GetSearchBoardListResponseDto.success(boardListViewEntities);
}
@Override
public ResponseEntity<? super PostBoardResponseDto> postBoard(PostBoardRequestDto dto, String email) {
@ -307,4 +335,6 @@ public class BoardServiceImplement implements BoardService{
}
}