Skip to content

Commit

Permalink
[fix] 검색, 전체조회 api 통합 -> 검색
Browse files Browse the repository at this point in the history
  • Loading branch information
MinchoGreenT committed Sep 16, 2023
1 parent bebb6a4 commit 401ed40
Show file tree
Hide file tree
Showing 8 changed files with 95 additions and 57 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@ public BaseResponseDto<?> getNotice(@PathVariable String id) {
}

// 공지 전체 조회
@GetMapping("/notice")
public BaseResponseDto<?> getNoticeAll(Pageable pageable) {
return new BaseResponseDto<>(new BasePageDto<>(boardService.findAllNotice(pageable)));
}
// @GetMapping("/notice")
// public BaseResponseDto<?> getNoticeAll(Pageable pageable) {
// return new BaseResponseDto<>(new BasePageDto<>(boardService.findAllNotice(pageable)));
// }

// 공지 검색
@GetMapping("/notice/search")
@GetMapping("/notice")
public BaseResponseDto<?> searchNotice(
@RequestParam String keyword,
@RequestParam String criteria,
Expand All @@ -57,13 +57,13 @@ public BaseResponseDto<?> getQna(@PathVariable String id) {
}

// Q&A 전체 조회
@GetMapping("/qna")
public BaseResponseDto<?> getQnaAll(Pageable pageable) {
return new BaseResponseDto<>(new BasePageDto<>(boardService.findAllQna(pageable)));
}
// @GetMapping("/qna")
// public BaseResponseDto<?> getQnaAll(Pageable pageable) {
// return new BaseResponseDto<>(new BasePageDto<>(boardService.findAllQna(pageable)));
// }

// Q&A 검색
@GetMapping("/qna/search")
@GetMapping("/qna")
public BaseResponseDto<?> searchQna(
@RequestParam String keyword,
@RequestParam String criteria,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ public class Notice extends BaseDocument {
private long date;
private long viewCount;



public static Notice createNotice(String title, String content, String writer, long date, long num){
return Notice.builder()
.title(title)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.example.hicardipresscenter.domain.board.dto.res.QnaResponseDto;
import com.example.hicardipresscenter.global.EmailService;
import com.example.hicardipresscenter.global.MessageType;
import com.example.hicardipresscenter.global.QueryUtil;
import com.example.hicardipresscenter.global.Sequence;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand Down Expand Up @@ -53,19 +54,6 @@ public long getNextSeq(String collection) {
return sequence.getSeq();
}

private long getPeriod(String option) {
switch (option) {
case "week":
return Long.parseLong(LocalDateTime.now().minusWeeks(1).format(DateTimeFormatter.ofPattern("yyyyMMdd")));
case "month":
return Long.parseLong(LocalDateTime.now().minusMonths(1).format(DateTimeFormatter.ofPattern("yyyyMMdd")));
case "all":
return Long.parseLong(LocalDateTime.now().minusYears(100).format(DateTimeFormatter.ofPattern("yyyyMMdd")));
default:
return 0;
}
}

// yyyyMMdd -> yyyy.MM.dd
private String getDateForList(String date) {
return date.substring(0, 4) + "." + date.substring(4, 6) + "." + date.substring(6);
Expand Down Expand Up @@ -116,13 +104,7 @@ public Page<NoticeListResponseDto> findAllNotice(Pageable pageable) {
// 공지 검색
// 현재부터 period 만큼의 공지사항을 검색
public Page<NoticeListResponseDto> searchNotice(Pageable pageable, String keyword, String criteria, String option) {
long now = Long.parseLong(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")));
Query query = new Query(
Criteria.where(criteria).regex(keyword).and("date").gte(getPeriod(option)).lte(now))
.with(pageable)
.skip(pageable.getOffset())
.limit(pageable.getPageSize()
);
Query query = QueryUtil.getQueryWithDate(pageable, option, criteria, keyword);

List<NoticeListResponseDto> list = findNoticeList(query);

Expand Down Expand Up @@ -190,10 +172,7 @@ public Page<QnaListResponseDto> findAllQna(Pageable pageable) {
}

public Page<QnaListResponseDto> searchQna(Pageable pageable, String keyword, String category) {
Query query = new Query(Criteria.where(category).regex(keyword))
.with(pageable)
.skip(pageable.getOffset())
.limit(pageable.getPageSize());
Query query = QueryUtil.getQuery(pageable, category, keyword);

List<QnaListResponseDto> list = findQnaList(query);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public BaseResponseDto<NewsFindResponseDto> findNews(
return newsService.findNews(new ObjectId(id));
}

@GetMapping("/search")
@GetMapping("")
public BaseResponseDto<?> searchNews(
@RequestParam(name = "keyword") String keyword,
@RequestParam(name = "criteria") String criteria,
Expand All @@ -62,10 +62,10 @@ public BaseResponseDto<?> searchNews(
return new BaseResponseDto<>(new BasePageDto<>(newsService.searchNews(pageable, keyword, criteria)));
}

@GetMapping("")
public BaseResponseDto<?> findAllNews(Pageable pageable) {
return new BaseResponseDto<>(new BasePageDto<>(newsService.findAllNews(pageable)));
}
// @GetMapping("")
// public BaseResponseDto<?> findAllNews(Pageable pageable) {
// return new BaseResponseDto<>(new BasePageDto<>(newsService.findAllNews(pageable)));
// }

@PostMapping("/subscribe")
public BaseResponseDto<NewsSubscribeResponseDto> subscribeNews(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,7 @@
import com.example.hicardipresscenter.domain.news.dto.res.NewsFindResponseDto;
import com.example.hicardipresscenter.domain.news.dto.res.NewsSubscribeResponseDto;
import com.example.hicardipresscenter.domain.news.repository.NewsRepository;
import com.example.hicardipresscenter.global.DateUtil;
import com.example.hicardipresscenter.global.EmailService;
import com.example.hicardipresscenter.global.MessageType;
import com.example.hicardipresscenter.global.S3Service;
import com.example.hicardipresscenter.global.*;
import com.example.hicardipresscenter.global.response.BaseResponseDto;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand Down Expand Up @@ -113,10 +110,7 @@ public Page<NewsFindAllResponseDto> findAllNews(Pageable pageable) {
}

public Page<NewsFindAllResponseDto> searchNews(Pageable pageable, String keyword, String category) {
Query query = new Query(Criteria.where(category).regex(keyword))
.with(pageable)
.skip(pageable.getOffset())
.limit(pageable.getPageSize());
Query query = QueryUtil.getQuery(pageable, category, keyword);

List<NewsFindAllResponseDto> list = findNewsList(query);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public BaseResponseDto<?> findReport(
return reportService.findReport(new ObjectId(id));
}

@GetMapping("/search")
@GetMapping("")
public BaseResponseDto<?> searchReport(
@RequestParam(name = "keyword") String keyword,
@RequestParam(name = "criteria") String criteria,
Expand All @@ -43,11 +43,11 @@ public BaseResponseDto<?> searchReport(
return new BaseResponseDto<>(new BasePageDto<>(reportService.searchReport(pageable, keyword, criteria)));
}

@GetMapping("")
public BaseResponseDto<?> findAllReport(Pageable pageable) {
log.info("pageable: {}", pageable);
return new BaseResponseDto<>(new BasePageDto<>(reportService.findAllReport(pageable)));
}
// @GetMapping("")
// public BaseResponseDto<?> findAllReport(Pageable pageable) {
// log.info("pageable: {}", pageable);
// return new BaseResponseDto<>(new BasePageDto<>(reportService.findAllReport(pageable)));
// }

@GetMapping("/test")
public BaseResponseDto<ReportGetResponseDto> test() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.example.hicardipresscenter.domain.report.dto.res.ReportFindResponseDto;
import com.example.hicardipresscenter.domain.report.dto.res.ReportGetResponseDto;
import com.example.hicardipresscenter.global.DateUtil;
import com.example.hicardipresscenter.global.QueryUtil;
import com.example.hicardipresscenter.global.response.BaseResponseDto;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
Expand Down Expand Up @@ -100,10 +101,7 @@ public Page<ReportFindResponseDto> findAllReport(Pageable pageable) {
}

public Page<ReportFindResponseDto> searchReport(Pageable pageable, String keyword, String criteria) {
Query query = new Query(Criteria.where(criteria).regex(keyword))
.with(pageable)
.skip(pageable.getOffset())
.limit(pageable.getPageSize());
Query query = QueryUtil.getQuery(pageable, criteria, keyword);

List<ReportFindResponseDto> list = findReportList(query);

Expand Down
65 changes: 65 additions & 0 deletions src/main/java/com/example/hicardipresscenter/global/QueryUtil.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package com.example.hicardipresscenter.global;

import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class QueryUtil {

public static Query getQueryWithDate(Pageable pageable, String option, String criteria, String keyword) {
long now = Long.parseLong(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")));
Query query;

if (keyword.isEmpty()) {
query = new Query()
.with(pageable)
.skip(pageable.getOffset())
.limit(pageable.getPageSize());
} else {
query = new Query(
Criteria.where(criteria).regex(keyword).and("date").gte(getPeriod(option)).lt(now))
.with(pageable)
.skip(pageable.getOffset())
.limit(pageable.getPageSize());
}

return query;
}

public static Query getQuery(Pageable pageable, String criteria, String keyword) {

Query query;

if (keyword.isEmpty()) {
query = new Query()
.with(pageable)
.skip(pageable.getOffset())
.limit(pageable.getPageSize());
} else {
query = new Query(
Criteria.where(criteria).regex(keyword))
.with(pageable)
.skip(pageable.getOffset())
.limit(pageable.getPageSize());
}

return query;
}


public static long getPeriod(String option) {
switch (option) {
case "week":
return Long.parseLong(LocalDateTime.now().minusWeeks(1).format(DateTimeFormatter.ofPattern("yyyyMMdd")));
case "month":
return Long.parseLong(LocalDateTime.now().minusMonths(1).format(DateTimeFormatter.ofPattern("yyyyMMdd")));
case "all":
return Long.parseLong(LocalDateTime.now().minusYears(100).format(DateTimeFormatter.ofPattern("yyyyMMdd")));
default:
return 0;
}
}
}

0 comments on commit 401ed40

Please sign in to comment.