当前位置: 首页 > news >正文

尚品汇-选中状态缓存变更、删除缓存购物车(三十八)

目录:

(1)选中状态的变更

(2)删除购物车

(3)流程总结

(1)选中状态的变更

 用户每次勾选购物车的多选框,都要把当前状态保存起来。由于可能会涉及更频繁的操作,所以这个勾选状态不必存储到数据库中。保留在缓存状态即可。

编写业务接口:CartService:

接口
/*** 更新选中状态** @param userId* @param isChecked* @param skuId*/
void checkCart(String userId, Integer isChecked, Long skuId);

实现类

@Override
public void checkCart(String userId, Integer isChecked, Long skuId) {String cartKey = this.getCartKey(userId);BoundHashOperations<String, String, CartInfo> boundHashOps = this.redisTemplate.boundHashOps(cartKey);CartInfo cartInfo = boundHashOps.get(skuId.toString());if(null != cartInfo) {cartInfo.setIsChecked(isChecked);boundHashOps.put(skuId.toString(), cartInfo);}
}

 

继续编写控制器CartApiController:

//  选中状态
@GetMapping("checkCart/{skuId}/{isChecked}")
public Result checkCart(@PathVariable Long skuId,@PathVariable Integer isChecked,HttpServletRequest request){String userId = AuthContextHolder.getUserId(request);//  判断if (StringUtils.isEmpty(userId)){userId = AuthContextHolder.getUserTempId(request);}//  调用服务层方法cartService.checkCart(userId,isChecked,skuId);return Result.ok();
}

刷新页面,会存到缓存,装态实现保留 

取消选中第三条: 

 

(2)删除购物车

封装业务接口CartService

接口
void deleteCart(Long skuId, String userId);

实现类

@Override
public void deleteCart(Long skuId, String userId) {BoundHashOperations<String, String, CartInfo> boundHashOps = this.redisTemplate.boundHashOps(this.getCartKey(userId));//  判断购物车中是否有该商品!if (boundHashOps.hasKey(skuId.toString())){boundHashOps.delete(skuId.toString());}
}

继续编写控制器CartApiController

/*** 删除** @param skuId* @param request* @return*/
@DeleteMapping("deleteCart/{skuId}")
public Result deleteCart(@PathVariable("skuId") Long skuId,HttpServletRequest request) {// 如何获取userIdString userId = AuthContextHolder.getUserId(request);if (StringUtils.isEmpty(userId)) {// 获取临时用户IduserId = AuthContextHolder.getUserTempId(request);}cartService.deleteCart(skuId, userId);return Result.ok();
}

 删除2个没选中的:

Redis只剩下一条选中的

 

 

 

显示跳转加入购物车的页面: 

 

(3)流程总结

成功添加跳转到:

点击去购物车结算跳转购物车页面:

 


http://www.mrgr.cn/news/9098.html

相关文章:

  • 案例分享—医疗行业国外优秀界面设计案例
  • 趣味算法------煤球数目
  • 关闭Chrome快捷键
  • 回归分析系列11—时间序列数据中的回归
  • 海思SD3403/SS928V100开发(16)Tsensor驱动开发
  • 两种Python进行cpu并行运算的方式
  • 笔试题(9)
  • C++深入剖析智能指针
  • 【PyTorch】关于Transforms的简单使用
  • 解决MySQL的PacketTooBigException异常问题
  • 服务端事件(Server-Sent Events):实现实时Web通信的利器
  • 探索Qotom Q51251OPS迷你电脑:功能与广泛应用
  • Angular中的依赖注入是如何工作的?它的优势是什么?
  • C语言:深入理解文件操作
  • Redis的持久化介绍及其Linux配置介绍
  • List<对象>转JSON字符串以及JSON字符串转List<对象>
  • 大模型重塑就医体验:医联MedGPT助力健康中国建设
  • k8s搭建
  • vagrant 创建虚拟机
  • k8s中service对象