项目演示:
整体功能
前端部分:
gitee地址:react 完整代码
后端部分:
pom 文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>product-service</artifactId>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.9.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.4.4</version>
</dependency>
</dependencies>
</project>
控制器代码:
/**
* @author zxl
* @date 4/15/22
*/
@RestController
@RequestMapping("/")
public class ProductController {
private HashSet set = new HashSet();
//private final AtomicInteger AMOUNT = new AtomicInteger();
@GetMapping("/products")
public HashMap products(){
HashMap result = new HashMap();
ArrayList list = new ArrayList();
HashMap data = null;
for (int i = 0; i < 8; i++) {
data = new HashMap();
data.put("id",i+1);
data.put("imageUrl","https://cdn.chec.io/merchants/19661/assets/VFgCKovPcmNWYm4G|Screenshot 2020-11-25 at 11.01.24.png");
data.put("name","第"+(i+1)+"个商品");
data.put("price",45.5+i);
data.put("description","<p style='color:red;'>商品描述</p>");
list.add(data);
}
result.put("data",list);
return result;
}
@GetMapping("/cart/{productId}/{amount}")
public HashMap cart(@PathVariable String productId,@PathVariable Integer amount){
HashMap result = new HashMap();
//cartItem
HashMap data = new HashMap();
data.put("id",productId);
// data.put("imageUrl","https://cdn.chec.io/merchants/18462/images/676785cedc85f69ab27c42c307af5dec30120ab75f03a9889ab29|u9 1.png");
data.put("imageUrl","https://cdn.chec.io/merchants/19661/assets/VFgCKovPcmNWYm4G|Screenshot 2020-11-25 at 11.01.24.png");
data.put("name",productId);
data.put("price",45.5);
data.put("description","<p style='color:red;'>商品描述</p>");
data.put("totalPrice",45.5);
data.put("quantity",amount);
result.put("totalPrice",99999);
set.add(data);
//cart
result.put("items",set);
result.put("total_items",set.size());
result.put("id",1234);
return result;
}
@PutMapping("/cart/{productId}/{amount}")
public HashMap updateCart(@PathVariable String productId,@PathVariable Integer amount){
HashMap result = new HashMap();
//cartItem
HashMap data = new HashMap();
//update cartItem
for (Object o : set) {
HashMap item = (HashMap) o;
if(productId.equals(item.get("id"))){
item.put("quantity",amount);
}
}
result.put("totalPrice",99999);
//set.add(data);
//cart
result.put("items",set);
result.put("total_items",set.size());
result.put("id",1234);
return result;
}
@DeleteMapping("/cart/{productId}")
public HashMap removeFromCart(@PathVariable String productId){
HashMap result = new HashMap();
//cartItem
//remove item
Iterator iterator = set.iterator();
while(iterator.hasNext()){
HashMap item = (HashMap)iterator.next();
if(productId.equals(item.get("id"))){
iterator.remove();
}
}
result.put("totalPrice",99999);
result.put("items",set);
result.put("total_items",set.size());
result.put("id",1234);
return result;
}
@GetMapping("/carts")
public HashMap carts(){
HashMap result = new HashMap();
result.put("totalPrice",99999);
result.put("items",set);
result.put("total_items",set.size());
result.put("id",1234);
return result;
}
@GetMapping("/carts/empty")
public HashMap empty(){
set.clear();
HashMap result = new HashMap();
result.put("totalPrice",99999);
result.put("items",set);
result.put("total_items",set.size());
result.put("id",1234);
return result;
}
@PostMapping("/carts/checkout")
public HashMap checkout(@RequestBody Shipping shipping){
HashMap data = new HashMap();
data.put("customer",shipping);
set.clear();
return data;
}
}
application.yml
server:
port: 19090