基于springboot的图书商城购物车模块
时间: 2023-11-04 22:56:55 浏览: 97
网上图书商城系统的设计与实现代码-java-springboot-基于springboot的网上图书商城系统项目-代码-源码
首先,我们需要定义购物车的数据模型,包括购物项和购物车。
购物项包括书籍信息、数量和小计金额。购物车包括购物项列表和总金额。
购物车需要实现以下功能:
1. 添加购物项
2. 删除购物项
3. 修改购物项数量
4. 清空购物车
5. 计算购物车总金额
接下来,我们可以创建一个 ShoppingCartService 类,实现以上功能。
```java
@Service
public class ShoppingCartService {
private Map<Long, ShoppingCartItem> cartItems = new HashMap<>();
// 添加购物项
public void addItem(Book book, int quantity) {
if (cartItems.containsKey(book.getId())) {
ShoppingCartItem item = cartItems.get(book.getId());
item.setQuantity(item.getQuantity() + quantity);
item.setSubtotal(item.getSubtotal() + book.getPrice() * quantity);
} else {
ShoppingCartItem item = new ShoppingCartItem();
item.setBook(book);
item.setQuantity(quantity);
item.setSubtotal(book.getPrice() * quantity);
cartItems.put(book.getId(), item);
}
}
// 删除购物项
public void removeItem(Long bookId) {
cartItems.remove(bookId);
}
// 修改购物项数量
public void updateItemQuantity(Long bookId, int quantity) {
ShoppingCartItem item = cartItems.get(bookId);
item.setQuantity(quantity);
item.setSubtotal(item.getBook().getPrice() * quantity);
}
// 清空购物车
public void clearCart() {
cartItems.clear();
}
// 计算购物车总金额
public double getTotal() {
double total = 0.0;
for (ShoppingCartItem item : cartItems.values()) {
total += item.getSubtotal();
}
return total;
}
// 获取购物项列表
public List<ShoppingCartItem> getCartItems() {
return new ArrayList<>(cartItems.values());
}
}
```
然后,我们可以在控制器中调用 ShoppingCartService 实现购物车功能。
```java
@RestController
public class ShoppingCartController {
@Autowired
private ShoppingCartService shoppingCartService;
// 添加购物项
@PostMapping("/shopping-cart")
public void addItem(@RequestParam Long bookId, @RequestParam int quantity) {
Book book = bookService.getBookById(bookId);
shoppingCartService.addItem(book, quantity);
}
// 删除购物项
@DeleteMapping("/shopping-cart/{bookId}")
public void removeItem(@PathVariable Long bookId) {
shoppingCartService.removeItem(bookId);
}
// 修改购物项数量
@PutMapping("/shopping-cart/{bookId}")
public void updateItemQuantity(@PathVariable Long bookId, @RequestParam int quantity) {
shoppingCartService.updateItemQuantity(bookId, quantity);
}
// 清空购物车
@DeleteMapping("/shopping-cart")
public void clearCart() {
shoppingCartService.clearCart();
}
// 获取购物车信息
@GetMapping("/shopping-cart")
public ShoppingCart getShoppingCart() {
ShoppingCart cart = new ShoppingCart();
cart.setCartItems(shoppingCartService.getCartItems());
cart.setTotal(shoppingCartService.getTotal());
return cart;
}
}
```
最后,我们可以在前端页面中调用以上接口实现购物车功能。例如,添加购物项可以使用以下代码:
```javascript
function addToCart(bookId, quantity) {
$.ajax({
type: "POST",
url: "/shopping-cart?bookId=" + bookId + "&quantity=" + quantity,
success: function() {
alert("添加成功!");
},
error: function() {
alert("添加失败!");
}
});
}
```
阅读全文