@ApiOperation(value = "添加商品到购物车", notes = "添加商品到购物车", httpMethod = "POST")
@PostMapping("/add")
public JSONResult add(@RequestParam String userId,@RequestBody ShopcartBO shopcartBO,HttpServletRequest request,HttpServletResponse response
) {if (StringUtils.isBlank(userId)) {return JSONResult.errorMsg("");}System.out.println(shopcartBO);// 前端用户在登录的情况下,添加商品到购物车,会同时在后端同步购物车到redis缓存// 需要判断当前购物车中包含已经存在的商品,如果存在则累加购买数量String shopcartJson = redisOperator.get(FOODIE_SHOPCART + ":" + userId);List<ShopcartBO> shopcartList = null;if (StringUtils.isNotBlank(shopcartJson)) {// redis中已经有购物车了shopcartList = JsonUtils.jsonToList(shopcartJson, ShopcartBO.class);// 判断购物车中是否存在已有商品,如果有的话counts累加boolean isHaving = false;for (ShopcartBO sc: shopcartList) {String tmpSpecId = sc.getSpecId();if (tmpSpecId.equals(shopcartBO.getSpecId())) {sc.setBuyCounts(sc.getBuyCounts() + shopcartBO.getBuyCounts());isHaving = true;}}if (!isHaving) {shopcartList.add(shopcartBO);}} else {// redis中没有购物车shopcartList = new ArrayList<>();// 直接添加到购物车中shopcartList.add(shopcartBO);}// 覆盖现有redis中的购物车redisOperator.set(FOODIE_SHOPCART + ":" + userId, JsonUtils.objectToJson(shopcartList));return JSONResult.ok();
}
public static final String FOODIE_SHOPCART = "shopcart";
@ApiOperation(value = "获取商品子分类", notes = "获取商品子分类", httpMethod = "GET")
@GetMapping("/subCat/{rootCatId}")
public JSONResult subCat(@ApiParam(name = "rootCatId", value = "一级分类id", required = true)@PathVariable Integer rootCatId) {if (rootCatId == null) {return JSONResult.errorMsg("分类不存在");}List<CategoryVO> list = new ArrayList<>();String catsStr = redisOperator.get("subCat:" + rootCatId);if (StringUtils.isBlank(catsStr)) {list = categoryService.getSubCatList(rootCatId);/*** 查询的key在redis中不存在,* 对应的id在数据库也不存在,* 此时被非法用户进行攻击,大量的请求会直接打在db上,* 造成宕机,从而影响整个系统,* 这种现象称之为缓存穿透。* 解决方案:把空的数据也缓存起来,比如空字符串,空对象,空数组或list*/if (list != null && list.size() > 0) {redisOperator.set("subCat:" + rootCatId, JsonUtils.objectToJson(list));} else {redisOperator.set("subCat:" + rootCatId, JsonUtils.objectToJson(list), 5*60);}} else {list = JsonUtils.jsonToList(catsStr, CategoryVO.class);}//        List<CategoryVO> list = categoryService.getSubCatList(rootCatId);return JSONResult.ok(list);
}

基于Redis优化购物车 - 添加商品相关推荐

  1. Java商品规格添加购物车_关于java+jsp购物车添加商品的有关问题,来哦

    关于java+jsp购物车添加商品的有关问题,来哦 热度:9587   发布时间:2013-02-25 21:44:20 关于java+jsp购物车添加商品的问题,,高手进来哦 提示错误: An er ...

  2. 基于redis购物车java代码_基于redis实现购物车基本功能

    1.准备工作: 数据库表设计 (yj_product_specification:商品规格表,用户表,商品表等     {没有规格表,只有规格值表,}), 测试工具:POSTMAN redis客户端: ...

  3. 购物车添加商品代码 php,PHP购物车类代码

    PHP购物车类代码 在开发网络购物网站的时候,购物车类是购物网站的必备模块.总结一个php实现购物车类.实现了购物车中的商品的添加,修改,删除,列表,以及各种计算的相关功能.采用了php单一类的原理, ...

  4. Android开发之购物车添加商品实现抛物线动画

    老套路先上图:第一个是个人项目用到的效果图,第二个数抠出来的demo 说下思路很简单:第一步先拿到加号图片在屏幕的坐标(X,Y),然后拿到加号按钮图片的大小,然后将拿到的坐标和大小复制给一个新的图片按 ...

  5. 基于Redis优化首页轮播图查询

    @ApiOperation(value = "获取首页轮播图列表", notes = "获取首页轮播图列表", httpMethod = "GET&q ...

  6. 基于redis购物车

    基于redis的购物车流程(不是很详细) 请勿喷哦!! >_< 我在之前的项目中,做过购物车的功能,当时从表设计到最后用postman进行接口的测试,都是我负责做的. 考虑到用户操作购物车 ...

  7. 原生js实现购物车添加删除商品、计算价格功能

    购物车 功能需求: 根据数据创建购物车内容: 实现购物车添加商品功能: 实现购物车商品数量的增加.减少: 实现购物车商品的删除功能: 购物车的全选功能: 无货商品不可修改数量.不计入总价: 底部计算总 ...

  8. 模拟商城添加、查看商品和添加商品到购物车、查看购物车

    //欢迎来到(模拟)京东商城代码编辑 //商城接口类:定义查询和添加商品的方法(修改和删除暂不写) package shopping.dao;import shopping.entity.Produc ...

  9. Redis 购物车 - 删除商品与更新购买数量

    @ApiOperation(value = "从购物车中删除商品", notes = "从购物车中删除商品", httpMethod = "POST& ...

最新文章

  1. java inputstream类_Java高级[7]:DataInputStream相关类的使用
  2. 多对多(many-to-many)
  3. 工作流实战_23_flowable 任务监听器 事件监听器
  4. Android Animation --ScaleAnimation
  5. ubuntu 安装sql_在Ubuntu上进行SQL Server安装和故障排除
  6. [ssh] remote host key has changed
  7. 【转载】堆和栈的内存分配
  8. html从入门到精通(全)
  9. [答疑]请问商品领用审批的序列图画的对么
  10. 猿辅导 iOS 精准测试实践 - Objective-C 与 Swift 混编工程精准测试探索
  11. ipv6的127位掩码如何表示_IPv4地址、子网掩码、详细讲解
  12. 后盾网php 百度盘,后盾网PHP操作exce视频教程
  13. [一起来学mysql]-----MySQl的增删改查
  14. FPGA时序分析和时序约束
  15. windows 10 windows凭据管理器使用已记录的密码
  16. Could not connect to broker URL: tcp://localhost:61616?wireFormat.maxInactivityDuration=0wireForma
  17. 【CTDB】什么是CTDB(Cluster Trivial Database)
  18. C语言中字符数组的初始化与赋值,字符串相关函数
  19. 苹果电脑怎么查保修期?
  20. Hive经典例题解析

热门文章

  1. 读书笔记5-处理器的微架构
  2. sort and uniq
  3. vijos P1051 送给圣诞夜的极光
  4. 使用ImageMagick 在图片上绘制粗斜体的中文也许是一个错误。
  5. 基于VC的OPC客户端软件研究与实现
  6. POJ3009-Curling 2.0
  7. GDIDrawing3——GDI+绘图(三)
  8. 07LaTeX学习系列之---Latex源文件的结构
  9. Kubernetes(六) - Secret和私有仓库认证
  10. hihoCoder1678 版本号排序