累计改动汇总(相对远程,全在 orders/views.py)

处罚扣积分:dashou.jifen(不再误用 DeductedPoints)
商家/打手详情:兼容 dingdan_id 与 OrderID
抢单等:Dingdan.objects → Order.query
This commit is contained in:
XingQue
2026-06-19 22:36:24 +08:00
parent a055131ec7
commit f851dbdefd

View File

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