Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Refactor] 장바구니 상품 추가 Dto 클래스 타입 record로 변경 및 ErrorCode 추가 #32

Merged
merged 5 commits into from
Sep 8, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
package com.teamA.hicardi.domain.cart.controller;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;

import com.teamA.hicardi.common.dto.ResponseDto;
Expand All @@ -24,7 +22,6 @@ public class CartController {
private final CartService cartService;

@PostMapping("/add")
@ResponseStatus(HttpStatus.NO_CONTENT)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

좋습니다.

public ResponseEntity<Void> addCartItem(@RequestBody CartItemAddRequestDto cartItemAddRequestDto, @AuthenticationPrincipal UserDetails loginUser){
cartService.addCartItem(cartItemAddRequestDto, loginUser.getUsername());
return ResponseDto.noContent();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@
import com.teamA.hicardi.domain.member.entity.Member;

public interface CartRepository extends JpaRepository<Cart, Long> {
Boolean existsCartByMember_Id(Long memberId);
Optional<Cart> findCartByMember_Id(Long memberId);
Boolean existsCartByMemberId(Long memberId);
Optional<Cart> findByMemberId(Long memberId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
import com.teamA.hicardi.domain.item.repository.ItemRepository;
import com.teamA.hicardi.domain.member.entity.Member;
import com.teamA.hicardi.domain.member.repository.MemberRepository;
import com.teamA.hicardi.error.ErrorCode;
import com.teamA.hicardi.error.exception.custom.BusinessException;

import lombok.RequiredArgsConstructor;

Expand All @@ -37,11 +39,11 @@ public class CartService {
public void addCartItem(CartItemAddRequestDto cartItemAddRequestDto, String userId) {

Member findMember = memberRepository.findByUserId(userId)
.orElseThrow(() -> new IllegalArgumentException("존재하지 않는 회원입니다."));
.orElseThrow(() -> new BusinessException(ErrorCode.MEMBER_NOT_FOUND));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

좋아요.


Long memberId = findMember.getId();

boolean existsCart = cartRepository.existsCartByMember_Id(memberId);
boolean existsCart = cartRepository.existsCartByMemberId(memberId);

// 장바구니가 존재하지 않을때 장바구니 생성
if(!existsCart){
Expand All @@ -52,17 +54,12 @@ public void addCartItem(CartItemAddRequestDto cartItemAddRequestDto, String user
}

// 해당 회원의 장바구니를 가져와서 상품을 추가
Cart findCart = cartRepository.findCartByMember_Id(memberId)
.orElseThrow(() -> new IllegalArgumentException("존재하지 않는 장바구니입니다."));
Cart findCart = cartRepository.findByMemberId(memberId)
.orElseThrow(() -> new BusinessException(ErrorCode.CART_NOT_FOUND));
Item findItem = itemRepository.findById(cartItemAddRequestDto.itemId())
.orElseThrow(() -> new BusinessException(ErrorCode.ITEM_NOT_FOUND));

Item findItem = itemRepository.findById(cartItemAddRequestDto.getItemId())
.orElseThrow(() -> new IllegalArgumentException("존재하지 않는 상품입니다."));

CartItem cartItem = CartItem.builder()
.cart(findCart)
.item(findItem)
.count(cartItemAddRequestDto.getCount())
.build();
CartItem cartItem = cartItemAddRequestDto.toEntity(findCart, findItem);

cartItemRepository.save(cartItem);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
package com.teamA.hicardi.domain.cartItem.dto;

import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import com.teamA.hicardi.domain.cart.entity.Cart;
import com.teamA.hicardi.domain.cartItem.entity.CartItem;
import com.teamA.hicardi.domain.item.entity.Item;

@Getter
@NoArgsConstructor
public class CartItemAddRequestDto {
private Long itemId;
private int count;

@Builder
public CartItemAddRequestDto(Long itemId, int count) {
this.itemId = itemId;
this.count = count;
public record CartItemAddRequestDto (Long itemId, int count) {
public CartItem toEntity(Cart cart, Item item) {
return CartItem.builder()
.cart(cart)
.item(item)
.count(count)
.build();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

}
}
4 changes: 3 additions & 1 deletion src/main/java/com/teamA/hicardi/error/ErrorCode.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ public enum ErrorCode {
ALREADY_EXIST_EMAIL(BAD_REQUEST, "이미 존재하는 이메일입니다."),
ALREADY_EXIST_USERID(BAD_REQUEST, "이미 존재하는 아이디입니다."),
INVALID_FILE_UPLOAD(BAD_REQUEST, "파일 업로드에 실패하였습니다."),
INVALID_TOKEN(UNAUTHORIZED, "잘못된 토큰입니다.");
INVALID_TOKEN(UNAUTHORIZED, "잘못된 토큰입니다."),
CART_NOT_FOUND(NOT_FOUND, "해당 장바구니를 찾을 수 없습니다."),
ITEM_NOT_FOUND(NOT_FOUND, "해당 상품을 찾을 수 없습니다.");


private final int code;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.teamA.hicardi.domain.cart.service.CartService;
import com.teamA.hicardi.domain.cartItem.dto.CartItemAddRequestDto;
import com.teamA.hicardi.domain.utils.TestUserArgumentResolver;
import com.teamA.hicardi.domain.item.entity.Item;
import com.teamA.hicardi.domain.item.entity.SellStatus;
import com.teamA.hicardi.utils.TestUserArgumentResolver;

@ExtendWith(MockitoExtension.class)
class CartControllerTest {
Expand All @@ -45,10 +47,8 @@ void setUp() {
@Test
@DisplayName("장바구니 상품 추가 성공")
void cartItemAddSuccess() throws Exception {
CartItemAddRequestDto cartItemAddRequestDto = CartItemAddRequestDto.builder()
.itemId(1L)
.count(1)
.build();

CartItemAddRequestDto cartItemAddRequestDto = new CartItemAddRequestDto(1L, 1);

ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/api/cart/add")
.contentType(MediaType.APPLICATION_JSON)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.teamA.hicardi.domain.utils;
package com.teamA.hicardi.utils;

import static org.mockito.BDDMockito.*;

Expand Down
Loading