Fix : 수정
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
package com.ktds.hi.recommend.biz.domain;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 취향 태그 도메인 클래스
|
||||
* 사용자 취향 태그 정보를 나타냄
|
||||
*/
|
||||
@Getter
|
||||
@Builder
|
||||
public class PreferenceTag {
|
||||
|
||||
private Long id;
|
||||
private String tagName;
|
||||
private String category;
|
||||
private String icon;
|
||||
private String description;
|
||||
private boolean isActive;
|
||||
|
||||
/**
|
||||
* 정적 팩토리 메서드 - 기본 태그 생성
|
||||
*/
|
||||
public static PreferenceTag of(String tagName, String category, String icon, String description) {
|
||||
return PreferenceTag.builder()
|
||||
.tagName(tagName)
|
||||
.category(category)
|
||||
.icon(icon)
|
||||
.description(description)
|
||||
.isActive(true)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
+25
@@ -1,9 +1,12 @@
|
||||
package com.ktds.hi.recommend.biz.service;
|
||||
|
||||
import com.ktds.hi.recommend.biz.domain.PreferenceTag;
|
||||
import com.ktds.hi.recommend.biz.usecase.in.TasteAnalysisUseCase;
|
||||
import com.ktds.hi.recommend.biz.usecase.out.PreferenceTagRepository;
|
||||
import com.ktds.hi.recommend.biz.usecase.out.UserPreferenceRepository;
|
||||
import com.ktds.hi.recommend.biz.domain.TasteProfile;
|
||||
import com.ktds.hi.recommend.biz.domain.TasteCategory;
|
||||
import com.ktds.hi.recommend.infra.dto.response.PreferenceTagResponse;
|
||||
import com.ktds.hi.recommend.infra.dto.response.TasteAnalysisResponse;
|
||||
import com.ktds.hi.common.exception.BusinessException;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -26,6 +29,7 @@ import java.util.stream.Collectors;
|
||||
public class TasteAnalysisInteractor implements TasteAnalysisUseCase {
|
||||
|
||||
private final UserPreferenceRepository userPreferenceRepository;
|
||||
private final PreferenceTagRepository preferenceTagRepository;
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
@@ -76,4 +80,25 @@ public class TasteAnalysisInteractor implements TasteAnalysisUseCase {
|
||||
throw new BusinessException("취향 프로필 업데이트 중 오류가 발생했습니다: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PreferenceTagResponse> getAvailablePreferenceTags() {
|
||||
log.info("가용한 취향 태그 목록 조회");
|
||||
|
||||
try {
|
||||
List<PreferenceTag> tags = preferenceTagRepository.findAllActiveTags();
|
||||
|
||||
return tags.stream()
|
||||
.map(tag -> PreferenceTagResponse.builder()
|
||||
.tagName(tag.getTagName())
|
||||
.icon(tag.getIcon())
|
||||
.description(tag.getDescription())
|
||||
.build())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("취향 태그 목록 조회 중 오류 발생", e);
|
||||
throw new BusinessException("취향 태그 목록 조회에 실패했습니다");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package com.ktds.hi.recommend.biz.usecase.in;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.ktds.hi.recommend.infra.dto.response.PreferenceTagResponse;
|
||||
import com.ktds.hi.recommend.infra.dto.response.TasteAnalysisResponse;
|
||||
|
||||
/**
|
||||
@@ -17,4 +20,9 @@ public interface TasteAnalysisUseCase {
|
||||
* 취향 프로필 업데이트
|
||||
*/
|
||||
void updateTasteProfile(Long memberId);
|
||||
|
||||
/**
|
||||
* 가용한 취향 태그 목록 조회
|
||||
*/
|
||||
List<PreferenceTagResponse> getAvailablePreferenceTags();
|
||||
}
|
||||
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
package com.ktds.hi.recommend.biz.usecase.out;
|
||||
|
||||
import com.ktds.hi.recommend.biz.domain.PreferenceTag;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* 취향 태그 Repository 인터페이스
|
||||
* 취향 태그 관련 데이터 액세스 기능을 정의
|
||||
*/
|
||||
public interface PreferenceTagRepository {
|
||||
|
||||
/**
|
||||
* 활성화된 모든 취향 태그 조회
|
||||
*/
|
||||
List<PreferenceTag> findAllActiveTags();
|
||||
|
||||
/**
|
||||
* 태그 ID로 태그 조회
|
||||
*/
|
||||
Optional<PreferenceTag> findById(Long tagId);
|
||||
|
||||
/**
|
||||
* 태그명으로 태그 조회
|
||||
*/
|
||||
Optional<PreferenceTag> findByTagName(String tagName);
|
||||
|
||||
/**
|
||||
* 카테고리별 태그 조회
|
||||
*/
|
||||
List<PreferenceTag> findByCategory(String category);
|
||||
}
|
||||
Reference in New Issue
Block a user