电商项目(十九)购物车服务(未登录状态下)
1.创建frontend_cart模块
添加依赖
<?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">
<parent>
<artifactId>bz_parent</artifactId>
<groupId>com.bjsxt</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>frontend_cart</artifactId>
<dependencies>
<!--pojo-->
<dependency>
<groupId>com.bjsxt</groupId>
<artifactId>common_pojo</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--utils-->
<dependency>
<groupId>com.bjsxt</groupId>
<artifactId>common_utils</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--Spring Boot Web Starter-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--Spring Cloud Eureka Client Starter-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--Spring Cloud OpenFeign Starter-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!--Spring Cloud Config Client Starter-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!--Spring Cloud AMQP: (RabbitMQ) Starter-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<!--Logback-->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
添加配置文件
创建启动类
2. 购物车设计
用户未登录状态下
保存到客户端浏览器的Cookie中
用户已登录状态下
保存到服务器的redis中
用户未登录的状态下将商品添加到购物车中
在frontend_cart模块中,新建CartController,新增方法:将商品加入购物车,方法的返回值:Result,方法的参数:Long itemId,String userId,@RequestParam(defaultValue = “1”)Integer num,HttpServletRequest req,HttpServletResponse resp。
在用户未登录的时候,通过判断userId来判断用户是否登录,若为空,
在业务层中,CookieCatServiceImpl(用户未登录状态下的购物车)。
第一,先获取临时购物车Map<String,CartItem> cart = getCart(request);(在工具类的模块创建一个类CartItem存放信息);
定义一个方法,获取购物车
临时购物车的key:cart_cookie_name:CART_COOKIE_NAME
第二,查询商品;
创建feign的接口,新增方法接口。
定义一个方法:根据商品ID查询商品
第三,向购物车中添加商品;
定义方法:向购物车添加商品
第四,将购物车通过cookie写回给客户端浏览器
定义方法:将购物车的信息通过cookie返回客户端
查看购物车(未登录状态下)
在frontend_cart模块中,在CartController中新增方法:查看购物车,返回值Result,参数:String userId,HttpServletRequest req,HttpServletResponse resp。
在用户未登录的时候,通过判断userId来判断用户是否登录,若为空,调用方法。
在业务层中实现查看购物车的方法。
用户未登录的状态下修改购物车中商品的数量
在frontend_cart模块中,在CartController中新增方法:修改购物车商品的数量,返回值:Result,参数:Long itemId,String userId,Integer num,HttpServletRequest req,HttpServletResponse resp。
在用户未登录的时候,通过判断userId来判断用户是否登录,若为空,调用方法。
在业务层中实现修改购物车商品的数量:
用户未登录的状态下删除购物车中的商品
在frontend_cart模块中,在CartController中新增方法:修改购物车商品的数量,返回值:Result,参数:Long itemId,String userId,Integer num,HttpServletRequest req,HttpServletResponse resp。
在用户未登录的时候,通过判断userId来判断用户是否登录,若为空,调用方法。
在业务层实现用户未登录时删除购物车中的商品的方法