Skip to content

Commit f32165f

Browse files
authored
Revert "[Test] Cart API Test (#240)"
This reverts commit c0957fc.
1 parent c0957fc commit f32165f

10 files changed

Lines changed: 56 additions & 268 deletions

File tree

src/docs/asciidoc/_cart.adoc

Lines changed: 0 additions & 46 deletions
This file was deleted.

src/docs/asciidoc/index.adoc

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,3 @@ include::_owner_order.adoc[]
2323
// include::_product.adoc[]
2424
include::_product_image.adoc[]
2525

26-
include::_cart.adoc[]
27-

src/main/java/com/irum/come2us/domain/cart/application/service/CartService.java

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,59 +15,86 @@
1515
import java.util.UUID;
1616
import java.util.stream.Collectors;
1717
import lombok.RequiredArgsConstructor;
18+
import lombok.extern.slf4j.Slf4j;
1819
import org.springframework.stereotype.Service;
1920
import org.springframework.transaction.annotation.Transactional;
2021

2122
@Service
2223
@RequiredArgsConstructor
2324
@Transactional
25+
@Slf4j
2426
public class CartService {
2527

2628
private final CartRepository cartRepository;
2729
private final ProductOptionValueRepository productOptionValueRepository;
2830
private final MemberUtil memberUtil;
2931

30-
@Transactional
3132
public CartResponse createCart(CartCreateRequest request) {
3233
Member currentMember = memberUtil.getCurrentMember();
3334

35+
// 옵션값 검증
3436
ProductOptionValue optionValue =
3537
productOptionValueRepository
3638
.findById(request.optionValueId())
3739
.orElseThrow(
3840
() -> new CommonException(CartErrorCode.OPTION_VALUE_NOT_FOUND));
3941

42+
// 기존 동일 옵션 Cart 존재 시 수량 합산
4043
Cart existing =
4144
cartRepository.findByMemberIdAndOptionValueId(
4245
currentMember.getMemberId(), request.optionValueId());
4346

44-
Cart target;
47+
Cart saved;
4548
if (existing != null) {
46-
int updatedQuantity = existing.getQuantity() + request.quantity();
49+
int oldQuantity = existing.getQuantity();
50+
int updatedQuantity = oldQuantity + request.quantity();
4751
existing.updateQuantity(updatedQuantity);
48-
target = existing;
52+
saved = existing;
53+
54+
log.info(
55+
"장바구니 수량 합산: memberId={}, optionValueId={}, oldQuantity={}, newQuantity={}",
56+
currentMember.getMemberId(),
57+
request.optionValueId(),
58+
oldQuantity,
59+
updatedQuantity);
4960
} else {
50-
target = Cart.createCart(currentMember, optionValue, request.quantity());
51-
cartRepository.save(target);
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());
5269
}
5370

54-
return CartResponse.from(target);
71+
return CartResponse.from(saved);
5572
}
5673

57-
public void updateCart(UUID cartId, CartUpdateRequest request) {
74+
public CartResponse updateCart(UUID cartId, CartUpdateRequest request) {
5875
Cart cart =
5976
cartRepository
6077
.findById(cartId)
6178
.orElseThrow(() -> new CommonException(CartErrorCode.CART_NOT_FOUND));
6279

6380
memberUtil.assertMemberResourceAccess(cart.getMember());
81+
82+
if (cart.getQuantity().equals(request.quantity())) {
83+
throw new CommonException(CartErrorCode.CART_NOT_MODIFIED);
84+
}
85+
6486
cart.updateQuantity(request.quantity());
87+
log.info("장바구니 수정 완료: cartId={}, updatedQuantity={}", cartId, request.quantity());
88+
return CartResponse.from(cart);
6589
}
6690

6791
@Transactional(readOnly = true)
6892
public List<CartResponse> getCartListByMember() {
6993
Member currentMember = memberUtil.getCurrentMember();
94+
7095
List<Cart> carts = cartRepository.findAllWithProductByMemberId(currentMember.getMemberId());
96+
log.info("장바구니 조회 완료: memberId={}, count={}", currentMember.getMemberId(), carts.size());
97+
7198
return carts.stream().map(CartResponse::from).collect(Collectors.toList());
7299
}
73100

@@ -76,7 +103,10 @@ public void deleteCart(UUID cartId) {
76103
cartRepository
77104
.findById(cartId)
78105
.orElseThrow(() -> new CommonException(CartErrorCode.CART_NOT_FOUND));
106+
79107
memberUtil.assertMemberResourceAccess(cart.getMember());
80108
cartRepository.delete(cart);
109+
110+
log.info("장바구니 삭제 완료: cartId={}", cartId);
81111
}
82112
}

src/main/java/com/irum/come2us/domain/cart/domain/repository/CartRepository.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,15 @@ public interface CartRepository extends JpaRepository<Cart, UUID> {
2323
Cart findByMemberIdAndOptionValueId(
2424
@Param("memberId") @NotNull Long memberId, @Param("optionValueId") UUID optionValueId);
2525

26-
/**
27-
* 특정 회원의 장바구니 + 상품/옵션/이미지 통합 조회 - Cart → OptionValue → OptionGroup → Product → ProductImage -
28-
* LEFT JOIN FETCH 로 대표 이미지까지 미리 로딩
29-
*/
26+
// 특정 회원의 장바구니 + 상품/옵션 통합 조회
27+
// TODO: 이미지 조인 추후 추가 예정
3028
@Query(
3129
"""
3230
SELECT DISTINCT c
3331
FROM Cart c
3432
JOIN FETCH c.optionValue ov
3533
JOIN FETCH ov.optionGroup og
3634
JOIN FETCH og.product p
37-
LEFT JOIN FETCH p.productImages pi
3835
WHERE c.member.memberId = :memberId
3936
""")
4037
List<Cart> findAllWithProductByMemberId(@Param("memberId") Long memberId);

src/main/java/com/irum/come2us/domain/cart/presentation/controller/CartController.java

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
import java.util.UUID;
1010
import lombok.RequiredArgsConstructor;
1111
import lombok.extern.slf4j.Slf4j;
12-
import org.springframework.http.HttpStatus;
13-
import org.springframework.http.ResponseEntity;
1412
import org.springframework.web.bind.annotation.*;
1513

1614
@RestController
@@ -22,35 +20,30 @@ public class CartController {
2220
private final CartService cartService;
2321

2422
@PostMapping
25-
public ResponseEntity<CartResponse> createCart(@Valid @RequestBody CartCreateRequest request) {
23+
public CartResponse createCart(@Valid @RequestBody CartCreateRequest request) {
2624
log.info(
2725
"장바구니 추가 요청: optionValueId={}, quantity={}",
2826
request.optionValueId(),
2927
request.quantity());
30-
CartResponse response = cartService.createCart(request);
31-
return ResponseEntity.status(HttpStatus.CREATED).body(response);
28+
return cartService.createCart(request);
3229
}
3330

3431
@PatchMapping("/{cartId}")
35-
public ResponseEntity<Void> updateCart(
32+
public CartResponse updateCart(
3633
@PathVariable UUID cartId, @Valid @RequestBody CartUpdateRequest request) {
3734
log.info("장바구니 수정 요청: cartId={}, quantity={}", cartId, request.quantity());
38-
cartService.updateCart(cartId, request);
39-
return ResponseEntity.noContent().build();
35+
return cartService.updateCart(cartId, request);
4036
}
4137

4238
@GetMapping
43-
public ResponseEntity<List<CartResponse>> getMyCartList() {
44-
log.info("장바구니 목록 조회 요청");
45-
List<CartResponse> responses = cartService.getCartListByMember();
46-
log.info("장바구니 조회 결과: {}개 항목", responses.size());
47-
return ResponseEntity.ok(responses);
39+
public List<CartResponse> getMyCartList() {
40+
log.info("본인 장바구니 조회 요청");
41+
return cartService.getCartListByMember();
4842
}
4943

5044
@DeleteMapping("/{cartId}")
51-
public ResponseEntity<Void> deleteCart(@PathVariable UUID cartId) {
45+
public void deleteCart(@PathVariable UUID cartId) {
5246
log.info("장바구니 삭제 요청: cartId={}", cartId);
5347
cartService.deleteCart(cartId);
54-
return ResponseEntity.noContent().build();
5548
}
5649
}

src/main/java/com/irum/come2us/domain/cart/presentation/dto/request/CartCreateRequest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@
55
import java.util.UUID;
66

77
public record CartCreateRequest(
8+
@NotNull(message = "회원 ID는 필수 입력값입니다.") Long memberId,
89
@NotNull(message = "옵션 값 ID는 필수 입력값입니다.") UUID optionValueId,
910
@Min(value = 1, message = "수량은 1개 이상이어야 합니다.") int quantity) {}

src/main/java/com/irum/come2us/domain/cart/presentation/dto/response/CartResponse.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public record CartResponse(
1010
UUID optionValueId,
1111
String productName,
1212
String optionValueName,
13-
String imageUrl,
13+
// String imageUrl, // 상품 이미지 구현 후 주석 해제
1414
int quantity,
1515
int basePrice, // 상품 기본가
1616
int extraPrice, // 옵션 추가금
@@ -26,17 +26,17 @@ public static CartResponse from(Cart cart) {
2626
int unit = base + extra;
2727
int total = unit * cart.getQuantity();
2828

29-
String imageUrl =
30-
(product.getProductImages() != null && !product.getProductImages().isEmpty())
31-
? product.getProductImages().get(0).getImageUrl()
32-
: null;
29+
// String imageUrl = (product.getProductImages() != null &&
30+
// !product.getProductImages().isEmpty())
31+
// ? product.getProductImages().get(0).getImageUrl()
32+
// : null;
3333

3434
return CartResponse.builder()
3535
.cartId(cart.getId())
3636
.optionValueId(optionValue.getId())
3737
.productName(product.getName())
3838
.optionValueName(optionValue.getName())
39-
.imageUrl(imageUrl)
39+
// .imageUrl(imageUrl)
4040
.quantity(cart.getQuantity())
4141
.basePrice(base)
4242
.extraPrice(extra)

src/main/java/com/irum/come2us/domain/product/domain/entity/Product.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,5 @@ public void updateCategory(Category category) {
132132
this.category = category;
133133
}
134134

135-
@OneToMany(mappedBy = "product", cascade = CascadeType.ALL, orphanRemoval = true)
136-
private List<ProductImage> productImages = new ArrayList<>();
137-
138-
// TODO: 리뷰 매핑
135+
// TODO: 이미지 매핑, 리뷰 매핑
139136
}

0 commit comments

Comments
 (0)