Skip to content

Commit b30c08c

Browse files
committed
✨ feat: 장바구니 상품 추가/수정 시 새로 등록된 상품 정보만 반환하도록 수정
1 parent 2b48732 commit b30c08c

File tree

1 file changed

+14
-17
lines changed

1 file changed

+14
-17
lines changed

src/main/java/com/jajaja/domain/cart/service/CartCommandServiceImpl.java

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -46,35 +46,32 @@ public class CartCommandServiceImpl implements CartCommandService {
4646
@Override
4747
public CartResponseDto addOrUpdateCartProduct(Long memberId, List<CartProductAddRequestDto> request) {
4848
Cart cart = cartCommonService.findCart(memberId);
49-
request.forEach(req -> {
49+
List<CartProductResponseDto> items = request.stream().map(req -> {
5050
log.info("[CartCommandService] 사용자 {}의 장바구니에 아이템 {} 추가/수정", memberId, req.productId());
5151

5252
CartOpterationContext context = prepareCartOperationContext(req.productId(), req.optionId());
5353

5454
Optional<CartProduct> existingItem = req.optionId() != null ? cartProductRepository.findByCartIdAndProductIdAndProductOptionId(cart.getId(), context.product().getId(), context.productOption.getId())
5555
: cartProductRepository.findByCartIdAndProductIdAndProductOptionIsNull(cart.getId(), context.product().getId());
5656

57-
existingItem.ifPresentOrElse(
58-
item -> {
57+
CartProduct cartProduct = existingItem
58+
.map(item -> {
5959
log.info("[CartCommandService] 기존 아이템 {}의 옵션과 수량을 변경합니다.", item.getId());
6060
item.update(context.productOption(), req.quantity());
61-
},
62-
() -> {
61+
return item;
62+
})
63+
.orElseGet(() -> {
6364
log.info("[CartCommandService] 장바구니에 새로 아이템 {}를 추가합니다.", req.productId());
6465
CartProduct newCartProduct = CartProduct.create(cart, context.product(), context.productOption(), req.quantity());
6566
cart.addCartProduct(newCartProduct);
66-
cartProductRepository.save( newCartProduct);
67-
}
68-
);
69-
});
70-
71-
List<CartProductResponseDto> items = cart.getCartProducts().stream()
72-
.map(cartProduct -> {
73-
boolean isTeamAvailable = teamRepository.existsByProductIdAndStatus(cartProduct.getProduct().getId(), TeamStatus.MATCHING);
74-
return CartProductResponseDto.of(cartProduct, productCommonService.calculateDiscountedPrice(cartProduct.getUnitPrice(), cartProduct.getProduct().getDiscountRate()), isTeamAvailable);
75-
})
76-
.toList();
77-
67+
cartProductRepository.save(newCartProduct);
68+
return newCartProduct;
69+
});
70+
71+
boolean isTeamAvailable = teamRepository.existsByProductIdAndStatus(
72+
cartProduct.getProduct().getId(), TeamStatus.MATCHING);
73+
return CartProductResponseDto.of(cartProduct, productCommonService.calculateDiscountedPrice(cartProduct.getUnitPrice(), cartProduct.getProduct().getDiscountRate()), isTeamAvailable);
74+
}).toList();
7875

7976
PriceInfoDto priceInfo = cart.getCoupon() != null ?
8077
couponCommonService.calculateDiscount(cart, cart.getCoupon()) :

0 commit comments

Comments
 (0)