@Servicepublic class CartServiceImpl implementsCartService {private static final String CART="Cart_";

@AutowiredprivateRedisTemplate redisTemplate;

@AutowiredprivateSkuFeign skuFeign;

@AutowiredprivateSpuFeign spuFeign;/*** 添加购物车

*@paramskuId

*@paramnum*/@Overridepublic voidadd(String skuId, Integer num,String username) {/*** 1)查询redis中的数据

* 2)如果redis中已经有了,则追加数量,重新计算金额

* 3)如果没有,将商品添加到缓存*/OrderItem orderItem= (OrderItem)redisTemplate.boundHashOps(CART+username).get(skuId);//从redis中取值if (orderItem != null){//存在,刷新购物车

orderItem.setNum(orderItem.getNum()+num);

orderItem.setMoney(orderItem.getNum()*orderItem.getPrice());

orderItem.setPayMoney(orderItem.getNum()*orderItem.getPrice());

}else{//不存在,新增购物车

Result skuResult =skuFeign.findById(skuId);

Sku sku=skuResult.getData();

Spu spu=spuFeign.findByspuId(sku.getSpuId());//将SKU转换成OrderItem

orderItem = this.sku2OrderItem(sku,spu,num);

}//存入redis

redisTemplate.boundHashOps(CART+username).put(skuId,orderItem);//往redis中存值

}//sku转换为orderItem

privateOrderItem sku2OrderItem(Sku sku, Spu spu, Integer num) {

OrderItem orderItem= newOrderItem();

orderItem.setSpuId(sku.getSpuId());

orderItem.setSkuId(sku.getId());

orderItem.setName(sku.getName());

orderItem.setPrice(sku.getPrice());

orderItem.setNum(num);

orderItem.setMoney(num*orderItem.getPrice()); //单价*数量

orderItem.setPayMoney(num*orderItem.getPrice()); //实付金额

orderItem.setImage(sku.getImage());

orderItem.setWeight(sku.getWeight()*num); //重量=单个重量*数量//分类ID设置

orderItem.setCategoryId1(spu.getCategory1Id());

orderItem.setCategoryId2(spu.getCategory2Id());

orderItem.setCategoryId3(spu.getCategory3Id());returnorderItem;

}

}

java redis hash存取_我爱java系列---【redis中如何存取hash类型的值(key field value)】...相关推荐

  1. java char数组查找_我爱java系列---【在字符数组中查询某个字符串是否存在】

    mysql中的FIND_IN_SET函数 需求:根据省份id,查询可以在该省份下发信息的通道id sql语句: SELECT cpa.CHANNEL_ID id FROM channel_price_ ...

  2. java string设置编码_详解Java中String类型与默认字符编码

    为什么写这个 至于为什么要写这个,主要是一句mmp一定要讲,绕了一上午,晕死 Java程序中的中文乱码问题一直是一个困扰程序员的难题,自己也不例外,早在做项目时就遇到过很多编码方式的坑,当时想填来着, ...

  3. java集合框架源代码_面试必备——Java集合框架

    Java集合框架面试题 常见集合 集合可以看作是一种容器,用来存储对象信息. 数组和集合的区别: (1)数组长度不可变化而且无法保存具有映射关系的数据:集合类用于保存数量不确定的数据,以及保存具有映射 ...

  4. java垃圾回收机制_乐字节Java|GC垃圾回收机制、package和import语句

    本文接上一篇:乐字节Java|this关键字.static关键字.block块.本文是接着讲述JavaGC垃圾回收机制.package 和 import语句. 一.GC垃圾回收机制 GC全名:Garb ...

  5. java获取机器号_(转)JAVA获得机器码的实现

    http://yangshangchuan.iteye.com/blog/2012401 首先,定义了一个统一的接口,以支持不同操作系统不同实现的透明切换: Java代码  收藏代码 /** *生成机 ...

  6. java string的作用_浅谈java String不可变的好处

    一.java内部String类的实现: java 8: public final class String implements java.io.Serializable, Comparable, C ...

  7. java线程工作原型_深度解析Java内存的原型及工作原理

    本文主要通过分析Java内存分配的栈.堆以以及常量池详细的讲解了其的工作原理. 一.java虚拟机内存原型 寄存器:我们在程序中无法控制栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是 ...

  8. 新手学java 学哪方面_初学者学Java应从哪些方面学习?

    原标题:初学者学Java应从哪些方面学习? Java作为应用于网络的最好语言,前景无限看好.然而,就算用Java建造一个不是很烦琐的web应用,也不是件轻松的事情.那么,初学者学Java应从哪些方面学 ...

  9. java容器有哪些_什么是Java容器?Java常见容器有哪些?

    我们在面试中或者在实际工作中,常常问到这个问题,那么最基本的我们首先要了解什么是java容器,再去学习java常见容器. 在百度上,是这么解释java容器的: 容器是一个Java 所编写的程序,原先必 ...

最新文章

  1. Java中final变量的初始化方式
  2. Spring Boot Admin 2.0开箱体验
  3. Linux之脚本执行
  4. mysql数据库通过二进制 -【恢复数据记录】
  5. 如何从 dump 文件中提取出 C# 源代码?
  6. java 仿qq登录界面7.1_安卓开发学习笔记(七):仿写腾讯QQ登录注册界面
  7. 设计模式-单一职责原则
  8. unity3D游戏开发实战原创视频讲座系列7之消消乐游戏开发
  9. Meta率先发布虚拟世界Horizon Worlds
  10. h5手机端浏览器机制_h5浏览器缓存机制
  11. Oracle 11g RAC oc4j/gsd Offline
  12. 2020最新微信小程序学习资源汇总,包括文档、视频、系列教程、开源项目、框架!
  13. mysql 5.7版本下载安装
  14. flutter 初视回味
  15. 【自用错题集】C语言 基础错题整理
  16. 语言模型及RNN模型
  17. CAN节点报文丢失超时时间检测CANoe自动化脚本实现
  18. LightOJ 1395 A Dangerous Maze (II) 期望DP
  19. 用AOMEI Partition Assistant制作PE 启动盘
  20. Win7管理受信任证书 - CA证书 - 系统根证书

热门文章

  1. 【高校宿舍管理系统】终章 完成主页以及项目总结
  2. 基于 SpringBoot2.0+优雅整合 SpringBoot+Mybatis
  3. MySQL---数据库切分
  4. interface接口——公共规范标准
  5. 安装 RabbitMQ
  6. 基础知识之 - C# Using的用法
  7. 02.gcc入门(下)
  8. codeforces-148D-Bag of mice-概率DP
  9. jquery练习——简单的图片结果展示效果
  10. 将权限引入系统的探索