CartItemView
@PostMapping("/addToCart")
public String addToCart(@ModelAttribute Product product,@Valid CartItem cartItem,@ModelAttribute User user){
Cart cart = cartServices.findCartByUser(user);
List<CartItem> cartItems = cartItemServices.findAllCartItems(cart);
if (cartItems.size()==0) {
cartItemServices.save(user, cartItem, product.getName());
}
for(int i=0;i<cartItems.size();i++) {
CartItem cc = cartItems.get(i);
if (product.getName().equals(cc.getProduct().getName())) {
cartItemServices.update(user, cc, product.getName());
}else {
cartItemServices.save(user, cartItem, product.getName());
}
}
return "redirect:/";
}
CartItemService
public void save(User user,CartItem cartItem,String name){ //save new
Cart cart = cartRepository.findCartByUser(user);
Product product = productRepository.findByName(name);
cartItem.setProduct(product);
cartItem.setCart(cart);
cartItem.setQuantity(1);
cartItem.setPrice(product.getPrice());
cartItemRepository.save(cartItem);
}
public CartItem update(User user,CartItem cartItem,String name){ //update
Cart cart = cartRepository.findCartByUser(user);
Product product = productRepository.findByName(name);
cartItem.setProduct(product);
cartItem.setCart(cart);
cartItem.setQuantity(cartItem.getQuantity()+1);
cartItem.setPrice(product.getPrice()*cartItem.getQuantity());
return cartItemRepository.save(cartItem);
}
Проблема в том, что если оператор с else внутри для l oop .. Оба они всегда выполняются .. Так что, если я добавлю новый элемент и другой новый элемент, затем пытается добавить первый элемент, который я добавил в корзину, он создает новый элемент внутри корзины, но также делает количество первого элемента + 1