From 93914e13f9f57eacdaf9e86ab232cc6f667c1434 Mon Sep 17 00:00:00 2001 From: lsh9672 Date: Tue, 17 Jun 2025 16:41:31 +0900 Subject: [PATCH] =?UTF-8?q?feat=20:=20=EB=AA=A8=EB=93=A0=20=ED=83=9C?= =?UTF-8?q?=EA=B7=B8=20=EC=A1=B0=ED=9A=8C=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infra/controller/AnalyticsController.java | 3 ++ .../ktds/hi/store/biz/service/TagService.java | 19 ++++++++++++ .../hi/store/biz/usecase/in/TagUseCase.java | 8 +++++ .../store/infra/controller/TagController.java | 13 ++++++++ .../infra/dto/response/AllTagResponse.java | 31 +++++++++++++++++++ 5 files changed, 74 insertions(+) create mode 100644 store/src/main/java/com/ktds/hi/store/infra/dto/response/AllTagResponse.java diff --git a/analytics/src/main/java/com/ktds/hi/analytics/infra/controller/AnalyticsController.java b/analytics/src/main/java/com/ktds/hi/analytics/infra/controller/AnalyticsController.java index 16f89d2..119510b 100644 --- a/analytics/src/main/java/com/ktds/hi/analytics/infra/controller/AnalyticsController.java +++ b/analytics/src/main/java/com/ktds/hi/analytics/infra/controller/AnalyticsController.java @@ -13,6 +13,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.http.ResponseEntity; +import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; import jakarta.validation.constraints.*; @@ -151,8 +152,10 @@ public class AnalyticsController { @Parameter(description = "AI 피드백 ID", required = true) @PathVariable @NotNull Long feedbackId, @RequestBody ActionPlanCreateRequest request, + @AuthenticationPrincipal long id, HttpServletRequest httpRequest) { + System.out.println("test => " + id); // validation 체크 if (request.getActionPlanSelect() == null || request.getActionPlanSelect().isEmpty()) { diff --git a/store/src/main/java/com/ktds/hi/store/biz/service/TagService.java b/store/src/main/java/com/ktds/hi/store/biz/service/TagService.java index 9fcf1a9..12c681b 100644 --- a/store/src/main/java/com/ktds/hi/store/biz/service/TagService.java +++ b/store/src/main/java/com/ktds/hi/store/biz/service/TagService.java @@ -3,6 +3,7 @@ package com.ktds.hi.store.biz.service; import com.ktds.hi.store.biz.usecase.in.TagUseCase; import com.ktds.hi.store.biz.usecase.out.TagRepositoryPort; import com.ktds.hi.store.domain.Tag; +import com.ktds.hi.store.infra.dto.response.AllTagResponse; import com.ktds.hi.store.infra.dto.response.TopClickedTagResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -28,6 +29,24 @@ public class TagService implements TagUseCase { private final TagRepositoryPort tagRepositoryPort; + @Override + public List getAllTags() { + log.info("모든 활성화된 태그 목록 조회 시작"); + + List tags = tagRepositoryPort.findAllActiveTags(); + + List responses = tags.stream() + .map(tag -> AllTagResponse.builder() + .id(tag.getId()) + .tagCategory(tag.getTagCategory().name()) + .tagName(tag.getTagName()) + .build()) + .collect(Collectors.toList()); + + log.info("모든 활성화된 태그 목록 조회 완료: count={}", responses.size()); + return responses; + } + @Override public List getTopClickedTags() { log.info("가장 많이 클릭된 상위 5개 태그 조회 시작"); diff --git a/store/src/main/java/com/ktds/hi/store/biz/usecase/in/TagUseCase.java b/store/src/main/java/com/ktds/hi/store/biz/usecase/in/TagUseCase.java index ac15128..3a178aa 100644 --- a/store/src/main/java/com/ktds/hi/store/biz/usecase/in/TagUseCase.java +++ b/store/src/main/java/com/ktds/hi/store/biz/usecase/in/TagUseCase.java @@ -1,5 +1,6 @@ package com.ktds.hi.store.biz.usecase.in; +import com.ktds.hi.store.infra.dto.response.AllTagResponse; import com.ktds.hi.store.infra.dto.response.TopClickedTagResponse; import java.util.List; @@ -13,6 +14,13 @@ import java.util.List; */ public interface TagUseCase { + /** + * 모든 활성화된 태그 목록 조회 + * + * @return 모든 태그 목록 + */ + List getAllTags(); + /** * 가장 많이 클릭된 상위 5개 태그 조회 */ diff --git a/store/src/main/java/com/ktds/hi/store/infra/controller/TagController.java b/store/src/main/java/com/ktds/hi/store/infra/controller/TagController.java index ad467ba..6f83672 100644 --- a/store/src/main/java/com/ktds/hi/store/infra/controller/TagController.java +++ b/store/src/main/java/com/ktds/hi/store/infra/controller/TagController.java @@ -1,6 +1,7 @@ package com.ktds.hi.store.infra.controller; import com.ktds.hi.store.biz.usecase.in.TagUseCase; +import com.ktds.hi.store.infra.dto.response.AllTagResponse; import com.ktds.hi.store.infra.dto.response.TopClickedTagResponse; import com.ktds.hi.common.dto.ApiResponse; import io.swagger.v3.oas.annotations.Operation; @@ -26,6 +27,18 @@ public class TagController { private final TagUseCase tagUseCase; + /** + * 모든 활성화된 태그 목록 조회 API + */ + @GetMapping + @Operation(summary = "모든 태그 조회", description = "활성화된 모든 태그 목록을 조회합니다.") + public ResponseEntity>> getAllTags() { + + List tags = tagUseCase.getAllTags(); + + return ResponseEntity.ok(ApiResponse.success(tags)); + } + /** * 가장 많이 클릭된 상위 5개 태그 조회 API */ diff --git a/store/src/main/java/com/ktds/hi/store/infra/dto/response/AllTagResponse.java b/store/src/main/java/com/ktds/hi/store/infra/dto/response/AllTagResponse.java new file mode 100644 index 0000000..50fbbb4 --- /dev/null +++ b/store/src/main/java/com/ktds/hi/store/infra/dto/response/AllTagResponse.java @@ -0,0 +1,31 @@ +package com.ktds.hi.store.infra.dto.response; + +import lombok.Builder; +import lombok.Getter; + +/** + * 모든 태그 응답 DTO + * 태그 기본 정보를 담는 응답 클래스 + * + * @author 하이오더 개발팀 + * @version 1.0.0 + */ +@Getter +@Builder +public class AllTagResponse { + + /** + * 태그 ID + */ + private Long id; + + /** + * 태그 카테고리 + */ + private String tagCategory; + + /** + * 태그명 + */ + private String tagName; +}