setter 대신 Builder 패턴 적용quantity 누적 처리드디어 다른 팀원이 유저 도메인 구현을 완료해서
main 브랜치에 머지가 되었고,
그 덕분에 유저 관련 코드를 Builder 패턴으로 리팩토링할 수 있게 되었다.
다만 오전에 main에서 pull 받은 내용을 merge 하는 과정에서
어제 만들어둔 로컬 파일이 전부 날아가고,
커밋해둔 내용도 충돌 해결하다가 일부가 사라지는 사고가 있었다… 😭
어제 작성했던 내용을 복구하느라 생각보다 시간이 꽤 소요됐다.
그나마 다행이었던 점은
벨로그에 중간중간 기록해둔 내용 덕분에 복구 속도가 빨랐다는 것이다.
setter 대신 Builder 패턴 적용main 브랜치 merge 후 OrderService 코드 수정setter 방식 대신 Builder 패턴으로 유저 생성 처리// 유저 생성
User user = userRepository.findByEmail(email)
.orElseGet(() ->
userRepository.save(
User.builder()
.email(email)
.address(address)
.zipcode(zipcode)
.build()
)
);
quantity 누적 처리addQuantity 메서드 추가shipmentIdREADYquantity 누적OrderService.java// 같은 상품 + 같은 shipmentId + READY 주문 있는지 확인
Optional<Order> existingOrder =
orderRepository.findByUserAndProductAndShipmentIdAndStatus(
user,
product,
shipmentId,
OrderStatus.READY
);
// 있으면 quantity 누적
if (existingOrder.isPresent()) {
Order order = existingOrder.get();
order.addQuantity(quantity);
return OrderResponse.from(order);
}
// 없을 경우 주문 생성
Order order = Order.builder()
.shipmentId(shipmentId)
.user(user)
.product(product)
.quantity(quantity)
.totalPrice(product.getCost() * quantity)
.status(OrderStatus.READY)
.build();