99import org .springframework .data .domain .Page ;
1010import org .springframework .scheduling .annotation .Async ;
1111import org .springframework .stereotype .Service ;
12- import org .springframework .transaction .annotation .Propagation ;
1312import org .springframework .transaction .annotation .Transactional ;
1413
1514import aimo .backend .common .dto .PageResponse ;
1817import aimo .backend .common .messageQueue .MessageQueueService ;
1918import aimo .backend .common .properties .AiServerProperties ;
2019import aimo .backend .domains .member .entity .Member ;
20+ import aimo .backend .domains .member .model .DecreasePoint ;
2121import aimo .backend .domains .member .repository .MemberRepository ;
22+ import aimo .backend .domains .member .service .MemberPointService ;
2223import aimo .backend .domains .privatePost .dto .parameter .DeletePrivatePostParameter ;
2324import aimo .backend .domains .privatePost .dto .parameter .FindPrivatePostParameter ;
2425import aimo .backend .domains .privatePost .dto .parameter .FindPrivatePostPreviewParameter ;
2526import aimo .backend .domains .privatePost .dto .parameter .JudgementToAiParameter ;
27+ import aimo .backend .domains .privatePost .dto .parameter .UpdateContentToPrivatePostParameter ;
2628import aimo .backend .domains .privatePost .dto .parameter .UpdatePostContentParameter ;
2729import aimo .backend .domains .privatePost .dto .request .SummaryAndJudgementRequest ;
28- import aimo .backend .domains .privatePost .dto .request .UpdateContentToPrivatePostRequest ;
2930import aimo .backend .domains .privatePost .dto .response .PrivatePostPreviewResponse ;
3031import aimo .backend .domains .privatePost .dto .response .PrivatePostResponse ;
3132import aimo .backend .domains .privatePost .entity .PrivatePost ;
@@ -45,6 +46,7 @@ public class PrivatePostService {
4546 private final MemberRepository memberRepository ;
4647 private final MessageQueueService messageQueueService ;
4748 private final AiServerProperties aiServerProperties ;
49+ private final MemberPointService memberPointService ;
4850
4951 // mq에 판단 요청
5052 @ Async
@@ -68,36 +70,39 @@ public void uploadTextRecordAndRequestJudgement(JudgementToAiParameter parameter
6870
6971 // AI로부터 받은 콜백 응답을 기존에 저장했던 PrivatePost에 업데이트
7072 @ Transactional
71- public void updateContentToPrivatePost (UpdateContentToPrivatePostRequest request ) {
73+ public void updateContentToPrivatePost (UpdateContentToPrivatePostParameter parameter ) {
7274 // 키 확인
73- validateKey (request .accessKey ());
75+ validateKey (parameter .accessKey ());
7476
75- Long privatePostId = request .id ();
77+ Long privatePostId = parameter .id ();
7678 PrivatePost privatePost = privatePostRepository .findById (privatePostId )
7779 .orElseThrow (() -> ApiException .from (ErrorCode .PRIVATE_POST_NOT_FOUND ));
7880
7981 // 실패시
80- if (!request .status ()) {
82+ if (!parameter .status ()) {
8183 privatePost .updateStatus (PrivatePostStatus .FAIL );
8284 return ;
8385 }
8486
8587 // 성공시
86- Integer faultRatePlaintiff = request .faultRate ().intValue ();
87- Integer faultRateDefendant = calculateFaultRateDefendant (request .faultRate ());
88-
89- UpdatePostContentParameter parameter = new UpdatePostContentParameter (
90- request .stancePlaintiff (),
91- request .stanceDefendant (),
92- request .title (),
93- request .summaryAi (),
94- request .judgement (),
88+ Integer faultRatePlaintiff = parameter .faultRate ().intValue ();
89+ Integer faultRateDefendant = calculateFaultRateDefendant (parameter .faultRate ());
90+
91+ UpdatePostContentParameter updatePostContentParameter = new UpdatePostContentParameter (
92+ parameter .stancePlaintiff (),
93+ parameter .stanceDefendant (),
94+ parameter .title (),
95+ parameter .summaryAi (),
96+ parameter .judgement (),
9597 faultRatePlaintiff ,
9698 faultRateDefendant
9799 );
98100
99- privatePost .updateContent (parameter );
101+ privatePost .updateContent (updatePostContentParameter );
100102 privatePost .updateStatus (PrivatePostStatus .SUCCESS );
103+
104+ // 포인트 감소
105+ memberPointService .decreaseMemberPoint (privatePost .getMember ().getId (), DecreasePoint .AI_REQUEST );
101106 }
102107
103108 // 키 확인
@@ -152,7 +157,7 @@ public void validatePrivatePostStatus(PrivatePost privatePost) {
152157 LocalDateTime createdAt = privatePost .getCreatedAt ();
153158 LocalDateTime now = LocalDateTime .now ();
154159 Duration duration = Duration .between (createdAt , now );
155- if (duration .toMinutes () > 10 && privatePost .getPrivatePostStatus () == PrivatePostStatus .PROGRESS ) {
160+ if (duration .toMinutes () > 10 && privatePost .getPrivatePostStatus () == PrivatePostStatus .PROGRESS ) {
156161 privatePostRepository .delete (privatePost );
157162 throw ApiException .from (PRIVATE_POST_FAIL );
158163 }
@@ -207,4 +212,5 @@ private boolean validationPrivatePost(Long memberId, PrivatePost privatePost) {
207212 return privatePost .getMember ().getId ().equals (memberId );
208213 }
209214
215+
210216}
0 commit comments