高并发下的互联网电商购物车实战-加入购物车接口开发
简介:电商购物车实现案例-加入购物车接口开发
添加购物车接口
@RequestMapping("addCart")
public JsonData addCart(int videoId,int buyNum){
//获取购物车
BoundHashOperations<String, Object, Object> myCart = getMyCartOps();
Object cacheObj = myCart.get(videoId+"");
String result = "";
if (cacheObj != null) {
result = (String) cacheObj;
}
if (cacheObj == null) {
//不存在则新建一个购物项
CartItemVO cartItem = new CartItemVO();
//从数据库查询详情,我们这边直接随机写个
VideoDO videoDO = videoDao.findDetailById(videoId);
videoDO.setId(videoId);
cartItem.setPrice(videoDO.getPrice());
cartItem.setBuyNum(buyNum);
cartItem.setProductId(videoId);
cartItem.setProductImg(videoDO.getImg());
cartItem.setProductTitle(videoDO.getTitle());
myCart.put(videoId+"", JsonUtil.objectToJson(cartItem));
} else {
//存在则新增数量
CartItemVO cartItem = JsonUtil.jsonToPojo(result, CartItemVO.class);
cartItem.setBuyNum(cartItem.getBuyNum() + buyNum);
myCart.put(videoId+"", JsonUtil.objectToJson(cartItem));
}
return JsonData.buildSuccess();
}
购物车方法抽取
/**
* 抽取我的购物车通用方法
*
* @return
*/
private BoundHashOperations<String, Object, Object> getMyCartOps() {
String cartKey = getCartKey();
return redisTemplate.boundHashOps(cartKey);
}
/**
* 获取购物车的key
*
* @return
*/
private String getCartKey() {
//从拦截器获取 ,这里写死即可,每个用户不一样
int userId = 88;
String cartKey = String.format("product:cart:%s", userId);
return cartKey;
}
《小滴课堂-Redis6学习笔记》