Skip to content

Commit 2d43cdd

Browse files
committed
#48 ✨ feat: 홈 맞춤뉴스 에러 추가
1 parent 3405f0b commit 2d43cdd

File tree

4 files changed

+42
-1
lines changed

4 files changed

+42
-1
lines changed

src/main/java/com/finsight/finsight/domain/home/domain/service/HomeNewsService.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
import org.springframework.stereotype.Service;
2020
import org.springframework.transaction.annotation.Transactional;
2121

22+
import com.finsight.finsight.domain.home.exception.HomeException;
23+
import com.finsight.finsight.domain.home.exception.code.HomeErrorCode;
24+
2225
import java.nio.charset.StandardCharsets;
2326
import java.time.LocalDate;
2427
import java.time.LocalDateTime;
@@ -147,6 +150,16 @@ public HomeResponseDTO.PersonalizedNewsResponse getPersonalizedNews(Long userId,
147150
List<NaverArticleEntity> articles;
148151

149152
if (category != null) {
153+
// 사용자 관심 카테고리에 포함되는지 검증
154+
boolean isUserCategory = userCategoryRepository.findByUserUserId(userId)
155+
.stream()
156+
.map(UserCategoryEntity::getSection)
157+
.anyMatch(section -> section == category);
158+
159+
if (!isUserCategory) {
160+
throw new HomeException(HomeErrorCode.CATEGORY_NOT_IN_USER_INTEREST);
161+
}
162+
150163
// 특정 카테고리: 최신순 8개
151164
articles = naverArticleRepository.findTopLatestBySection(category, PERSONALIZED_NEWS_SIZE);
152165
} else {
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.finsight.finsight.domain.home.exception;
2+
3+
import com.finsight.finsight.global.exception.AppException;
4+
import com.finsight.finsight.global.exception.BaseErrorCode;
5+
6+
public class HomeException extends AppException {
7+
public HomeException(BaseErrorCode code) {
8+
super(code);
9+
}
10+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.finsight.finsight.domain.home.exception.code;
2+
3+
import com.finsight.finsight.global.exception.BaseErrorCode;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Getter;
6+
import org.springframework.http.HttpStatus;
7+
8+
@Getter
9+
@AllArgsConstructor
10+
public enum HomeErrorCode implements BaseErrorCode {
11+
12+
CATEGORY_NOT_IN_USER_INTEREST(HttpStatus.BAD_REQUEST, "사용자의 관심 카테고리에 포함되지 않은 카테고리입니다.", "HOME-001");
13+
14+
private final HttpStatus httpStatus;
15+
private final String message;
16+
private final String code;
17+
}

src/main/java/com/finsight/finsight/domain/home/presentation/HomeController.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ public ResponseEntity<DataResponse<HomeResponseDTO.PopularNewsResponse>> getPopu
7171
)
7272
@ApiResponses({
7373
@ApiResponse(responseCode = "200", description = "맞춤 뉴스 조회 성공"),
74-
@ApiResponse(responseCode = "401", description = "접근 권한 없음(AUTH-011)")
74+
@ApiResponse(responseCode = "401", description = "접근 권한 없음(AUTH-011)"),
75+
@ApiResponse(responseCode = "400", description = "사용자 관심 카테고리가 아님(HOME-001)"),
7576
})
7677
@GetMapping("/news/personalized")
7778
public ResponseEntity<DataResponse<HomeResponseDTO.PersonalizedNewsResponse>> getPersonalizedNews(

0 commit comments

Comments
 (0)