feat : 모든 태그 조회 기능 추가.

This commit is contained in:
lsh9672 2025-06-17 16:41:31 +09:00
parent aa0d531399
commit 93914e13f9
5 changed files with 74 additions and 0 deletions

View File

@ -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()) {

View File

@ -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<AllTagResponse> getAllTags() {
log.info("모든 활성화된 태그 목록 조회 시작");
List<Tag> tags = tagRepositoryPort.findAllActiveTags();
List<AllTagResponse> 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<TopClickedTagResponse> getTopClickedTags() {
log.info("가장 많이 클릭된 상위 5개 태그 조회 시작");

View File

@ -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<AllTagResponse> getAllTags();
/**
* 가장 많이 클릭된 상위 5개 태그 조회
*/

View File

@ -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<ApiResponse<List<AllTagResponse>>> getAllTags() {
List<AllTagResponse> tags = tagUseCase.getAllTags();
return ResponseEntity.ok(ApiResponse.success(tags));
}
/**
* 가장 많이 클릭된 상위 5개 태그 조회 API
*/

View File

@ -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;
}