码迷,mamicode.com
首页 > 其他好文 > 详细

11231

时间:2019-12-25 23:33:28      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:直接   内存数据   try   数据   方式   获取   选择   商品   订单   

 1 def 下单():
 2     # 获取参数(前端或内存数据库)
 3     用户id=request.用户id
 4         if not 用户id:
 5             return 请登录
 6 
 7     if not all(地址, 支付手段, 商品id&购买数量[列表] )
 8         return 信息不全
 9     # 校验    
10     try:
11         获取地址,支付手段
12     except:
13         return 信息错误    
14 
15 
16     # 业务处理
17     # 拼接订单id, 及其内容
18     订单id = 年月日秒UUID+用户id
19     总数量 = 0
20     总价格 = 0
21     运费 = 0
22     支付方式 = 支付手段
23 
24     # 回滚点1
25     设置事务点1
26     try-事务:
27         创建订单 = (
28                 ...
29             )
30 
31         for 商品id,购买数量 in 商品id&购买数量[列表]:
32             try:
33                 查询商品id
34                 # !设置悲观锁
35                 (**悲观锁**) 锁定该商品字段.
36                 (**乐观锁**) 保存库存数
37             except:
38                 回滚节点1
39                 return 桑品不存在
40             通过商品id查询商品,得商品详情.
41 
42             查询商品库存.
43 
44             if 商品库存< 购买数量:
45                 回滚节点1
46                 return 商品库存不足
47 
48 
49             (**悲观锁**)
50             直接修改库存
51             (**乐观锁**)
52             重新查询商品, 判断库存数是否与之前一致.
53 
54             if 一致:
55                 更新修改库存
56 
57             else:
58                 重试
59                 if 重试次数>设定次数:
60                     回滚节点1
61                     return 
62 
63             总价格 += 商品小计
64 
65         重新保存订单数据(总价格=总价格)
66 
67     except:
68         回滚节点1
69         return 下单失败,请重试
70 
71     提交事务
72     # 返回结果
73     return 提交订单成功
74 
75 ### 锁的选择:
76 #  服务器性能较好或者并发较低时, 可以使用乐观锁, 能充分利用资源
77 #  反之, 使用悲观锁.

11231

标签:直接   内存数据   try   数据   方式   获取   选择   商品   订单   

原文地址:https://www.cnblogs.com/jrri/p/12099537.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!