订单未支付N小时后取消订单库存回滚

本文介绍了一种利用Redis实现订单两小时内未支付则自动取消并回滚库存的方法。通过将商品ID作为Key存储订单ID及商品数量,设置两小时的有效期,确保订单未支付时库存不会被占用。一旦订单支付成功,则从数据库中扣除相应库存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  需求:1 订单两小时后未支付取消订单回滚库存

           

   1使用消息队列。这里不讲

         2.使用redis

         商品下单时不扣除库存,把商品id作为key 用hash 保存 订单id  value 未商品数,有效时间为两小时

订单支付成功时 删掉订单id  从数据库中扣除库存,删除订单id (失效)

   查看库存时从数据库中取出库存 - 在获取redis中商品id 未key的所有值  = 当前可用库存


### 商品销售管理系统的活动图 在商品销售管理系统的设计中,活动图用于展示系统内不同操作的顺序及其交互过程。通过这种方式可以清晰地表达业务逻辑和控制流。 #### 销售交易处理的工作流程 当客户购买产品时,会触发一系列的操作: 1. 客户选择所需的商品并提交订单请求; 2. 系统验证库存情况;如果商品有货,则继续下一步骤;如果没有足够的存货量则通知顾客无法完成此次购物[^1]。 3. 收银员确认订单详情并向支付网关发送付款指令; 4. 银行返回授权状态给收银台——成功或失败; 5. 若支付被接受,更新数据库中的库存记录,并打印发票交给消费者; 6. 如果遇到任何错误(例如网络中断),将启动异常处理机制尝试解决问题或者回滚事务以保持数据一致性[^2]。 以下是该场景下简化版本的商品销售管理系统部分功能模块对应的UML活动图表表示形式: ```plantuml @startuml title 商品销售管理系统 - 订单处理流程 :start; if (检查库存?) then (yes) :准备订单; else (no) :告知缺货; endif :发起支付请求; if (支付结果) then (success) :减少库存数量; :开具电子发票; stop else (fail) :取消订单; :提示支付失败; endif note right: 处理过程中可能出现\n各种类型的异常,\n需加入相应的捕获措施. @enduml ``` 此图仅展示了核心环节而省去了诸如会员积分累积、促销折扣计算等附加特性。实际项目里可能还会涉及到更多复杂的分支条件判断与并发执行路径规划等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值