From 40c4c0ed0e0e830cc3fe7c6a5de800bdd04de69c Mon Sep 17 00:00:00 2001 From: eojin0814 Date: Thu, 23 Nov 2023 06:27:47 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=B2=84=EB=B8=94=EC=B0=A8=ED=8A=B8=20?= =?UTF-8?q?API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/dto/req/TotalReq.java | 2 +- .../application/dto/res/BubbleChartRes.java | 22 +++++++ .../dto/res/ContentLikeCountRes.java | 4 +- .../application/dto/res/ContentsDataRes.java | 2 +- .../application/dto/res/ContentsRes.java | 7 +-- .../application/dto/res/YoutubeRes.java | 4 +- .../application/mapper/ContentsMapper.java | 6 +- .../service/ContentsSubscribeUseCase.java | 12 ++-- .../domain/entity/Contents.java | 5 +- .../domain/entity/Issue.java | 2 +- .../domain/entity/Topic.java | 2 +- .../domain/entity/constant/ApiType.java | 2 +- .../repository/ContentsCustomRepository.java | 8 ++- .../ContentsCustomRepositoryImpl.java | 27 ++++++--- .../domain/repository/ContentsRepository.java | 33 +++++++++++ .../domain/service/ContentsQueryService.java | 56 ++++++++++++++++++ .../domain/service/ContentsService.java | 10 +--- .../domain/service/ContentsServiceImpl.java | 15 ++--- .../domain/service/ImageUrlUpdateService.java | 10 ++-- .../domain/service/NewsAPIService.java | 15 ++--- .../domain/service/ScheduledService.java | 7 +-- .../presentation/ContentsController.java | 59 ++++++++----------- .../constant/ContentsResponse.java | 2 +- .../constant/ContentsResponseMessage.java | 2 +- .../domain/contents/util/KomoranUtils.java | 4 ++ .../application/dto/res/ContentLikeRes.java | 3 - .../like/domain/entity/ContentLike.java | 2 +- .../domain/repository/LikeRepository.java | 2 +- .../like/domain/service/LikeService.java | 4 +- .../domain/repository/ContentsRepository.java | 16 ----- .../domain/service/ContentsQueryService.java | 22 ------- .../domain/morpheme/util/KomoranUtils.java | 4 -- .../server/global/config/MapperConfig.java | 2 +- .../feign/client/FindKeywordFeignClient.java | 2 +- 34 files changed, 219 insertions(+), 156 deletions(-) rename src/main/java/gwangjang/server/domain/{morpheme => contents}/application/dto/req/TotalReq.java (80%) create mode 100644 src/main/java/gwangjang/server/domain/contents/application/dto/res/BubbleChartRes.java rename src/main/java/gwangjang/server/domain/{morpheme => contents}/application/dto/res/ContentLikeCountRes.java (74%) rename src/main/java/gwangjang/server/domain/{morpheme => contents}/application/dto/res/ContentsDataRes.java (91%) rename src/main/java/gwangjang/server/domain/{morpheme => contents}/application/dto/res/ContentsRes.java (59%) rename src/main/java/gwangjang/server/domain/{morpheme => contents}/application/dto/res/YoutubeRes.java (65%) rename src/main/java/gwangjang/server/domain/{morpheme => contents}/application/mapper/ContentsMapper.java (72%) rename src/main/java/gwangjang/server/domain/{morpheme => contents}/application/service/ContentsSubscribeUseCase.java (64%) rename src/main/java/gwangjang/server/domain/{morpheme => contents}/domain/entity/Contents.java (89%) rename src/main/java/gwangjang/server/domain/{morpheme => contents}/domain/entity/Issue.java (88%) rename src/main/java/gwangjang/server/domain/{morpheme => contents}/domain/entity/Topic.java (86%) rename src/main/java/gwangjang/server/domain/{morpheme => contents}/domain/entity/constant/ApiType.java (68%) rename src/main/java/gwangjang/server/domain/{morpheme => contents}/domain/repository/ContentsCustomRepository.java (50%) rename src/main/java/gwangjang/server/domain/{morpheme => contents}/domain/repository/ContentsCustomRepositoryImpl.java (78%) create mode 100644 src/main/java/gwangjang/server/domain/contents/domain/repository/ContentsRepository.java create mode 100644 src/main/java/gwangjang/server/domain/contents/domain/service/ContentsQueryService.java rename src/main/java/gwangjang/server/domain/{morpheme => contents}/domain/service/ContentsService.java (61%) rename src/main/java/gwangjang/server/domain/{morpheme => contents}/domain/service/ContentsServiceImpl.java (92%) rename src/main/java/gwangjang/server/domain/{morpheme => contents}/domain/service/ImageUrlUpdateService.java (93%) rename src/main/java/gwangjang/server/domain/{morpheme => contents}/domain/service/NewsAPIService.java (88%) rename src/main/java/gwangjang/server/domain/{morpheme => contents}/domain/service/ScheduledService.java (86%) rename src/main/java/gwangjang/server/domain/{morpheme => contents}/presentation/ContentsController.java (51%) rename src/main/java/gwangjang/server/domain/{morpheme => contents}/presentation/constant/ContentsResponse.java (80%) rename src/main/java/gwangjang/server/domain/{morpheme => contents}/presentation/constant/ContentsResponseMessage.java (77%) create mode 100644 src/main/java/gwangjang/server/domain/contents/util/KomoranUtils.java delete mode 100644 src/main/java/gwangjang/server/domain/morpheme/domain/repository/ContentsRepository.java delete mode 100644 src/main/java/gwangjang/server/domain/morpheme/domain/service/ContentsQueryService.java delete mode 100644 src/main/java/gwangjang/server/domain/morpheme/util/KomoranUtils.java diff --git a/src/main/java/gwangjang/server/domain/morpheme/application/dto/req/TotalReq.java b/src/main/java/gwangjang/server/domain/contents/application/dto/req/TotalReq.java similarity index 80% rename from src/main/java/gwangjang/server/domain/morpheme/application/dto/req/TotalReq.java rename to src/main/java/gwangjang/server/domain/contents/application/dto/req/TotalReq.java index 910a233..20efde0 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/application/dto/req/TotalReq.java +++ b/src/main/java/gwangjang/server/domain/contents/application/dto/req/TotalReq.java @@ -1,4 +1,4 @@ -package gwangjang.server.domain.morpheme.application.dto.req; +package gwangjang.server.domain.contents.application.dto.req; import lombok.*; diff --git a/src/main/java/gwangjang/server/domain/contents/application/dto/res/BubbleChartRes.java b/src/main/java/gwangjang/server/domain/contents/application/dto/res/BubbleChartRes.java new file mode 100644 index 0000000..a134f7d --- /dev/null +++ b/src/main/java/gwangjang/server/domain/contents/application/dto/res/BubbleChartRes.java @@ -0,0 +1,22 @@ +package gwangjang.server.domain.contents.application.dto.res; + + +import lombok.*; + +@Getter +@Builder +@Setter +@NoArgsConstructor +public class BubbleChartRes { + String issueTitle; + String keyword; + String date; + Long rank; + + public BubbleChartRes(String issueTitle, String keyword, String date, Long rank) { + this.issueTitle = issueTitle; + this.keyword = keyword; + this.date = date; + this.rank = rank; + } +} diff --git a/src/main/java/gwangjang/server/domain/morpheme/application/dto/res/ContentLikeCountRes.java b/src/main/java/gwangjang/server/domain/contents/application/dto/res/ContentLikeCountRes.java similarity index 74% rename from src/main/java/gwangjang/server/domain/morpheme/application/dto/res/ContentLikeCountRes.java rename to src/main/java/gwangjang/server/domain/contents/application/dto/res/ContentLikeCountRes.java index bb55fbe..5e5682b 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/application/dto/res/ContentLikeCountRes.java +++ b/src/main/java/gwangjang/server/domain/contents/application/dto/res/ContentLikeCountRes.java @@ -1,6 +1,6 @@ -package gwangjang.server.domain.morpheme.application.dto.res; +package gwangjang.server.domain.contents.application.dto.res; -import gwangjang.server.domain.morpheme.domain.entity.constant.ApiType; +import gwangjang.server.domain.contents.domain.entity.constant.ApiType; import lombok.*; @Getter diff --git a/src/main/java/gwangjang/server/domain/morpheme/application/dto/res/ContentsDataRes.java b/src/main/java/gwangjang/server/domain/contents/application/dto/res/ContentsDataRes.java similarity index 91% rename from src/main/java/gwangjang/server/domain/morpheme/application/dto/res/ContentsDataRes.java rename to src/main/java/gwangjang/server/domain/contents/application/dto/res/ContentsDataRes.java index ba929ec..f688059 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/application/dto/res/ContentsDataRes.java +++ b/src/main/java/gwangjang/server/domain/contents/application/dto/res/ContentsDataRes.java @@ -1,4 +1,4 @@ -package gwangjang.server.domain.morpheme.application.dto.res; +package gwangjang.server.domain.contents.application.dto.res; import lombok.*; diff --git a/src/main/java/gwangjang/server/domain/morpheme/application/dto/res/ContentsRes.java b/src/main/java/gwangjang/server/domain/contents/application/dto/res/ContentsRes.java similarity index 59% rename from src/main/java/gwangjang/server/domain/morpheme/application/dto/res/ContentsRes.java rename to src/main/java/gwangjang/server/domain/contents/application/dto/res/ContentsRes.java index 88a834c..740acca 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/application/dto/res/ContentsRes.java +++ b/src/main/java/gwangjang/server/domain/contents/application/dto/res/ContentsRes.java @@ -1,9 +1,6 @@ -package gwangjang.server.domain.morpheme.application.dto.res; +package gwangjang.server.domain.contents.application.dto.res; -import gwangjang.server.domain.morpheme.domain.entity.Contents; -import gwangjang.server.domain.morpheme.domain.entity.constant.ApiType; -import jakarta.persistence.EnumType; -import jakarta.persistence.Enumerated; +import gwangjang.server.domain.contents.domain.entity.constant.ApiType; import lombok.*; @Getter diff --git a/src/main/java/gwangjang/server/domain/morpheme/application/dto/res/YoutubeRes.java b/src/main/java/gwangjang/server/domain/contents/application/dto/res/YoutubeRes.java similarity index 65% rename from src/main/java/gwangjang/server/domain/morpheme/application/dto/res/YoutubeRes.java rename to src/main/java/gwangjang/server/domain/contents/application/dto/res/YoutubeRes.java index f5a726b..bc71783 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/application/dto/res/YoutubeRes.java +++ b/src/main/java/gwangjang/server/domain/contents/application/dto/res/YoutubeRes.java @@ -1,7 +1,7 @@ -package gwangjang.server.domain.morpheme.application.dto.res; +package gwangjang.server.domain.contents.application.dto.res; -import gwangjang.server.domain.morpheme.domain.entity.Contents; +import gwangjang.server.domain.contents.domain.entity.Contents; import java.util.List; diff --git a/src/main/java/gwangjang/server/domain/morpheme/application/mapper/ContentsMapper.java b/src/main/java/gwangjang/server/domain/contents/application/mapper/ContentsMapper.java similarity index 72% rename from src/main/java/gwangjang/server/domain/morpheme/application/mapper/ContentsMapper.java rename to src/main/java/gwangjang/server/domain/contents/application/mapper/ContentsMapper.java index a6c6d32..3c785ab 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/application/mapper/ContentsMapper.java +++ b/src/main/java/gwangjang/server/domain/contents/application/mapper/ContentsMapper.java @@ -1,8 +1,8 @@ -package gwangjang.server.domain.morpheme.application.mapper; +package gwangjang.server.domain.contents.application.mapper; -import gwangjang.server.domain.morpheme.application.dto.res.ContentsRes; -import gwangjang.server.domain.morpheme.domain.entity.Contents; +import gwangjang.server.domain.contents.application.dto.res.ContentsRes; +import gwangjang.server.domain.contents.domain.entity.Contents; import org.mapstruct.Mapper; import org.mapstruct.Mapping; diff --git a/src/main/java/gwangjang/server/domain/morpheme/application/service/ContentsSubscribeUseCase.java b/src/main/java/gwangjang/server/domain/contents/application/service/ContentsSubscribeUseCase.java similarity index 64% rename from src/main/java/gwangjang/server/domain/morpheme/application/service/ContentsSubscribeUseCase.java rename to src/main/java/gwangjang/server/domain/contents/application/service/ContentsSubscribeUseCase.java index 7d9f55b..fc76bae 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/application/service/ContentsSubscribeUseCase.java +++ b/src/main/java/gwangjang/server/domain/contents/application/service/ContentsSubscribeUseCase.java @@ -1,9 +1,9 @@ -package gwangjang.server.domain.morpheme.application.service; +package gwangjang.server.domain.contents.application.service; -import gwangjang.server.domain.morpheme.application.dto.res.ContentsDataRes; -import gwangjang.server.domain.morpheme.domain.service.ContentsQueryService; +import gwangjang.server.domain.contents.application.dto.res.BubbleChartRes; +import gwangjang.server.domain.contents.application.dto.res.ContentsDataRes; +import gwangjang.server.domain.contents.domain.service.ContentsQueryService; import gwangjang.server.global.feign.client.FindMemberFeignClient; -import gwangjang.server.global.feign.dto.SubscribeIssueFeignRes; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -26,4 +26,8 @@ public List getContentsByIssue(String issue) { return contentsQueryService.getContentsByIssue(issue); } + + public List getBubbleChart(String issueTitle) { + return contentsQueryService.getBubbleChart(issueTitle); + } } diff --git a/src/main/java/gwangjang/server/domain/morpheme/domain/entity/Contents.java b/src/main/java/gwangjang/server/domain/contents/domain/entity/Contents.java similarity index 89% rename from src/main/java/gwangjang/server/domain/morpheme/domain/entity/Contents.java rename to src/main/java/gwangjang/server/domain/contents/domain/entity/Contents.java index 810eea7..1ac233e 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/domain/entity/Contents.java +++ b/src/main/java/gwangjang/server/domain/contents/domain/entity/Contents.java @@ -1,9 +1,8 @@ -package gwangjang.server.domain.morpheme.domain.entity; +package gwangjang.server.domain.contents.domain.entity; import com.fasterxml.jackson.annotation.JsonIgnore; import gwangjang.server.domain.like.domain.entity.ContentLike; -import gwangjang.server.domain.morpheme.application.dto.res.ContentsRes; -import gwangjang.server.domain.morpheme.domain.entity.constant.ApiType; +import gwangjang.server.domain.contents.domain.entity.constant.ApiType; import gwangjang.server.global.entity.BaseEntity; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/gwangjang/server/domain/morpheme/domain/entity/Issue.java b/src/main/java/gwangjang/server/domain/contents/domain/entity/Issue.java similarity index 88% rename from src/main/java/gwangjang/server/domain/morpheme/domain/entity/Issue.java rename to src/main/java/gwangjang/server/domain/contents/domain/entity/Issue.java index 7dc80af..d6d30a5 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/domain/entity/Issue.java +++ b/src/main/java/gwangjang/server/domain/contents/domain/entity/Issue.java @@ -1,4 +1,4 @@ -package gwangjang.server.domain.morpheme.domain.entity; +package gwangjang.server.domain.contents.domain.entity; import jakarta.persistence.*; import lombok.AllArgsConstructor; diff --git a/src/main/java/gwangjang/server/domain/morpheme/domain/entity/Topic.java b/src/main/java/gwangjang/server/domain/contents/domain/entity/Topic.java similarity index 86% rename from src/main/java/gwangjang/server/domain/morpheme/domain/entity/Topic.java rename to src/main/java/gwangjang/server/domain/contents/domain/entity/Topic.java index 2777197..c854d55 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/domain/entity/Topic.java +++ b/src/main/java/gwangjang/server/domain/contents/domain/entity/Topic.java @@ -1,4 +1,4 @@ -package gwangjang.server.domain.morpheme.domain.entity; +package gwangjang.server.domain.contents.domain.entity; import jakarta.persistence.*; import lombok.AllArgsConstructor; diff --git a/src/main/java/gwangjang/server/domain/morpheme/domain/entity/constant/ApiType.java b/src/main/java/gwangjang/server/domain/contents/domain/entity/constant/ApiType.java similarity index 68% rename from src/main/java/gwangjang/server/domain/morpheme/domain/entity/constant/ApiType.java rename to src/main/java/gwangjang/server/domain/contents/domain/entity/constant/ApiType.java index 47d3f51..830305a 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/domain/entity/constant/ApiType.java +++ b/src/main/java/gwangjang/server/domain/contents/domain/entity/constant/ApiType.java @@ -1,4 +1,4 @@ -package gwangjang.server.domain.morpheme.domain.entity.constant; +package gwangjang.server.domain.contents.domain.entity.constant; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/gwangjang/server/domain/morpheme/domain/repository/ContentsCustomRepository.java b/src/main/java/gwangjang/server/domain/contents/domain/repository/ContentsCustomRepository.java similarity index 50% rename from src/main/java/gwangjang/server/domain/morpheme/domain/repository/ContentsCustomRepository.java rename to src/main/java/gwangjang/server/domain/contents/domain/repository/ContentsCustomRepository.java index 7a7b4be..2b76164 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/domain/repository/ContentsCustomRepository.java +++ b/src/main/java/gwangjang/server/domain/contents/domain/repository/ContentsCustomRepository.java @@ -1,7 +1,9 @@ -package gwangjang.server.domain.morpheme.domain.repository; +package gwangjang.server.domain.contents.domain.repository; -import gwangjang.server.domain.morpheme.application.dto.res.ContentsDataRes; -import gwangjang.server.domain.morpheme.domain.entity.Contents; +import gwangjang.server.domain.contents.application.dto.res.BubbleChartRes; +import gwangjang.server.domain.contents.application.dto.res.ContentsDataRes; +import gwangjang.server.domain.contents.domain.entity.Contents; +import org.springframework.data.jpa.repository.Query; import java.util.List; diff --git a/src/main/java/gwangjang/server/domain/morpheme/domain/repository/ContentsCustomRepositoryImpl.java b/src/main/java/gwangjang/server/domain/contents/domain/repository/ContentsCustomRepositoryImpl.java similarity index 78% rename from src/main/java/gwangjang/server/domain/morpheme/domain/repository/ContentsCustomRepositoryImpl.java rename to src/main/java/gwangjang/server/domain/contents/domain/repository/ContentsCustomRepositoryImpl.java index fe31984..a4f2919 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/domain/repository/ContentsCustomRepositoryImpl.java +++ b/src/main/java/gwangjang/server/domain/contents/domain/repository/ContentsCustomRepositoryImpl.java @@ -1,20 +1,26 @@ -package gwangjang.server.domain.morpheme.domain.repository; +package gwangjang.server.domain.contents.domain.repository; +import com.querydsl.core.Tuple; +import com.querydsl.core.types.EntityPath; import com.querydsl.core.types.Projections; import com.querydsl.core.types.dsl.Expressions; -import com.querydsl.core.types.dsl.NumberTemplate; +import com.querydsl.jpa.JPAExpressions; import com.querydsl.jpa.impl.JPAQueryFactory; +import gwangjang.server.domain.contents.application.dto.res.BubbleChartRes; +import gwangjang.server.domain.contents.domain.entity.constant.ApiType; import gwangjang.server.domain.like.domain.entity.QContentLike; -import gwangjang.server.domain.morpheme.application.dto.res.ContentLikeCountRes; -import gwangjang.server.domain.morpheme.application.dto.res.ContentsDataRes; -import gwangjang.server.domain.morpheme.domain.entity.Contents; -import gwangjang.server.domain.morpheme.domain.entity.QContents; +import gwangjang.server.domain.contents.application.dto.res.ContentsDataRes; +import gwangjang.server.domain.contents.domain.entity.Contents; +import gwangjang.server.domain.contents.domain.entity.QContents; import jakarta.persistence.EntityManager; - +import com.querydsl.core.types.dsl.StringTemplate; +import com.querydsl.core.types.dsl.StringExpression; import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; -import static gwangjang.server.domain.morpheme.domain.entity.QContents.contents; +import static com.querydsl.core.types.Projections.fields; +import static gwangjang.server.domain.contents.domain.entity.QContents.contents; public class ContentsCustomRepositoryImpl implements ContentsCustomRepository { @@ -86,5 +92,10 @@ public void updateContentsImageUrl(Integer contentsId, String newImageUrl) { .execute(); } + + + + + } diff --git a/src/main/java/gwangjang/server/domain/contents/domain/repository/ContentsRepository.java b/src/main/java/gwangjang/server/domain/contents/domain/repository/ContentsRepository.java new file mode 100644 index 0000000..dcfba35 --- /dev/null +++ b/src/main/java/gwangjang/server/domain/contents/domain/repository/ContentsRepository.java @@ -0,0 +1,33 @@ +package gwangjang.server.domain.contents.domain.repository; + +import gwangjang.server.domain.contents.application.dto.res.BubbleChartRes; +import gwangjang.server.domain.contents.domain.entity.Contents; +import gwangjang.server.domain.contents.domain.entity.constant.ApiType; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface ContentsRepository extends JpaRepository,ContentsCustomRepository{ + + List findByType(ApiType type); + List findByIssueTitleLike(String issue); + List findByKeywordLikeAndTypeOrderByPubDateDesc(String issueTitle, ApiType type); + + @Query( + value = "SELECT issue_title, keyword, MAX(month) AS max_occurrence_date, MAX(occurrences) AS max_occurrences\n" + + "FROM (\n" + + " SELECT issue_title, keyword, SUBSTRING(pub_date, 1, 7) AS month, COUNT(*) AS occurrences\n" + + " FROM contents\n" + + " WHERE TYPE = 'YOUTUBE'\n" + + " GROUP BY issue_title, keyword, month\n" + + ") AS subquery\n" + + "GROUP BY issue_title, keyword\n" + + "ORDER BY max_occurrences DESC", + nativeQuery = true) + List findMaxOccurrencesByIssueAndKeyword(); + + +} diff --git a/src/main/java/gwangjang/server/domain/contents/domain/service/ContentsQueryService.java b/src/main/java/gwangjang/server/domain/contents/domain/service/ContentsQueryService.java new file mode 100644 index 0000000..dcbfd91 --- /dev/null +++ b/src/main/java/gwangjang/server/domain/contents/domain/service/ContentsQueryService.java @@ -0,0 +1,56 @@ +package gwangjang.server.domain.contents.domain.service; + +import gwangjang.server.domain.contents.application.dto.req.TotalReq; +import gwangjang.server.domain.contents.application.dto.res.BubbleChartRes; +import gwangjang.server.domain.contents.application.dto.res.ContentsDataRes; +import gwangjang.server.domain.contents.domain.repository.ContentsRepository; +import gwangjang.server.global.annotation.DomainService; +import gwangjang.server.global.feign.client.FindKeywordFeignClient; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Slf4j +@DomainService +@RequiredArgsConstructor +public class ContentsQueryService { + private final ContentsRepository contentsRepository; + private final FindKeywordFeignClient findKeywordFeignClient; + + public List getContentsByIssue(String issue) { + return contentsRepository.getContentsByIssueId(issue); + } + public List getBubbleChart(String issue) { + List keywordList = findKeywordFeignClient.getAll().getBody().getData(); + Map keywordIdMap = keywordList.stream() + .collect(Collectors.toMap(keyword -> keyword.getIssueTitle() + " " + keyword.getKeyword(), TotalReq::getKeywordId)); + + return contentsRepository.findMaxOccurrencesByIssueAndKeyword().stream() + .filter(objects -> { + String issueTitle = (String) objects[0]; + return issueTitle.contains(issue); + }) + .map(objects -> { + String issueTitle = (String) objects[0]; + String keyword = (String) objects[1]; + String date = (String) objects[2]; + Long count = (Long) objects[3]; + + // Construct the key to look up keywordId in the map + String key = issueTitle + keyword; + Long keywordId = keywordIdMap.getOrDefault(key, null); + + return new BubbleChartRes(issueTitle, keyword, date, keywordId != null ? keywordId : count); + }) + .collect(Collectors.toList()); + } + + + + + +} diff --git a/src/main/java/gwangjang/server/domain/morpheme/domain/service/ContentsService.java b/src/main/java/gwangjang/server/domain/contents/domain/service/ContentsService.java similarity index 61% rename from src/main/java/gwangjang/server/domain/morpheme/domain/service/ContentsService.java rename to src/main/java/gwangjang/server/domain/contents/domain/service/ContentsService.java index e50307d..024fa35 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/domain/service/ContentsService.java +++ b/src/main/java/gwangjang/server/domain/contents/domain/service/ContentsService.java @@ -1,11 +1,7 @@ -package gwangjang.server.domain.morpheme.domain.service; -import gwangjang.server.domain.morpheme.application.dto.res.ContentsRes; -import gwangjang.server.domain.morpheme.domain.entity.Contents; -import gwangjang.server.domain.morpheme.domain.entity.constant.ApiType; +package gwangjang.server.domain.contents.domain.service; +import gwangjang.server.domain.contents.application.dto.res.ContentsRes; +import gwangjang.server.domain.contents.domain.entity.constant.ApiType; import gwangjang.server.global.annotation.DomainService; -import jakarta.transaction.Transactional; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; import reactor.core.publisher.Mono; import java.util.List; diff --git a/src/main/java/gwangjang/server/domain/morpheme/domain/service/ContentsServiceImpl.java b/src/main/java/gwangjang/server/domain/contents/domain/service/ContentsServiceImpl.java similarity index 92% rename from src/main/java/gwangjang/server/domain/morpheme/domain/service/ContentsServiceImpl.java rename to src/main/java/gwangjang/server/domain/contents/domain/service/ContentsServiceImpl.java index ac25659..ca16b21 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/domain/service/ContentsServiceImpl.java +++ b/src/main/java/gwangjang/server/domain/contents/domain/service/ContentsServiceImpl.java @@ -1,14 +1,11 @@ -package gwangjang.server.domain.morpheme.domain.service; +package gwangjang.server.domain.contents.domain.service; -import gwangjang.server.domain.like.domain.entity.ContentLike; import gwangjang.server.domain.like.domain.repository.LikeRepository; -import gwangjang.server.domain.morpheme.application.dto.res.ContentLikeCountRes; -import gwangjang.server.domain.morpheme.application.dto.res.ContentsRes; -import gwangjang.server.domain.morpheme.application.mapper.ContentsMapper; -import gwangjang.server.domain.morpheme.domain.entity.Contents; -import gwangjang.server.domain.morpheme.domain.entity.constant.ApiType; -import gwangjang.server.domain.morpheme.domain.repository.ContentsRepository; -import gwangjang.server.domain.morpheme.domain.service.ContentsService; +import gwangjang.server.domain.contents.application.dto.res.ContentsRes; +import gwangjang.server.domain.contents.application.mapper.ContentsMapper; +import gwangjang.server.domain.contents.domain.entity.Contents; +import gwangjang.server.domain.contents.domain.entity.constant.ApiType; +import gwangjang.server.domain.contents.domain.repository.ContentsRepository; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import org.json.JSONArray; diff --git a/src/main/java/gwangjang/server/domain/morpheme/domain/service/ImageUrlUpdateService.java b/src/main/java/gwangjang/server/domain/contents/domain/service/ImageUrlUpdateService.java similarity index 93% rename from src/main/java/gwangjang/server/domain/morpheme/domain/service/ImageUrlUpdateService.java rename to src/main/java/gwangjang/server/domain/contents/domain/service/ImageUrlUpdateService.java index 205497f..f12b187 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/domain/service/ImageUrlUpdateService.java +++ b/src/main/java/gwangjang/server/domain/contents/domain/service/ImageUrlUpdateService.java @@ -1,9 +1,9 @@ -package gwangjang.server.domain.morpheme.domain.service; +package gwangjang.server.domain.contents.domain.service; -import gwangjang.server.domain.morpheme.application.dto.res.ContentsRes; -import gwangjang.server.domain.morpheme.application.mapper.ContentsMapper; -import gwangjang.server.domain.morpheme.domain.entity.Contents; -import gwangjang.server.domain.morpheme.domain.repository.ContentsRepository; +import gwangjang.server.domain.contents.application.dto.res.ContentsRes; +import gwangjang.server.domain.contents.application.mapper.ContentsMapper; +import gwangjang.server.domain.contents.domain.entity.Contents; +import gwangjang.server.domain.contents.domain.repository.ContentsRepository; import jakarta.transaction.Transactional; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; diff --git a/src/main/java/gwangjang/server/domain/morpheme/domain/service/NewsAPIService.java b/src/main/java/gwangjang/server/domain/contents/domain/service/NewsAPIService.java similarity index 88% rename from src/main/java/gwangjang/server/domain/morpheme/domain/service/NewsAPIService.java rename to src/main/java/gwangjang/server/domain/contents/domain/service/NewsAPIService.java index 25443b1..88b0eb3 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/domain/service/NewsAPIService.java +++ b/src/main/java/gwangjang/server/domain/contents/domain/service/NewsAPIService.java @@ -1,11 +1,9 @@ -package gwangjang.server.domain.morpheme.domain.service; - -import com.fasterxml.jackson.core.JsonProcessingException; -import gwangjang.server.domain.morpheme.application.dto.res.ContentsRes; -import gwangjang.server.domain.morpheme.application.mapper.ContentsMapper; -import gwangjang.server.domain.morpheme.domain.entity.Contents; -import gwangjang.server.domain.morpheme.domain.entity.constant.ApiType; -import gwangjang.server.domain.morpheme.domain.repository.ContentsRepository; +package gwangjang.server.domain.contents.domain.service; + +import gwangjang.server.domain.contents.application.dto.res.ContentsRes; +import gwangjang.server.domain.contents.application.mapper.ContentsMapper; +import gwangjang.server.domain.contents.domain.entity.constant.ApiType; +import gwangjang.server.domain.contents.domain.repository.ContentsRepository; import gwangjang.server.global.annotation.DomainService; import jakarta.transaction.Transactional; import org.json.simple.JSONArray; @@ -14,7 +12,6 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.http.RequestEntity; import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; diff --git a/src/main/java/gwangjang/server/domain/morpheme/domain/service/ScheduledService.java b/src/main/java/gwangjang/server/domain/contents/domain/service/ScheduledService.java similarity index 86% rename from src/main/java/gwangjang/server/domain/morpheme/domain/service/ScheduledService.java rename to src/main/java/gwangjang/server/domain/contents/domain/service/ScheduledService.java index 91eb1fe..b38c76b 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/domain/service/ScheduledService.java +++ b/src/main/java/gwangjang/server/domain/contents/domain/service/ScheduledService.java @@ -1,13 +1,10 @@ -package gwangjang.server.domain.morpheme.domain.service; +package gwangjang.server.domain.contents.domain.service; import com.fasterxml.jackson.core.JsonProcessingException; -import gwangjang.server.domain.morpheme.application.dto.req.TotalReq; -import gwangjang.server.domain.morpheme.application.service.ContentsSubscribeUseCase; +import gwangjang.server.domain.contents.application.dto.req.TotalReq; import gwangjang.server.global.annotation.DomainService; import gwangjang.server.global.feign.client.FindKeywordFeignClient; import lombok.RequiredArgsConstructor; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Service; import reactor.core.publisher.Mono; import java.util.List; diff --git a/src/main/java/gwangjang/server/domain/morpheme/presentation/ContentsController.java b/src/main/java/gwangjang/server/domain/contents/presentation/ContentsController.java similarity index 51% rename from src/main/java/gwangjang/server/domain/morpheme/presentation/ContentsController.java rename to src/main/java/gwangjang/server/domain/contents/presentation/ContentsController.java index f482ffc..82ee7eb 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/presentation/ContentsController.java +++ b/src/main/java/gwangjang/server/domain/contents/presentation/ContentsController.java @@ -1,40 +1,28 @@ -package gwangjang.server.domain.morpheme.presentation; - -import com.fasterxml.jackson.core.JsonProcessingException; -import gwangjang.server.domain.morpheme.application.dto.req.TotalReq; -import gwangjang.server.domain.morpheme.application.dto.res.ContentsDataRes; -import gwangjang.server.domain.morpheme.application.dto.res.ContentsRes; -import gwangjang.server.domain.morpheme.application.service.ContentsSubscribeUseCase; - -import gwangjang.server.domain.morpheme.domain.entity.Contents; -import gwangjang.server.domain.morpheme.domain.entity.constant.ApiType; -import gwangjang.server.domain.morpheme.domain.service.ContentsService; -import gwangjang.server.domain.morpheme.domain.service.ImageUrlUpdateService; -import gwangjang.server.domain.morpheme.domain.service.NewsAPIService; -import gwangjang.server.domain.morpheme.presentation.constant.ContentsResponseMessage; +package gwangjang.server.domain.contents.presentation; + +import gwangjang.server.domain.contents.application.dto.res.BubbleChartRes; +import gwangjang.server.domain.contents.application.dto.res.ContentsDataRes; +import gwangjang.server.domain.contents.application.dto.res.ContentsRes; +import gwangjang.server.domain.contents.application.service.ContentsSubscribeUseCase; + +import gwangjang.server.domain.contents.domain.entity.constant.ApiType; +import gwangjang.server.domain.contents.domain.service.ContentsService; +import gwangjang.server.domain.contents.domain.service.ImageUrlUpdateService; +import gwangjang.server.domain.contents.domain.service.NewsAPIService; +import gwangjang.server.domain.contents.presentation.constant.ContentsResponseMessage; import gwangjang.server.global.feign.client.FindKeywordFeignClient; import gwangjang.server.global.response.SuccessResponse; import lombok.AllArgsConstructor; -import lombok.RequiredArgsConstructor; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; -import org.springframework.scheduling.annotation.Scheduled; import org.springframework.web.bind.annotation.*; -import reactor.core.publisher.Mono; -import java.io.IOException; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import static gwangjang.server.domain.morpheme.presentation.constant.ContentsResponse.GET_MY_CONTENTS; +import static gwangjang.server.domain.contents.presentation.constant.ContentsResponse.GET_MY_CONTENTS; +import static gwangjang.server.domain.contents.presentation.constant.ContentsResponseMessage.GET_CONTENTS_SUCCESS; @RestController @AllArgsConstructor @@ -53,39 +41,44 @@ public class ContentsController { public ResponseEntity>> getYoutubeContents(@PathVariable ApiType type) throws NoSuchAlgorithmException, KeyManagementException { List contents = this.contentsService.getContents(type); //imageUrlUpdateService.updateImageUrl(contents); - return ResponseEntity.ok(SuccessResponse.create(ContentsResponseMessage.GET_CONTENTS_SUCCESS.getMessage(),this.contentsService.getContents(type))); + return ResponseEntity.ok(SuccessResponse.create(GET_CONTENTS_SUCCESS.getMessage(),this.contentsService.getContents(type))); } @GetMapping("/issueTitle/{issue}") public ResponseEntity>> getContentsTitle(@PathVariable String issue) { - return ResponseEntity.ok(SuccessResponse.create(ContentsResponseMessage.GET_CONTENTS_SUCCESS.getMessage(),this.contentsService.getContentsTitle(issue))); + return ResponseEntity.ok(SuccessResponse.create(GET_CONTENTS_SUCCESS.getMessage(),this.contentsService.getContentsTitle(issue))); } @GetMapping("/keyword/{keyword}/{type}") public ResponseEntity>> getContentsTitle(@PathVariable String keyword, @PathVariable ApiType type) { - return ResponseEntity.ok(SuccessResponse.create(ContentsResponseMessage.GET_CONTENTS_SUCCESS.getMessage(),this.contentsService.getKeywordAndType(keyword,type))); + return ResponseEntity.ok(SuccessResponse.create(GET_CONTENTS_SUCCESS.getMessage(),this.contentsService.getKeywordAndType(keyword,type))); } @GetMapping("/{contentId}") public ResponseEntity> getContentsId(@PathVariable Integer contentId) { - return ResponseEntity.ok(SuccessResponse.create(ContentsResponseMessage.GET_CONTENTS_SUCCESS.getMessage(),this.contentsService.getContentsById(contentId))); + return ResponseEntity.ok(SuccessResponse.create(GET_CONTENTS_SUCCESS.getMessage(),this.contentsService.getContentsById(contentId))); } @GetMapping("/naver/contents") public ResponseEntity> getNaverContents() { - return ResponseEntity.ok(SuccessResponse.create(ContentsResponseMessage.GET_CONTENTS_SUCCESS.getMessage(),this.newsAPIService.naverAPI("test"))); + return ResponseEntity.ok(SuccessResponse.create(GET_CONTENTS_SUCCESS.getMessage(),this.newsAPIService.naverAPI("test"))); } @GetMapping("/contents/like") public ResponseEntity>> getContentLikeCount() { - return ResponseEntity.ok(SuccessResponse.create(ContentsResponseMessage.GET_CONTENTS_SUCCESS.getMessage(),this.contentsService.getContentLikeCount())); + return ResponseEntity.ok(SuccessResponse.create(GET_CONTENTS_SUCCESS.getMessage(),this.contentsService.getContentLikeCount())); } @PostMapping("/my-page/like") public ResponseEntity>> getContentsByLoginId(@RequestHeader(value = "user-id") String socialId) { - return ResponseEntity.ok(SuccessResponse.create(ContentsResponseMessage.GET_CONTENTS_SUCCESS.getMessage(),this.contentsService.findContentsByLoginId(socialId))); + return ResponseEntity.ok(SuccessResponse.create(GET_CONTENTS_SUCCESS.getMessage(),this.contentsService.findContentsByLoginId(socialId))); } @GetMapping("/subscribe/{issue}") public ResponseEntity>> getMySubscribe(@RequestHeader(value = "user-id") String socialId,@PathVariable("issue")String issue) { return ResponseEntity.ok(SuccessResponse.create(GET_MY_CONTENTS.getMessage(), this.contentsSubscribeUseCase.getContentsByIssue(issue))); } + @GetMapping("/bubbleChart/{issue}") + public ResponseEntity>> getBubbleChart(@PathVariable("issue")String issue) { + return ResponseEntity.ok(SuccessResponse.create(GET_CONTENTS_SUCCESS.getMessage(), this.contentsSubscribeUseCase.getBubbleChart(issue))); + } + } diff --git a/src/main/java/gwangjang/server/domain/morpheme/presentation/constant/ContentsResponse.java b/src/main/java/gwangjang/server/domain/contents/presentation/constant/ContentsResponse.java similarity index 80% rename from src/main/java/gwangjang/server/domain/morpheme/presentation/constant/ContentsResponse.java rename to src/main/java/gwangjang/server/domain/contents/presentation/constant/ContentsResponse.java index 7d6d2bb..9380b5e 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/presentation/constant/ContentsResponse.java +++ b/src/main/java/gwangjang/server/domain/contents/presentation/constant/ContentsResponse.java @@ -1,4 +1,4 @@ -package gwangjang.server.domain.morpheme.presentation.constant; +package gwangjang.server.domain.contents.presentation.constant; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/gwangjang/server/domain/morpheme/presentation/constant/ContentsResponseMessage.java b/src/main/java/gwangjang/server/domain/contents/presentation/constant/ContentsResponseMessage.java similarity index 77% rename from src/main/java/gwangjang/server/domain/morpheme/presentation/constant/ContentsResponseMessage.java rename to src/main/java/gwangjang/server/domain/contents/presentation/constant/ContentsResponseMessage.java index b0ff629..6dea7a4 100644 --- a/src/main/java/gwangjang/server/domain/morpheme/presentation/constant/ContentsResponseMessage.java +++ b/src/main/java/gwangjang/server/domain/contents/presentation/constant/ContentsResponseMessage.java @@ -1,4 +1,4 @@ -package gwangjang.server.domain.morpheme.presentation.constant; +package gwangjang.server.domain.contents.presentation.constant; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/gwangjang/server/domain/contents/util/KomoranUtils.java b/src/main/java/gwangjang/server/domain/contents/util/KomoranUtils.java new file mode 100644 index 0000000..e2a9fb9 --- /dev/null +++ b/src/main/java/gwangjang/server/domain/contents/util/KomoranUtils.java @@ -0,0 +1,4 @@ +package gwangjang.server.domain.contents.util; + +public class KomoranUtils { +} diff --git a/src/main/java/gwangjang/server/domain/like/application/dto/res/ContentLikeRes.java b/src/main/java/gwangjang/server/domain/like/application/dto/res/ContentLikeRes.java index b770fc6..441800a 100644 --- a/src/main/java/gwangjang/server/domain/like/application/dto/res/ContentLikeRes.java +++ b/src/main/java/gwangjang/server/domain/like/application/dto/res/ContentLikeRes.java @@ -1,8 +1,5 @@ package gwangjang.server.domain.like.application.dto.res; -import gwangjang.server.domain.morpheme.domain.entity.Contents; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; import lombok.*; @Getter diff --git a/src/main/java/gwangjang/server/domain/like/domain/entity/ContentLike.java b/src/main/java/gwangjang/server/domain/like/domain/entity/ContentLike.java index 72dd405..053d2cc 100644 --- a/src/main/java/gwangjang/server/domain/like/domain/entity/ContentLike.java +++ b/src/main/java/gwangjang/server/domain/like/domain/entity/ContentLike.java @@ -1,7 +1,7 @@ package gwangjang.server.domain.like.domain.entity; -import gwangjang.server.domain.morpheme.domain.entity.Contents; +import gwangjang.server.domain.contents.domain.entity.Contents; import jakarta.persistence.*; import lombok.Data; import lombok.Getter; diff --git a/src/main/java/gwangjang/server/domain/like/domain/repository/LikeRepository.java b/src/main/java/gwangjang/server/domain/like/domain/repository/LikeRepository.java index 60df294..78c1b4f 100644 --- a/src/main/java/gwangjang/server/domain/like/domain/repository/LikeRepository.java +++ b/src/main/java/gwangjang/server/domain/like/domain/repository/LikeRepository.java @@ -2,7 +2,7 @@ import gwangjang.server.domain.like.domain.entity.ContentLike; -import gwangjang.server.domain.morpheme.domain.entity.Contents; +import gwangjang.server.domain.contents.domain.entity.Contents; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/gwangjang/server/domain/like/domain/service/LikeService.java b/src/main/java/gwangjang/server/domain/like/domain/service/LikeService.java index b36fb66..2b4597a 100644 --- a/src/main/java/gwangjang/server/domain/like/domain/service/LikeService.java +++ b/src/main/java/gwangjang/server/domain/like/domain/service/LikeService.java @@ -3,8 +3,8 @@ import gwangjang.server.domain.like.application.dto.res.ContentLikeRes; import gwangjang.server.domain.like.domain.entity.ContentLike; import gwangjang.server.domain.like.domain.repository.LikeRepository; -import gwangjang.server.domain.morpheme.domain.entity.Contents; -import gwangjang.server.domain.morpheme.domain.repository.ContentsRepository; +import gwangjang.server.domain.contents.domain.entity.Contents; +import gwangjang.server.domain.contents.domain.repository.ContentsRepository; import jakarta.persistence.EntityNotFoundException; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/src/main/java/gwangjang/server/domain/morpheme/domain/repository/ContentsRepository.java b/src/main/java/gwangjang/server/domain/morpheme/domain/repository/ContentsRepository.java deleted file mode 100644 index e617f76..0000000 --- a/src/main/java/gwangjang/server/domain/morpheme/domain/repository/ContentsRepository.java +++ /dev/null @@ -1,16 +0,0 @@ -package gwangjang.server.domain.morpheme.domain.repository; - -import gwangjang.server.domain.morpheme.domain.entity.Contents; -import gwangjang.server.domain.morpheme.domain.entity.constant.ApiType; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; - -@Repository -public interface ContentsRepository extends JpaRepository,ContentsCustomRepository{ - - List findByType(ApiType type); - List findByIssueTitleLike(String issue); - List findByKeywordLikeAndTypeOrderByPubDateDesc(String issueTitle, ApiType type); -} diff --git a/src/main/java/gwangjang/server/domain/morpheme/domain/service/ContentsQueryService.java b/src/main/java/gwangjang/server/domain/morpheme/domain/service/ContentsQueryService.java deleted file mode 100644 index 1ff4ae4..0000000 --- a/src/main/java/gwangjang/server/domain/morpheme/domain/service/ContentsQueryService.java +++ /dev/null @@ -1,22 +0,0 @@ -package gwangjang.server.domain.morpheme.domain.service; - -import gwangjang.server.domain.morpheme.application.dto.res.ContentsDataRes; -import gwangjang.server.domain.morpheme.domain.repository.ContentsRepository; -import gwangjang.server.global.annotation.DomainService; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; - -import java.util.List; - -@Slf4j -@DomainService -@RequiredArgsConstructor -public class ContentsQueryService { - private final ContentsRepository contentsRepository; - - public List getContentsByIssue(String issue) { - return contentsRepository.getContentsByIssueId(issue); - } - - -} diff --git a/src/main/java/gwangjang/server/domain/morpheme/util/KomoranUtils.java b/src/main/java/gwangjang/server/domain/morpheme/util/KomoranUtils.java deleted file mode 100644 index a21499b..0000000 --- a/src/main/java/gwangjang/server/domain/morpheme/util/KomoranUtils.java +++ /dev/null @@ -1,4 +0,0 @@ -package gwangjang.server.domain.morpheme.util; - -public class KomoranUtils { -} diff --git a/src/main/java/gwangjang/server/global/config/MapperConfig.java b/src/main/java/gwangjang/server/global/config/MapperConfig.java index 02120ce..2a2644a 100644 --- a/src/main/java/gwangjang/server/global/config/MapperConfig.java +++ b/src/main/java/gwangjang/server/global/config/MapperConfig.java @@ -1,6 +1,6 @@ package gwangjang.server.global.config; -import gwangjang.server.domain.morpheme.application.mapper.ContentsMapper; +import gwangjang.server.domain.contents.application.mapper.ContentsMapper; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/src/main/java/gwangjang/server/global/feign/client/FindKeywordFeignClient.java b/src/main/java/gwangjang/server/global/feign/client/FindKeywordFeignClient.java index a9bb001..378e2e2 100644 --- a/src/main/java/gwangjang/server/global/feign/client/FindKeywordFeignClient.java +++ b/src/main/java/gwangjang/server/global/feign/client/FindKeywordFeignClient.java @@ -1,6 +1,6 @@ package gwangjang.server.global.feign.client; -import gwangjang.server.domain.morpheme.application.dto.req.TotalReq; +import gwangjang.server.domain.contents.application.dto.req.TotalReq; import gwangjang.server.global.response.SuccessResponse; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.ResponseEntity;