У меня есть страница товаров с кнопкой для добавления в корзину. Я ищу элегантный способ представить этот сценарий. В настоящее время добавление в корзину представляет собой отправку в корзину элементов сущности. Я хочу элегантное решение, которое включает в себя поиск промежуточных итогов. Вот мой код для добавления в корзину soo far.
Модель продукта
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long carId;
private String carImage;
private String carModel;
private Long milleage;
private double price;
//getters and seters
}
CartItems Модель
public class CartItems {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
private Product product;
private double subTotal;
String username;
//setters getter
}
CartItemsService для добавления в корзину
public void addToCart(Long carId, CartItems cartItems, String username){
Product product = productRepository.findById(carId).orElse(null);
cartItems.setProduct(product);
cartItems.setSubTotal(product.getPrice());
cartItems.setUsername(username);
cartItemsRepository.save(cartItems);
}
public List<CartItems> myCart(String userName){
List<CartItems> cartItems = new ArrayList<>();
cartItemsRepository.findByUsername(userName).forEach(cartItems::add);
return cartItems;
}
Контроллер
@PostMapping("/addToCart/{carId}")
public String addToCart(@PathVariable Long carId, @ModelAttribute CartItems cartItems, Principal principal){
//to save to cartItem table.
cartService.addToCart(carId, cartItems, principal.getName());
return "products";
}
@GetMapping("/myCart")
public String myCart ( @AuthenticationPrincipal Principal principal, Model model){
List<CartItems> cartItems = cartService.myCart(principal.getName());
model.addAttribute("cartItems",cartItems);
return "myCart";
}
При таком подходе элементы корзины сохраняются в таблице. Incase пользователь не проверяет.
+----+-----------+----------------+-----------+
| id | sub_total | product_car_id | username |
+----+-----------+----------------+-----------+
| 4 | 7500000 | 2 | Developer |
| 5 | 4500000 | 4 | Developer |
+----+-----------+----------------+-----------+```
I'm terribly stuck at finding the subtotals and as well i feel this is not an elegant solution to implement add to cart functionality in spring boot and spring data jpa + thymeleaf.
Please help me with insights and code samples... thank you