redis实现购物车及订单支付功能

举报
浅羽技术 发表于 2022/11/27 00:43:08 2022/11/27
【摘要】 购物车及订单支付(redis):关于购物车,我们当时考虑到怕水军来回CRUD(增读更删)购物车,对数据库造成巨大压力,当时决定采用redis来做这个购物车。这个购物车当时想到了两种情况一种是淘宝的模式就是在用户在未登录状态下,可以查看商品,当在详情页点击“加入购物车”或者“查看购物车”的时候我们会判断用户是否登录,如果没有登录我们会弹出一个弹框,让用户先登录,成功后跳转到登录页面,并且把商...

购物车及订单支付(redis):

关于购物车,我们当时考虑到怕水军来回CRUD(增读更删)购物车,对数据库造成巨大压力,当时决定采用redis来做这个购物车。

这个购物车当时想到了两种情况一种是淘宝的模式就是在用户在未登录状态下,可以查看商品,当在详情页点击“加入购物车”或者“查看购物车”的时候我们会判断用户是否登录,如果没有登录我们会弹出一个弹框,让用户先登录,成功后跳转到登录页面,并且把商品的信息传到后台,进行保存,如果用户是登录状态,直接将商品信息传到后台,进行保存。

另一种就是京东不管用户是否登录都可以添加和查看购物车,先将数据全部都保存在cookie中去,然后当用户登录上去以后就会直接将cookie中的信息保存在缓存中;
我们当时有这样一个考虑,就是第一个人在查看商品添加到了购物车,但是没有登录,只是保存在了cookie中,后来第二个人也来上jd,结果第一个人的购物车商品保存在了第二个人的账户中,存在弊端,最后我们还是选用了淘宝的模式;

在保存时候我们选择的是保存到redis缓存当中,将信息传到后台之后,我们会将数据全部都存放在一个对象当中,在将对象存放在list当中,然后以用户id(唯一标示)为键,list集合为值存放在缓存当中。

当用户有新的商品添加的时候,我们通过用户id查询出来原来的信息 ,将新的信息存放在list集合中去,然后将集合在放入缓存当中,但是这个过程中需要有一点注意的地方,就是当新添加的商品本来在购物中存在,这时我们就需要进行一个判断。如果存在我们只要在原来的基础上数量添加就行了;

购物车商品的删除,点击删除的时候,我们会将商品的id获取到,同时也获取到用户id,通过用户id查询出该用户的购物车商品,然后将要删除的商品从list集合当中删除掉,再保存回去;

之后当用户点击“提交订单”时会将redis中的信息取出来插入到数据库的订单表中,并清除reidis中该购物车的信息,同时将订单表中该条记录的状态设置为1(未付款),设置过期时间,在规定时间内用户可以选择进行支付,支付成功后会将订单的状态改为2,并将财付通返回的交易信息存入数据库的交易记录表中,同时调用webservice接口发送短信通知用户支付成功,此时的订单已进入后台去处理。

前台再查看订单时,如果在规定时间内,用户没有支付,我们会取消订单,这样是避免其他用户不能购买到商品,我们会根据状态显示不同的信息,比如:状态1是未支付订单,状态为2的是支付成功等待审核状态,当后台审核通过状态会改为3,当发货时状态会改为4,这时客户就可以确认收货,确认收货后状态改为5。

注意:订单支付采用的是 财付通(腾讯),支付宝(淘宝)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。