비즈니스 로직 가독성을 위한 도메인 전용 레이어 추가-transfer#228
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces a comprehensive transfer and settlement system, including new domain entities, application services, and REST endpoints. The system is integrated into the travel itinerary lifecycle to manage financial settlements among members. Review feedback highlights a potential data inconsistency issue when updating total amounts without member breakdowns, suggests standardizing error codes for user resolution failures, and recommends maintaining database-level foreign key constraints for better data integrity.
| transfer.changeAccountNumber(accountNumber); | ||
| transfer.changeBankName(bankName); | ||
| transfer.changeAccountHolder(accountHolder); | ||
| transfer.changeTotalAmount(totalAmount); |
| private Long resolveMemberUserIdOrThrow(final String encryptedUserId) { | ||
| Long memberUserId = userIdentityResolver.resolve(encryptedUserId); | ||
| if (memberUserId == null) { | ||
| throw new BusinessException(TransferErrorCode.INVALID_TRANSFER_MEMBER); |
There was a problem hiding this comment.
UUID 해석 실패 시 TransferErrorCode.INVALID_TRANSFER_MEMBER를 던지고 있습니다. TravelUseCase 등 프로젝트 내 다른 곳에서는 동일한 상황에서 UserErrorCode.USER_NOT_FOUND를 사용하고 있으므로, 에러 응답의 일관성을 위해 에러 코드를 통일하는 것을 권장합니다.
| throw new BusinessException(TransferErrorCode.INVALID_TRANSFER_MEMBER); | |
| throw new BusinessException(org.triple.backend.user.exception.UserErrorCode.USER_NOT_FOUND); |
| private User creator; | ||
|
|
||
| @OneToOne(fetch = FetchType.LAZY) | ||
| @JoinColumn(name = "travel_itinerary_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) |
There was a problem hiding this comment.
foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)를 사용하여 외래 키 제약 조건을 비활성화하셨습니다. 특별한 기술적 제약 사항이 없다면, 데이터 무결성을 보장하기 위해 데이터베이스 수준의 제약 조건을 유지하는 것이 좋습니다.
| @JoinColumn(name = "travel_itinerary_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) | |
| @JoinColumn(name = "travel_itinerary_id") |
No description provided.