Skip to content

Commit 5da4c28

Browse files
authored
Merge pull request #68 from IT-Cotato/feat/#48-home
Feat/#48 home
2 parents c630530 + 2d43cdd commit 5da4c28

File tree

4 files changed

+45
-4
lines changed

4 files changed

+45
-4
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: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public class HomeController {
3333
)
3434
@ApiResponses({
3535
@ApiResponse(responseCode = "200", description = "인기 뉴스 조회 성공"),
36-
@ApiResponse(responseCode = "403", description = "접근 권한 없음")
36+
@ApiResponse(responseCode = "401", description = "접근 권한 없음(AUTH-011)")
3737
})
3838
@GetMapping("/news/popular")
3939
public ResponseEntity<DataResponse<HomeResponseDTO.PopularNewsResponse>> getPopularNews(
@@ -71,7 +71,8 @@ public ResponseEntity<DataResponse<HomeResponseDTO.PopularNewsResponse>> getPopu
7171
)
7272
@ApiResponses({
7373
@ApiResponse(responseCode = "200", description = "맞춤 뉴스 조회 성공"),
74-
@ApiResponse(responseCode = "403", description = "접근 권한 없음")
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(
@@ -89,7 +90,7 @@ public ResponseEntity<DataResponse<HomeResponseDTO.PersonalizedNewsResponse>> ge
8990
)
9091
@ApiResponses({
9192
@ApiResponse(responseCode = "200", description = "홈 상태 메시지 조회 성공"),
92-
@ApiResponse(responseCode = "403", description = "접근 권한 없음")
93+
@ApiResponse(responseCode = "401", description = "접근 권한 없음(AUTH-011)")
9394
})
9495
@GetMapping("/status")
9596
public ResponseEntity<DataResponse<HomeResponseDTO.HomeStatusResponse>> getHomeStatus(
@@ -111,7 +112,7 @@ public ResponseEntity<DataResponse<HomeResponseDTO.HomeStatusResponse>> getHomeS
111112
)
112113
@ApiResponses({
113114
@ApiResponse(responseCode = "200", description = "체크리스트 조회 성공"),
114-
@ApiResponse(responseCode = "403", description = "접근 권한 없음")
115+
@ApiResponse(responseCode = "401", description = "접근 권한 없음(AUTH-011)")
115116
})
116117
@GetMapping("/checklist")
117118
public ResponseEntity<DataResponse<HomeResponseDTO.DailyChecklistResponse>> getDailyChecklist(

0 commit comments

Comments
 (0)