
public ResponseEntity<CartItemResponse> cartItemAdd(
Long menuId, int count, User user) {
// 메뉴 검증 로직
Menu menu = menuRepository.findById(menuId).orElseThrow(
NotFoundMenuException::new
);
// 동일한 메뉴와 동일한 사용자가 있는지 확인
CartItem existingCartItem = cartItemRepository.findByUserAndMenuAndOrderIdIsNull(user,
menu);
List<CartItem> cartItems = cartItemRepository.findAllByUser_idAndOrderIdIsNull(user.getId());
Long restaurantId = menu.getRestaurant().getRestaurantId();
for (CartItem cartItem : cartItems) {
if (cartItem.getMenu().getRestaurant().getRestaurantId() != restaurantId){
throw new NotMatchRestaurantException();
}
}
if (existingCartItem != null) {
existingCartItem.updateCartItemQuantityAndTotalPrice(count);
cartItemRepository.save(existingCartItem);
} else {
CartItem saveCartItem = CartItem.builder()
.totalPrice((int) (menu.getMenuPrice() * count))
.count(count)
// menuId와 userId가 추가로 들어가야 함
.user(user)
.menu(menu)
.build();
cartItemRepository.save(saveCartItem);
}
return new ResponseEntity<>(new CartItemResponse("장바구니에 해당 상품이 추가되었습니다"), HttpStatus.OK);
}
프론트엔드와 @RestController를 사용하여 통신 중일 경우에 UserRole을 통한 관리자 페이지 접근 통제
.requestMatchers("/mainpage.html").hasRole("ADMIN")
@Secured를 사용하여 권한이 ADMIN일 경우에만 허용
백엔드 반환 값을 지정하여 UserEnumRole을 반환하여 반환 결과에 따라 프론트에서 페이지 제공
기타 추천방법