?下单模块伪代码
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 '提交订单成功'
### 锁的选择:
# 服务器性能较好或者并发较低时, 可以使用乐观锁, 能充分利用资源
# 反之, 使用悲观锁.

浙公网安备 33010602011771号