From f851dbdefd3e0a1120fc07d8a8988205506cedcb Mon Sep 17 00:00:00 2001 From: XingQue Date: Fri, 19 Jun 2026 22:36:24 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B4=AF=E8=AE=A1=E6=94=B9=E5=8A=A8=E6=B1=87?= =?UTF-8?q?=E6=80=BB=EF=BC=88=E7=9B=B8=E5=AF=B9=E8=BF=9C=E7=A8=8B=EF=BC=8C?= =?UTF-8?q?=E5=85=A8=E5=9C=A8=20orders/views.py=EF=BC=89=20=E5=A4=84?= =?UTF-8?q?=E7=BD=9A=E6=89=A3=E7=A7=AF=E5=88=86=EF=BC=9Adashou.jifen?= =?UTF-8?q?=EF=BC=88=E4=B8=8D=E5=86=8D=E8=AF=AF=E7=94=A8=20DeductedPoints?= =?UTF-8?q?=EF=BC=89=20=E5=95=86=E5=AE=B6/=E6=89=93=E6=89=8B=E8=AF=A6?= =?UTF-8?q?=E6=83=85=EF=BC=9A=E5=85=BC=E5=AE=B9=20dingdan=5Fid=20=E4=B8=8E?= =?UTF-8?q?=20OrderID=20=E6=8A=A2=E5=8D=95=E7=AD=89=EF=BC=9ADingdan.object?= =?UTF-8?q?s=20=E2=86=92=20Order.query?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- orders/views.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/orders/views.py b/orders/views.py index 36c4c95..be3dbfd 100644 --- a/orders/views.py +++ b/orders/views.py @@ -87,7 +87,7 @@ class PaymentFailView(APIView): with transaction.atomic(): # 锁定订单防止并发 - dingdan = Dingdan.objects.select_for_update().filter(OrderID=dingdanid).first() + dingdan = Order.query.select_for_update().filter(OrderID=dingdanid).first() if not dingdan: return Response({'code': 2, 'msg': '订单不存在', 'data': None}) @@ -189,7 +189,7 @@ class WechatPayNotifyView(APIView): # 锁定订单防止并发 try: - dingdan = Dingdan.objects.select_for_update().filter(OrderID=out_trade_no).first() + dingdan = Order.query.select_for_update().filter(OrderID=out_trade_no).first() except Exception as e: logger.error(f"查询订单异常: {e}") raise @@ -328,7 +328,7 @@ class WechatPayNotifyView(APIView): logger.info(f"进入 _handle_failure, out_trade_no={out_trade_no}") try: - dingdan = Dingdan.objects.select_for_update().filter(OrderID=out_trade_no).first() + dingdan = Order.query.select_for_update().filter(OrderID=out_trade_no).first() if not dingdan: logger.warning(f"订单不存在: {out_trade_no}") return @@ -504,7 +504,7 @@ class PaymentVerifyView(APIView): """ with transaction.atomic(): # 重新锁定订单,防止并发更新 - dingdan = Dingdan.objects.select_for_update().get(pk=dingdan.pk) + dingdan = Order.query.select_for_update().get(pk=dingdan.pk) if dingdan.Status != 9: # 订单状态已被其他进程更新,直接返回(幂等) return @@ -2388,7 +2388,7 @@ class ShangjiaJiesuanView(APIView): try: with transaction.atomic(): # 4. 查询订单并加锁(修复并发问题) - order = Dingdan.objects.select_for_update().get(OrderID=dingdan_id) + order = Order.query.select_for_update().get(OrderID=dingdan_id) # 验证订单是否属于当前商家 shangjia_kuozhan = MerchantOrderExt.query.filter( @@ -3627,7 +3627,7 @@ class QiangdanView(APIView): def _validate_and_lock_order(self, dingdan_id, dashou_yonghuid): try: - order = Dingdan.objects.select_for_update().get(OrderID=dingdan_id) + order = Order.query.select_for_update().get(OrderID=dingdan_id) if order.Status not in [1, 7]: return "订单状态不可抢" if order.Status == 7: @@ -5466,7 +5466,7 @@ class AdTongYiTuiKuanPingTai(APIView): # 7. 查询订单主表(加锁) with transaction.atomic(): try: - dingdan_obj = Dingdan.objects.select_related('pingtai_kuozhan').select_for_update().get(OrderID=dingdan_id) + dingdan_obj = Order.query.select_related('pingtai_kuozhan').select_for_update().get(OrderID=dingdan_id) except Order.DoesNotExist: return Response( {'code': 404, 'message': '订单不存在', 'data': None},