WindsomeProject - 장바구니 수정 기능

박민수·2024년 1월 8일
0

WindsomeProject

목록 보기
10/32
post-thumbnail

개요

해당 포스팅에서는 장바구니 수정 기능의 흐름에 대해서 정리해 보고자 한다.

장바구니 수정 기능 절차

  1. Controller: 장바구니 수정 요청을 처리한다.
  2. CartService: 장바구니와 관련된 비즈니스 로직을 처리한다.

Controller 로직

  • @PathVariable 애노테이션을 이용하여 장바구니 상품의 id 값을 Long 타입의 cartItemId 변수에 매핑하고, 비동기 통신을 이용하여 변경하고자 하는 개수를 int형 count 변수에 매핑하여 전달받는다.
  • 유저가 해당 장바구니에 대한 수정 권한이 있는지를 검증한다. (cartService에 위임)
  • 해당 상품의 개수를 업데이트한다. (CartService에 위임)
@PatchMapping("/cartItem/{cartItemId}")
public ResponseEntity<Object> updateCartItem(@PathVariable("cartItemId") Long cartItemId, int count, @CurrentAccount Account account) {
	if (count <= 0) {
		return ResponseEntity.badRequest().body("최소 1개 이상 담아주세요.");
	} else if (!cartService.validateCartItem(cartItemId, account.getUserIdentifier())) {
		return ResponseEntity.status(HttpStatus.FORBIDDEN).body("수정 권한이 없습니다.");
	}
	cartService.updateCartItemCount(cartItemId, count);
	return ResponseEntity.ok().body(cartItemId);
}

Service 로직

  1. DB에서 CartItem Entity를 조회한다.
  2. 장바구니 상품의 개수를 업데이트한다.
public void updateCartItemCount(Long cartItemId, int count) {
	CartItem cartItem = cartItemRepository.findById(cartItemId).orElseThrow(EntityNotFoundException::new);
	cartItem.updateCount(count);
}
profile
안녕하세요 백엔드 개발자입니다.

0개의 댓글

관련 채용 정보