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},