@@ -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