-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
구매자 페이먼트 충전 #15
Merged
The head ref may contain hidden characters: "feature/3_Hyeon-Uk_\uAD6C\uB9E4\uC790_\uD398\uC774\uBA3C\uD2B8_\uCDA9\uC804"
Merged
구매자 페이먼트 충전 #15
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- 잔고는 int형 이상을 가지고 있는 사람이 있을 수 있으므로 long타입. - default값은 0 - 잔고의 값은 null이 될 수 없음.
- 출금을 진행할 때, 잔액 부족에 대한 exception 생성
- 입/출금을 진행하며 0원 이하로 들어오는 행위에 대한 exception 생성
- 기본 생성자로 생성 시 잔고는 0원으로 셋팅 - 0원 이하의 금액으로 입/출금 진행시 InvalidTransactionAmountException throw - 출금은 자신의 잔고보다 더 많은 금액을 출금시 InsufficientBalanceException throw - 아무런 문제가 없다면 입/출금 진행 뒤 잔고 업데이트
- 기본 생성자로 생성 시 잔고는 0원으로 셋팅 - 0원 이하의 금액으로 입/출금 진행시 InvalidTransactionAmountException throw - 출금은 자신의 잔고보다 더 많은 금액을 출금시 InsufficientBalanceException throw - 아무런 문제가 없다면 입/출금 진행 뒤 잔고 업데이트
- PayAccount 고유의 Id를 조회할 일이 많기 때문에 메서드 추가
- JpaRepository를 extends 하여 생성
- 계좌 잔고와 같은 민감한 데이터는 x-lock을 통해 lock을 걸고 업데이트해야하기 때문에 추가
ID로 찾지 못한 경우에 대한 예외입니다.
- 계좌에 입/출금을 진행하기 위해 공통적으로 사용되는 매개변수들입니다. - 입/출금을 진행하기 위해서 해당 payAccountId와 얼마를 입/출금할지에 대한 amount 변수가 있습니다.
- 계좌를 찾은 뒤 요청받은 액수만큼 출금을 진행한 뒤 남은 잔고를 반환합니다. - 계좌가 없으면 NotFoundAccountException을 throw 합니다.
- Account가 존재하는 경우에 대한 성공 처리 테스트코드 작성 - Account가 존재하지 않는 경우에 대한 롤백 처리 테스트코드 작성
- 동시에 여러 요청이 들어오더라도 일관적인 결과를 반환하는지에 대한 테스트코드 작성
- 계좌를 찾은 뒤 요청받은 액수만큼 입금을 진행한 뒤 남은 잔고를 반환합니다. - 계좌가 없으면 NotFoundAccountException을 throw 합니다.
- Account가 존재하는 경우에 대한 성공 처리 테스트코드 작성 - Account가 존재하지 않는 경우에 대한 롤백 처리 테스트코드 작성
- 동시에 여러 요청이 들어오더라도 일관적인 결과를 반환하는지에 대한 테스트코드 작성
- withdraw 로 표기된것을 deposit으로 수정
- DEPOSIT : 입금 - WITHDRAW : 출금
- PayAccount를 외래키로 가지고 있음 - 관계는 1:N - 생성 시간을 JPA에서 관리할 수 있도록 AuditingEntityListener 추가
- 입금과 출금은 항상 기록을 남겨야하기 때문에 필요하다고 생각
- history에 상태와 값이 잘 저장되는지 확인
- JpaRepository를 extends 하여 생성
- 입/출금 서비스는 항상 기록을 남겨야하기 때문에 추가
- API End-Point를 알맞게 조절해야할 필요가 있음
…Advice 구현 - 현재는 api format과 예외처리에 대한 논의가 진행되지 않은 상태라 논의 후 리팩토링
- 정상 충전되는 경우에 대한 테스트 - account Id가 null이 들어올 경우 400 - 존재하지 않는 Id가 들어온 경우 404 - amount가 음수 혹은 0이 들어온다면 400
Dr-KoKo
approved these changes
Aug 13, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
사소한 리뷰 남겼습니다.
src/main/java/camp/woowak/lab/payaccount/repository/PayAccountRepository.java
Show resolved
Hide resolved
src/main/java/camp/woowak/lab/payaccount/service/PayAccountWithdrawService.java
Outdated
Show resolved
Hide resolved
- withdraw와 deposit은 충전에 해당하지 않는다는 판단하에 제거
- API Response 형식을 회의 후 결정하여 포멧에 맞게 던져야함
- deposit과 withdraw가 사라지고, 충전에 대한 command라는것을 확실히 명시하기 위해 이름 변경
- 충전은 customer만 가능하기 때문에, customerId를 받도록 수정
- 충전을 위해 구매자의 계좌를 찾는 쿼리로 변경
- @param 에서 id => customerId로 수정 - Join 조건절 수정
- 테스트에서 setup시에 customer의 정보를 저장할 필요가 있어서 추가
- PayAccount에서 발생하는 예외에 대한 메세지와 상태값들로 저장
- 기존 exception에 포함된 error message는 log로 대체
- ProblemDetails를 이용해서 response해주도록 수정
kimhyun5u
reviewed
Aug 13, 2024
kimhyun5u
approved these changes
Aug 13, 2024
Closed
머지하겠습니다! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
💡 다음 이슈를 해결했어요.
Issue Link - #3
💡 이슈를 처리하면서 추가된 코드가 있어요.
PayAccount 도메인 엔티티
InsufficientBalanceException
: 잔고가 부족할 때 발생하는 exception입니다.InvalidTransactionAmountException
: 음수, 혹은 0의 amount값이 들어왔을 때 발생하는 exception입니다.PayAccountHistory 도메인 엔티티
AccountTransactionType
클래스에서 enum으로 관리합니다.입출금 서비스 (
PayAccountDepositService
,PayAccountWithdrawService
)PayAccountApiController
PayAccountApiControllerAdvice
💡 이런 고민을 했어요.
💡 다음 자료를 참고하면 좋아요.
✅ 셀프 체크리스트