1515import java .util .UUID ;
1616import java .util .stream .Collectors ;
1717import lombok .RequiredArgsConstructor ;
18- import lombok .extern .slf4j .Slf4j ;
1918import org .springframework .stereotype .Service ;
2019import org .springframework .transaction .annotation .Transactional ;
2120
2221@ Service
2322@ RequiredArgsConstructor
2423@ Transactional
25- @ Slf4j
2624public class CartService {
2725
2826 private final CartRepository cartRepository ;
2927 private final ProductOptionValueRepository productOptionValueRepository ;
3028 private final MemberUtil memberUtil ;
3129
30+ @ Transactional
3231 public CartResponse createCart (CartCreateRequest request ) {
3332 Member currentMember = memberUtil .getCurrentMember ();
3433
35- // 옵션값 검증
3634 ProductOptionValue optionValue =
3735 productOptionValueRepository
3836 .findById (request .optionValueId ())
3937 .orElseThrow (
4038 () -> new CommonException (CartErrorCode .OPTION_VALUE_NOT_FOUND ));
4139
42- // 기존 동일 옵션 Cart 존재 시 수량 합산
4340 Cart existing =
4441 cartRepository .findByMemberIdAndOptionValueId (
4542 currentMember .getMemberId (), request .optionValueId ());
4643
47- Cart saved ;
44+ Cart target ;
4845 if (existing != null ) {
49- int oldQuantity = existing .getQuantity ();
50- int updatedQuantity = oldQuantity + request .quantity ();
46+ int updatedQuantity = existing .getQuantity () + request .quantity ();
5147 existing .updateQuantity (updatedQuantity );
52- saved = existing ;
53-
54- log .info (
55- "장바구니 수량 합산: memberId={}, optionValueId={}, oldQuantity={}, newQuantity={}" ,
56- currentMember .getMemberId (),
57- request .optionValueId (),
58- oldQuantity ,
59- updatedQuantity );
48+ target = existing ;
6049 } else {
61- Cart newCart = Cart .createCart (currentMember , optionValue , request .quantity ());
62- saved = cartRepository .save (newCart );
63-
64- log .info (
65- "장바구니 신규 추가: memberId={}, optionValueId={}, quantity={}" ,
66- currentMember .getMemberId (),
67- request .optionValueId (),
68- request .quantity ());
50+ target = Cart .createCart (currentMember , optionValue , request .quantity ());
51+ cartRepository .save (target );
6952 }
7053
71- return CartResponse .from (saved );
54+ return CartResponse .from (target );
7255 }
7356
74- public CartResponse updateCart (UUID cartId , CartUpdateRequest request ) {
57+ public void updateCart (UUID cartId , CartUpdateRequest request ) {
7558 Cart cart =
7659 cartRepository
7760 .findById (cartId )
7861 .orElseThrow (() -> new CommonException (CartErrorCode .CART_NOT_FOUND ));
7962
8063 memberUtil .assertMemberResourceAccess (cart .getMember ());
81-
82- if (cart .getQuantity ().equals (request .quantity ())) {
83- throw new CommonException (CartErrorCode .CART_NOT_MODIFIED );
84- }
85-
8664 cart .updateQuantity (request .quantity ());
87- log .info ("장바구니 수정 완료: cartId={}, updatedQuantity={}" , cartId , request .quantity ());
88- return CartResponse .from (cart );
8965 }
9066
9167 @ Transactional (readOnly = true )
9268 public List <CartResponse > getCartListByMember () {
9369 Member currentMember = memberUtil .getCurrentMember ();
94-
9570 List <Cart > carts = cartRepository .findAllWithProductByMemberId (currentMember .getMemberId ());
96- log .info ("장바구니 조회 완료: memberId={}, count={}" , currentMember .getMemberId (), carts .size ());
97-
9871 return carts .stream ().map (CartResponse ::from ).collect (Collectors .toList ());
9972 }
10073
@@ -103,10 +76,7 @@ public void deleteCart(UUID cartId) {
10376 cartRepository
10477 .findById (cartId )
10578 .orElseThrow (() -> new CommonException (CartErrorCode .CART_NOT_FOUND ));
106-
10779 memberUtil .assertMemberResourceAccess (cart .getMember ());
10880 cartRepository .delete (cart );
109-
110- log .info ("장바구니 삭제 완료: cartId={}" , cartId );
11181 }
11282}
0 commit comments