Skip to content

Commit dca927a

Browse files
author
khlee
committed
fix: 인사이트 조회 유효성 수정
1 parent 7e0232e commit dca927a

File tree

1 file changed

+21
-10
lines changed
  • insight-service/insight-domain/insight-application-service/src/main/java/com/project/imdang/insight/domain/handler/insight

1 file changed

+21
-10
lines changed

insight-service/insight-domain/insight-application-service/src/main/java/com/project/imdang/insight/domain/handler/insight/DetailInsightQueryHandler.java

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -47,29 +47,40 @@ public InsightDetailResult detailInsight(DetailInsightQuery detailInsightQuery)
4747
MemberData requestMember = memberResolver.resolve(requestedBy)
4848
.orElseThrow(() -> new MemberNotFoundException(requestedBy));
4949

50-
// 작성한 인사이트가 없거나, 최신 작성 날짜가 한달 이상인 경우
51-
if (requestMember.getLatestInsightCreateDate() == null || requestMember.getLatestInsightCreateDate().isBefore(LocalDate.now().minusDays(30))) {
52-
throw new InsightDomainException("Latest insight create Date is before one month");
53-
}
54-
5550
//인사이트 객체
5651
InsightId insightId = detailInsightQuery.getInsightId();
5752
Insight insight = insightRepository.findById(insightId)
5853
.orElseThrow(() -> new InsightNotFoundException(insightId));
54+
MemberId insightCreatedBy = insight.getMemberId();
55+
56+
//조회 유효성 검사
57+
checkValidate(requestMember, insightCreatedBy);
58+
59+
//인사이트 작성자 정보 얻기
60+
MemberData member = memberResolver.resolve(insightCreatedBy)
61+
.orElseThrow(() -> new MemberNotFoundException(insightCreatedBy));
62+
String memberNickname = member.getNickname();
63+
5964
// 이미지 가져오기
6065
List<InsightImage> images = insightImageRepository.findByInsightId(insightId);
6166
//해당 인사이트 추천 여부 검사
6267
boolean recommended = recommendRepository.findByRecommendMemberIdAndRecommendedInsightId(requestedBy, insightId).isPresent();
6368
//해당 인사이트 신고 여부 검사
6469
boolean accused = accuseRepository.findByAccuseMemberIdAndAccusedInsightId(requestedBy, insightId).isPresent();
6570

66-
//인사이트 작성자 정보 얻기
67-
MemberId insightCreatedBy = insight.getMemberId();
68-
MemberData member = memberResolver.resolve(insightCreatedBy)
69-
.orElseThrow(() -> new MemberNotFoundException(insightCreatedBy));
70-
String memberNickname = member.getNickname();
7171

7272
return insightDataMapper.insightToDetailInsightResponse(
7373
insight, memberNickname, recommended, accused, insightCreatedBy.equals(requestedBy), images);
7474
}
75+
76+
//조회 가능한지 검사
77+
private void checkValidate(MemberData requestMember, MemberId insightCreatedBy) {
78+
// 내가 작성한 게시물이 아닌 경우
79+
if (!requestMember.getMemberId().equals(insightCreatedBy.getValue())) {
80+
// 작성한 인사이트가 없거나, 최신 작성 날짜가 한달 이상인 경우
81+
if (requestMember.getLatestInsightCreateDate() == null || requestMember.getLatestInsightCreateDate().isBefore(LocalDate.now().minusDays(30))) {
82+
throw new InsightDomainException("Latest insight create Date is before one month");
83+
}
84+
}
85+
}
7586
}

0 commit comments

Comments
 (0)