查询购物车
This commit is contained in:
parent
329d74a21c
commit
90a52ac342
|
@ -4,24 +4,20 @@
|
|||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="6ee93b58-a7e0-45a0-9e98-4c363b192afb" name="Changes" comment="创建购物车">
|
||||
<change afterPath="$PROJECT_DIR$/spzx-server-gateway/src/main/java/cn/bunny/getway/config/RedisConfig.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/spzx-service/service-cart/src/main/java/cn/bunny/web/controller/CartController.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/spzx-service/service-cart/src/main/java/cn/bunny/web/service/CartService.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/spzx-service/service-cart/src/main/java/cn/bunny/web/service/impl/CartServiceImpl.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
|
||||
<list default="true" id="6ee93b58-a7e0-45a0-9e98-4c363b192afb" name="Changes" comment="添加购物车">
|
||||
<change afterPath="$PROJECT_DIR$/spzx-service-client/service-product-client/src/main/java/cn/bunny/web/ProductFeignClient.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/spzx-common/common-service/src/main/java/cn/bunny/anno/EnableUserLoginAuthInterceptor.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-common/common-service/src/main/java/cn/bunny/anno/EnableUserWebMvcConfiguration.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/spzx-common/common-service/src/main/java/cn/bunny/interceptor/UserLoginAuthInterceptor.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-common/common-service/src/main/java/cn/bunny/interceptor/UserLoginAuthInterceptor.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/spzx-server-gateway/src/main/java/cn/bunny/getway/filter/AuthGlobalFilter.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-server-gateway/src/main/java/cn/bunny/getway/filter/AuthGlobalFilter.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/spzx-server-gateway/src/main/resources/application-dev.yml" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-server-gateway/src/main/resources/application-dev.yml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/spzx-service-client/service-product-client/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-service-client/service-product-client/pom.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/spzx-service-client/service-product-client/src/main/java/cn/bunny/web/App.java" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/spzx-service/service-cart/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-service/service-cart/pom.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/spzx-service/service-cart/src/main/resources/application-dev.yml" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-service/service-cart/src/main/resources/application-dev.yml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/spzx-service/service-product/src/main/resources/application-dev.yml" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-service/service-product/src/main/resources/application-dev.yml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/spzx-service/service-user/src/main/java/cn/bunny/user/User.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-service/service-user/src/main/java/cn/bunny/user/User.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/spzx-service/service-user/src/main/java/cn/bunny/user/controller/UserinfoController.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-service/service-user/src/main/java/cn/bunny/user/controller/UserinfoController.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/spzx-service/service-user/src/main/java/cn/bunny/user/service/impl/UserinfoServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-service/service-user/src/main/java/cn/bunny/user/service/impl/UserinfoServiceImpl.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/spzx-service/service-user/src/main/resources/application-dev.yml" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-service/service-user/src/main/resources/application-dev.yml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/spzx-service/service-cart/src/main/java/cn/bunny/web/CartApplication.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-service/service-cart/src/main/java/cn/bunny/web/CartApplication.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/spzx-service/service-cart/src/main/java/cn/bunny/web/controller/CartController.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-service/service-cart/src/main/java/cn/bunny/web/controller/CartController.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/spzx-service/service-cart/src/main/java/cn/bunny/web/service/CartService.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-service/service-cart/src/main/java/cn/bunny/web/service/CartService.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/spzx-service/service-cart/src/main/java/cn/bunny/web/service/impl/CartServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-service/service-cart/src/main/java/cn/bunny/web/service/impl/CartServiceImpl.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/spzx-service/service-product/src/main/java/cn/bunny/web/product/controller/ProductController.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-service/service-product/src/main/java/cn/bunny/web/product/controller/ProductController.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/spzx-service/service-product/src/main/java/cn/bunny/web/product/service/ProductService.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-service/service-product/src/main/java/cn/bunny/web/product/service/ProductService.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/spzx-service/service-product/src/main/java/cn/bunny/web/product/service/imp/ProductServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/spzx-service/service-product/src/main/java/cn/bunny/web/product/service/imp/ProductServiceImpl.java" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
|
@ -32,8 +28,8 @@
|
|||
<option name="RECENT_TEMPLATES">
|
||||
<list>
|
||||
<option value="mybatis-mapper" />
|
||||
<option value="Interface" />
|
||||
<option value="Class" />
|
||||
<option value="Interface" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
|
@ -128,7 +124,20 @@
|
|||
</set>
|
||||
</option>
|
||||
</component>
|
||||
<component name="RunManager" selected="Spring Boot.ServerGetWayApplication">
|
||||
<component name="RunManager" selected="Spring Boot.CartApplication">
|
||||
<configuration name="CartApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true">
|
||||
<module name="service-cart" />
|
||||
<option name="SPRING_BOOT_MAIN_CLASS" value="cn.bunny.web.CartApplication" />
|
||||
<extension name="coverage">
|
||||
<pattern>
|
||||
<option name="PATTERN" value="cn.bunny.web.*" />
|
||||
<option name="ENABLED" value="true" />
|
||||
</pattern>
|
||||
</extension>
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="ProductApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true">
|
||||
<module name="service-product" />
|
||||
<option name="SPRING_BOOT_MAIN_CLASS" value="cn.bunny.web.product.ProductApplication" />
|
||||
|
@ -171,8 +180,9 @@
|
|||
<recent_temporary>
|
||||
<list>
|
||||
<item itemvalue="Spring Boot.ServerGetWayApplication" />
|
||||
<item itemvalue="Spring Boot.User" />
|
||||
<item itemvalue="Spring Boot.ProductApplication" />
|
||||
<item itemvalue="Spring Boot.CartApplication" />
|
||||
<item itemvalue="Spring Boot.User" />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
|
@ -189,7 +199,7 @@
|
|||
<workItem from="1703549556395" duration="26425000" />
|
||||
<workItem from="1703654409796" duration="10591000" />
|
||||
<workItem from="1703684112039" duration="2403000" />
|
||||
<workItem from="1703722925328" duration="9980000" />
|
||||
<workItem from="1703722925328" duration="13331000" />
|
||||
</task>
|
||||
<task id="LOCAL-00001" summary="前端接口初始化;显示商品页面">
|
||||
<option name="closed" value="true" />
|
||||
|
@ -319,7 +329,15 @@
|
|||
<option name="project" value="LOCAL" />
|
||||
<updated>1703667374773</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="17" />
|
||||
<task id="LOCAL-00017" summary="添加购物车">
|
||||
<option name="closed" value="true" />
|
||||
<created>1703738845213</created>
|
||||
<option name="number" value="00017" />
|
||||
<option name="presentableId" value="LOCAL-00017" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1703738845213</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="18" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
|
@ -350,7 +368,8 @@
|
|||
<MESSAGE value="获取用户信息-未测试" />
|
||||
<MESSAGE value="获取用户信息并跳转" />
|
||||
<MESSAGE value="创建购物车" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="创建购物车" />
|
||||
<MESSAGE value="添加购物车" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="添加购物车" />
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<pin-to-top-manager>
|
||||
|
|
|
@ -31,6 +31,10 @@ spring:
|
|||
uri: lb://service-user
|
||||
predicates:
|
||||
- Path=/*/user/**
|
||||
- id: service-cart
|
||||
uri: lb://service-cart
|
||||
predicates:
|
||||
- Path=/api/order/cart/**
|
||||
|
||||
datasource:
|
||||
type: com.zaxxer.hikari.HikariDataSource
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
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>
|
||||
<parent>
|
||||
|
@ -24,5 +24,30 @@
|
|||
<version>3.8.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.bunny</groupId>
|
||||
<artifactId>common-util</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>cn.bunny</groupId>
|
||||
<artifactId>spzx-model</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- openfeign依赖 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-openfeign</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- loadbalancer依赖 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-loadbalancer</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
package cn.bunny.web;
|
||||
|
||||
/**
|
||||
* Hello world!
|
||||
*
|
||||
*/
|
||||
public class App
|
||||
{
|
||||
public static void main( String[] args )
|
||||
{
|
||||
System.out.println( "Hello World!" );
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
package cn.bunny.web;
|
||||
|
||||
import cn.bunny.common.spzx.model.entity.product.ProductSku;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
|
||||
@FeignClient(value = "service-product")
|
||||
public interface ProductFeignClient {
|
||||
|
||||
@GetMapping("/api/product/getBySkuId/{skuId}")
|
||||
ProductSku getBySkuId(@PathVariable("skuId") Long skuId);
|
||||
}
|
|
@ -29,5 +29,12 @@
|
|||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>cn.bunny.web</groupId>
|
||||
<artifactId>service-product-client</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
package cn.bunny.web;
|
||||
|
||||
import cn.bunny.anno.EnableUserWebMvcConfiguration;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
|
||||
// com.atguigu.spzx.cart;
|
||||
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class) // 排除数据库的自动化配置,Cart微服务不需要访问数据库
|
||||
@EnableFeignClients(basePackages = {"cn.bunny"})
|
||||
@EnableUserWebMvcConfiguration
|
||||
public class CartApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(CartApplication.class, args);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package cn.bunny.web.controller;
|
||||
|
||||
import cn.bunny.common.spzx.model.entity.h5.CartInfo;
|
||||
import cn.bunny.common.spzx.model.vo.common.Result;
|
||||
import cn.bunny.common.spzx.model.vo.common.ResultCodeEnum;
|
||||
import cn.bunny.web.service.CartService;
|
||||
|
@ -10,6 +11,8 @@ import org.springframework.web.bind.annotation.PathVariable;
|
|||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("api/order/cart")
|
||||
public class CartController {
|
||||
|
@ -24,4 +27,11 @@ public class CartController {
|
|||
cartService.addToCart(skuId, skuNum);
|
||||
return Result.build(null, ResultCodeEnum.SUCCESS);
|
||||
}
|
||||
|
||||
@Operation(summary = "查询购物车")
|
||||
@GetMapping("auth/cartList")
|
||||
public Result<List<CartInfo>> cartList() {
|
||||
List<CartInfo> cartInfoList = cartService.getCartList();
|
||||
return Result.build(cartInfoList, ResultCodeEnum.SUCCESS);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,13 @@
|
|||
package cn.bunny.web.service;
|
||||
|
||||
import cn.bunny.common.spzx.model.entity.h5.CartInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface CartService {
|
||||
// 添加购物车
|
||||
void addToCart(Long skuId, Integer skuNum);
|
||||
|
||||
// 查询购物车
|
||||
List<CartInfo> getCartList();
|
||||
}
|
||||
|
|
|
@ -3,18 +3,25 @@ package cn.bunny.web.service.impl;
|
|||
import cn.bunny.common.AuthContextUtil;
|
||||
import cn.bunny.common.spzx.model.entity.h5.CartInfo;
|
||||
import cn.bunny.common.spzx.model.entity.product.ProductSku;
|
||||
import cn.bunny.web.ProductFeignClient;
|
||||
import cn.bunny.web.service.CartService;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class CartServiceImpl implements CartService {
|
||||
@Resource
|
||||
private RedisTemplate redisTemplate;
|
||||
@Resource
|
||||
private ProductFeignClient productFeignClient;
|
||||
|
||||
// 定义key user:cart:userId
|
||||
private String getCartKey(Long userId) {
|
||||
|
@ -46,7 +53,8 @@ public class CartServiceImpl implements CartService {
|
|||
// 远程调用实现:通过nacos + openFeign 实现,根据skuId获取商品sku信息
|
||||
cartInfo = new CartInfo();
|
||||
// 远程调用实现:根据skuId获取商品sku信息
|
||||
ProductSku productSku = null;
|
||||
// ProductSku productSku = productFeignClient.getBySkuId(skuId).getData();
|
||||
ProductSku productSku = productFeignClient.getBySkuId(skuId);
|
||||
cartInfo.setCartPrice(productSku.getSalePrice());
|
||||
cartInfo.setSkuNum(skuNum);
|
||||
cartInfo.setSkuId(skuId);
|
||||
|
@ -60,4 +68,20 @@ public class CartServiceImpl implements CartService {
|
|||
|
||||
redisTemplate.opsForHash().put(cartKey, String.valueOf(skuId), JSON.toJSONString(cartInfo));
|
||||
}
|
||||
|
||||
// 查询购物车
|
||||
@Override
|
||||
public List<CartInfo> getCartList() {
|
||||
// 1. 构建查询的Redis里面的key值,根据当前userId
|
||||
Long userId = AuthContextUtil.getUserInfo().getId();
|
||||
String cartKey = this.getCartKey(userId);
|
||||
// 2. 根据key从Redis里面hash类型获取所有value值 cartInfo
|
||||
List valueList = redisTemplate.opsForHash().values(cartKey);
|
||||
// List<Object> ---> List<cartInfo>
|
||||
if (CollectionUtils.isEmpty(valueList)) {
|
||||
return (List<CartInfo>) valueList.stream().map(cartInfoJSON -> JSON.parseObject(cartInfoJSON.toString(), CartInfo.class))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,4 +39,10 @@ public class ProductController {
|
|||
ProductItemVo productItemVo = productService.itemBySkuId(skuId);
|
||||
return Result.build(productItemVo, ResultCodeEnum.SUCCESS);
|
||||
}
|
||||
|
||||
@Operation(summary = "远程调用:根据skuId返回sku信息")
|
||||
@GetMapping("getBySkuId/{skuId}")
|
||||
public ProductSku getBySkuId(@PathVariable Long skuId) {
|
||||
return productService.getBySkuId(skuId);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,4 +16,7 @@ public interface ProductService {
|
|||
|
||||
// 商品详情
|
||||
ProductItemVo itemBySkuId(Long skuId);
|
||||
|
||||
// 远程调用:根据skuId返回sku信息
|
||||
ProductSku getBySkuId(Long skuId);
|
||||
}
|
||||
|
|
|
@ -89,4 +89,10 @@ public class ProductServiceImpl implements ProductService {
|
|||
|
||||
return productItemVo;
|
||||
}
|
||||
|
||||
// 远程调用:根据skuId返回sku信息
|
||||
@Override
|
||||
public ProductSku getBySkuId(Long skuId) {
|
||||
return productSkuMapper.getById(skuId);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue