1
1
package wooteco .prolog .studylog .application ;
2
2
3
- import static java .time .temporal .TemporalAdjusters .firstDayOfMonth ;
4
- import static java .time .temporal .TemporalAdjusters .lastDayOfMonth ;
5
- import static java .util .stream .Collectors .toList ;
6
- import static java .util .stream .Collectors .toMap ;
7
- import static wooteco .prolog .common .exception .BadRequestCode .MEMBER_NOT_ALLOWED ;
8
- import static wooteco .prolog .common .exception .BadRequestCode .STUDYLOG_ARGUMENT ;
9
- import static wooteco .prolog .common .exception .BadRequestCode .STUDYLOG_DOCUMENT_NOT_FOUND ;
10
- import static wooteco .prolog .common .exception .BadRequestCode .STUDYLOG_NOT_FOUND ;
11
- import static wooteco .prolog .common .exception .BadRequestCode .STUDYLOG_SCRAP_NOT_EXIST_EXCEPTION ;
12
-
13
- import java .time .LocalDate ;
14
- import java .time .LocalDateTime ;
15
- import java .time .LocalTime ;
16
- import java .util .ArrayList ;
17
- import java .util .List ;
18
- import java .util .Map ;
19
- import java .util .Objects ;
20
3
import lombok .AllArgsConstructor ;
21
4
import org .slf4j .Logger ;
22
5
import org .slf4j .LoggerFactory ;
33
16
import wooteco .prolog .member .domain .Member ;
34
17
import wooteco .prolog .member .domain .Role ;
35
18
import wooteco .prolog .organization .application .OrganizationService ;
19
+ import wooteco .prolog .session .application .AnswerFeedbackService ;
36
20
import wooteco .prolog .session .application .AnswerService ;
37
21
import wooteco .prolog .session .application .MissionService ;
38
22
import wooteco .prolog .session .application .SessionService ;
39
23
import wooteco .prolog .session .domain .Answer ;
24
+ import wooteco .prolog .session .domain .AnswerFeedback ;
40
25
import wooteco .prolog .session .domain .AnswerTemp ;
41
26
import wooteco .prolog .session .domain .Mission ;
42
27
import wooteco .prolog .session .domain .Session ;
66
51
import wooteco .prolog .studylog .domain .repository .dto .CommentCount ;
67
52
import wooteco .prolog .studylog .event .StudylogDeleteEvent ;
68
53
54
+ import java .time .LocalDate ;
55
+ import java .time .LocalDateTime ;
56
+ import java .time .LocalTime ;
57
+ import java .util .ArrayList ;
58
+ import java .util .List ;
59
+ import java .util .Map ;
60
+ import java .util .Objects ;
61
+
62
+ import static java .time .temporal .TemporalAdjusters .firstDayOfMonth ;
63
+ import static java .time .temporal .TemporalAdjusters .lastDayOfMonth ;
64
+ import static java .util .stream .Collectors .toList ;
65
+ import static java .util .stream .Collectors .toMap ;
66
+ import static wooteco .prolog .common .exception .BadRequestCode .MEMBER_NOT_ALLOWED ;
67
+ import static wooteco .prolog .common .exception .BadRequestCode .STUDYLOG_ARGUMENT ;
68
+ import static wooteco .prolog .common .exception .BadRequestCode .STUDYLOG_DOCUMENT_NOT_FOUND ;
69
+ import static wooteco .prolog .common .exception .BadRequestCode .STUDYLOG_NOT_FOUND ;
70
+ import static wooteco .prolog .common .exception .BadRequestCode .STUDYLOG_SCRAP_NOT_EXIST_EXCEPTION ;
71
+
69
72
@ Service
70
73
@ AllArgsConstructor
71
74
@ Transactional (readOnly = true )
@@ -78,6 +81,7 @@ public class StudylogService {
78
81
private final MemberService memberService ;
79
82
private final TagService tagService ;
80
83
private final AnswerService answerService ;
84
+ private final AnswerFeedbackService answerFeedbackService ;
81
85
private final SessionService sessionService ;
82
86
private final MissionService missionService ;
83
87
private final OrganizationService organizationService ;
@@ -311,10 +315,15 @@ public StudylogResponse retrieveStudylogById(LoginMember loginMember, Long study
311
315
Studylog studylog = findStudylogById (studylogId );
312
316
313
317
List <Answer > answers = answerService .findAnswersByStudylogId (studylog .getId ());
318
+ List <Long > questionIds = answers .stream ()
319
+ .mapToLong (it -> it .getQuestion ().getId ())
320
+ .boxed ()
321
+ .toList ();
322
+ List <AnswerFeedback > answerFeedbacks = answerFeedbackService .findRecentByMemberIdAndQuestionIds (loginMember .getId (), questionIds );
314
323
315
324
onStudylogRetrieveEvent (loginMember , studylog , isViewed );
316
325
317
- return toStudylogResponse (loginMember , studylog , answers );
326
+ return toStudylogResponse (loginMember , studylog , answers , answerFeedbacks );
318
327
}
319
328
320
329
@ Transactional
@@ -362,14 +371,14 @@ private void onStudylogRetrieveEvent(LoginMember loginMember, Studylog studylog,
362
371
}
363
372
}
364
373
365
- private StudylogResponse toStudylogResponse (LoginMember loginMember , Studylog studylog , List <Answer > answers ) {
374
+ private StudylogResponse toStudylogResponse (LoginMember loginMember , Studylog studylog , List <Answer > answers , List < AnswerFeedback > answerFeedbacks ) {
366
375
boolean liked = studylog .likedByMember (loginMember .getId ());
367
376
boolean read = studylogReadRepository .findByMemberIdAndStudylogId (loginMember .getId (), studylog .getId ())
368
377
.isPresent ();
369
378
boolean scraped = studylogScrapRepository .findByMemberIdAndStudylogId (loginMember .getId (), studylog .getId ())
370
379
.isPresent ();
371
380
372
- return StudylogResponse .of (studylog , answers , scraped , read , liked );
381
+ return StudylogResponse .of (studylog , answers , answerFeedbacks , scraped , read , liked );
373
382
}
374
383
375
384
public StudylogResponse findByIdAndReturnStudylogResponse (Long id ) {
0 commit comments