1 .删除购物车
删除购物车也是比较简单,直接附上接口
讲下业务逻辑:
- 首先调用LoginInterceptor获取用户信息
- 通过用户信息中的id获取redis中的具体的项目
- 调用redisTemplate中的delete方法删除
public void deleteCartById(Long skuId) {
// 获取登录用户
UserInfo user = LoginInterceptor.getUserInfo();
String key = KEY_PREFIX + user.getId();
BoundHashOperations<String, Object, Object> hashOps = this.redisTemplate.boundHashOps(key);
hashOps.delete(skuId.toString());
}
2.*合并购物车方面
首先想到在发送一次请求,调用原来的接口
附上接口
public void addCart(Cart cart) {
// 获取用户信息
UserInfo userInfo = LoginInterceptor.getUserInfo();
// 查询购物车记录
BoundHashOperations<String, Object, Object> hashOperations = this.redisTemplate.boundHashOps(KEY_PREFIX + userInfo.getId());
String key = cart.getSkuId().toString();
Integer num = cart.getNum();
// 判断当前的商品是否在购物车中
if (hashOperations.hasKey(key)) {
// 在,更新数量
String cartJson = hashOperations.get(key).toString();
cart = JsonUtils.parse(cartJson, Cart.class);
cart.setNum(cart.getNum() + num);
} else {
// 不在,新增购物车
Sku sku = this.goodsClient.querySkuBySkuId(cart.getSkuId());
cart.setUserId(userInfo.getId());
cart.setTitle(sku.getTitle());
cart.setOwnSpec(sku.getOwnSpec());
cart.setImage(StringUtils.isBlank(sku.getImages()) ? "" : StringUtils.split(sku.getImages(), ",")[0]);
cart.setPrice(sku.getPrice());
}
hashOperations.put(key, JsonUtils.serialize(cart));
}
第一次在cart.html上写调用接口的请求,发现会出现404
const temp = ly.store.get("LY_CART");
if (temp !== null) {
temp.forEach( s => {
leyou.http.post("/cart", {skuId: s.skuId, num: s.num}).then()
});
ly.store.del("LY_CART");
然后在login.html调用接口就解决问题。
原因,判断本地localstorage应该在一登录成功就开始合并工作
本文详细介绍了如何在电商应用中实现购物车的删除和合并功能。通过调用LoginInterceptor获取用户信息,并利用Redis进行数据存储与操作。特别关注了在不同页面调用接口时可能出现的404错误及解决方案。
827

被折叠的 条评论
为什么被折叠?



