?下单模块伪代码
11.27伪代码实现下单流程
def 下单(): # 获取参数(前端或内存数据库) 用户id=request.用户id if not 用户id: return '请登录' if not all(地址, 支付手段, 商品id&购买数量[列表] ) return '信息不全' # 校验 try: 获取地址,支付手段 except: return '信息错误' # 业务处理 # 拼接订单id, 及其内容 订单id = 年月日秒UUID+用户id 总数量 = 0 总价格 = 0 运费 = 0 支付方式 = 支付手段 # 回滚点1 设置事务点1 try-事务: 创建订单 = ( ... ) for 商品id,购买数量 in 商品id&购买数量[列表]: try: 查询商品id # !设置悲观锁 (**悲观锁**) 锁定该商品字段. (**乐观锁**) 保存库存数 except: 回滚节点1 return '桑品不存在' 通过商品id查询商品,得商品详情. 查询商品库存. if 商品库存< 购买数量: 回滚节点1 return '商品库存不足' (**悲观锁**) 直接修改库存 (**乐观锁**) 重新查询商品, 判断库存数是否与之前一致. if 一致: 更新修改库存 else: 重试 if 重试次数>设定次数: 回滚节点1 return 总价格 += 商品小计 重新保存订单数据(总价格=总价格) except: 回滚节点1 return '下单失败,请重试' 提交事务 # 返回结果 return '提交订单成功' ### 锁的选择: # 服务器性能较好或者并发较低时, 可以使用乐观锁, 能充分利用资源 # 反之, 使用悲观锁.