5
5
import banking .common .exception .CustomException ;
6
6
import banking .common .exception .ErrorCode ;
7
7
import banking .payment .dto .request .PaymentRefundRequest ;
8
- import banking .payment .dto .response .PaymentResponse ;
9
8
import banking .payment .dto .response .RefundPaymentResponse ;
10
9
import banking .payment .entity .Payment ;
10
+ import banking .payment .entity .PaymentView ;
11
11
import banking .payment .enums .PaymentStatus ;
12
12
import banking .payment .repository .PaymentRepository ;
13
13
import banking .payment .dto .request .PaymentRequest ;
14
+ import banking .payment .repository .PaymentViewRepository ;
14
15
import banking .transfer .dto .response .PaymentTransferDetailResponse ;
15
- import banking .transfer .enums .TransferType ;
16
- import banking .transfer .service .TransferQueryService ;
17
16
import banking .transfer .service .TransferService ;
18
17
import banking .user .dto .response .UserPublicInfoResponse ;
19
18
import banking .user .service .UserService ;
@@ -27,26 +26,27 @@ public class PaymentService {
27
26
28
27
private final PaymentRepository paymentRepository ;
29
28
private final TransferService transferService ;
30
- private final TransferQueryService transferQueryService ;
31
29
private final AccountService accountService ;
32
30
private final UserService userService ;
31
+ private final PaymentViewRepository paymentViewRepository ;
33
32
34
33
@ Transactional
35
- public PaymentResponse processPayment (Long userId , PaymentRequest request ) {
34
+ public PaymentView processPayment (Long userId , PaymentRequest request ) {
36
35
PaymentTransferDetailResponse transferResponse = transferService .transfer (userId , request );
37
36
38
37
UserPublicInfoResponse payeeUserPublicInfo = userService .findUserPublicInfo (transferResponse .depositAccountId ());
39
38
40
39
Payment payment = Payment .builder ()
41
40
.payerId (userId )
42
- .payeeId (payeeUserPublicInfo .id ())
43
- .transferGroupId (transferResponse .transferGroupId ())
41
+ .payeeId (payeeUserPublicInfo .userId ())
42
+ .transferId (transferResponse .transferId ())
44
43
.paymentStatus (PaymentStatus .PAYMENT_PENDING )
45
44
.build ();
46
45
47
46
paymentRepository .save (payment );
48
47
49
- return createPaymentResponseDto (userId , payment .getId ());
48
+ return paymentViewRepository .findByPaymentId (payment .getId ())
49
+ .orElseThrow (() -> new CustomException (ErrorCode .NOT_FOUND_PAYMENT ));
50
50
}
51
51
52
52
@ Transactional
@@ -60,7 +60,7 @@ public RefundPaymentResponse refundPayment(Long userId, PaymentRefundRequest req
60
60
throw new CustomException (ErrorCode .PAYMENT_ALREADY_CANCELLED );
61
61
}
62
62
63
- PaymentTransferDetailResponse refundTransferResponse = transferService .transferForRefund (userId , payment .getTransferGroupId (), request .withdrawalAccountPassword ());
63
+ PaymentTransferDetailResponse refundTransferResponse = transferService .transferForRefund (userId , payment .getTransferId (), request .withdrawalAccountPassword ());
64
64
65
65
// Payment 상태 변경 (PENDING/COMPLETED -> CANCELLED)
66
66
payment .updatePaymentStatus (PaymentStatus .PAYMENT_CANCELLED );
@@ -77,25 +77,13 @@ private void verifyRequesterOwnership(Payment payment, Long userId) {
77
77
}
78
78
}
79
79
80
- public PaymentResponse findPaymentById (Long userId , Long paymentId ) {
81
- return createPaymentResponseDto (userId , paymentId );
82
- }
80
+ public PaymentView findPaymentById (Long userId , Long paymentId ) {
81
+ boolean isExist = paymentRepository .existsByIdAndPayerId (paymentId , userId );
82
+ if (!isExist ) {
83
+ throw new CustomException (ErrorCode .NOT_FOUND_PAYMENT );
84
+ }
83
85
84
- private PaymentResponse createPaymentResponseDto (Long userId , Long paymentId ) {
85
- Payment payment = paymentRepository .findById (paymentId )
86
+ return paymentViewRepository .findByPaymentId (paymentId )
86
87
.orElseThrow (() -> new CustomException (ErrorCode .NOT_FOUND_PAYMENT ));
87
-
88
- PaymentTransferDetailResponse transferResponse = transferQueryService .findTransfer (payment .getTransferGroupId (), userId );
89
-
90
- Long requesterAccountId = (transferResponse .transferType ().equals (TransferType .WITHDRAWAL )) ?
91
- transferResponse .withdrawalAccountId () : transferResponse .depositAccountId ();
92
-
93
- // 공개용 계좌 정보 GET
94
- AccountPublicInfoResponse accountPublicInfo = accountService .findAccountPublicInfo (requesterAccountId , transferResponse );
95
-
96
- // 공개용 사용자 정보 GET
97
- UserPublicInfoResponse userPublicInfo = userService .findUserPublicInfo (userId , requesterAccountId );
98
-
99
- return PaymentResponse .of (payment , transferResponse , accountPublicInfo .accountNumber (), userPublicInfo .name ());
100
88
}
101
89
}
0 commit comments