Как реализовать добавление в корзину функций в весенней загрузке и рассчитать промежуточные итоги? - PullRequest
0 голосов
/ 28 января 2020

У меня есть страница товаров с кнопкой для добавления в корзину. Я ищу элегантный способ представить этот сценарий. В настоящее время добавление в корзину представляет собой отправку в корзину элементов сущности. Я хочу элегантное решение, которое включает в себя поиск промежуточных итогов. Вот мой код для добавления в корзину 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 
...