索马里海底捞 2018-05-23 08:56 采纳率: 0%
浏览 1166
已结题

购物车更新实现该怎么设计

SpringCloud,购物车数据存储在领域对象里,每次进购物车页面时怎么实时高效的拉取商品的最新数据,需要用中间件吗,还是直接调接口,有哪些可行的方案?请大牛们指教!

  • 写回答

2条回答

  • qq_41551088 2018-05-23 10:29
    关注
    加入购物车
    加入购物车插入到库中一条购物记录,同时插入到缓存中,缓存的key是记录的id
    未登录状态
    用户未登录时点击加入购物车,将productId ,skuId,buyNum 转换成json存到cookie中(同一件商品不同的skuId视为两个商品,相同的skuId和productId视为相同商品数量累加),用户登录成功的时候接收用户的消息将cookie中的商品信息保存到数据库中,然后清空cookie数据(京东)不然会出现登录成功后删除购物车商品然后退出,购物车中显示问题
    登录状态
    点击加入购物车将long userId,long productId,long skuId,int count 存到库中,相同的productId和skuId 数量累加,不同的skuId新增一条
    addToCart(long userId,long skuId,int count); //加入sku到购物车商品
    修改商品数量
    未登录状态
    用户未登录时,点击加减数量,根据productId和skuId从cooike中将商品数量进行加减,注意校验cooike中的数量不能小于0,不能大于库存数量
    登录状态
    用户登录状态时,点击加减数量productId和skuId,userId将用户购物车中某个sku的数量增加或减去differ值,注意校验库存数量
    updateAmount(long userId,skuId,int differ,List selectedSkuIds); //将用户购物车中某个sku的数量增加或减去differ值。此方法更新商品后,会根据selectedSkuIds重新计算一遍购物车价格,返回满足条件的优惠券
    删除购物车记录
    未登录状态
    用户未登录时,根据productId和skuId删除cookie中的记录
    deleteCart(long userId,long skuId, List selectedSkuIds); //将某个sku从用户购物车移除。此接品,在清除后台会重复计算selectedSkuIds价格,并会返回选中的sku列表与未选中的sku列表集合。及相应优惠券。
    登录状态
    登录状态下,直接根据productId和skuId以及userId删除库中数据
    4购物车列表展示
    未登录状态
    从cookie中取出productId以及skuId列表展示商品信息
    登录状态
    登录状态下根据用户id查询库中的记录数
    getCart(long userId,list selectedSkuIds); //查询用户购物车。此接口会重新计算selectedSkuIds,并返回选中与未选中sku列表集合,返回相应的满足条件的优惠券信息。
    

    5.订单提交成功后更新购物车数量以及修改购物车状态
    订单提交成功后接收订单成功消息,更新购物车状态和数量删除缓存记录

    6.商品下架后,更新库存状态,显示失效
    商品下架后接收消息修改购物车里的商品状态为失效

    评论

报告相同问题?

悬赏问题

  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧