From ea500391e85617abf1087f2a62871e8a7e06642b Mon Sep 17 00:00:00 2001 From: jeremygan2021 Date: Mon, 23 Feb 2026 16:54:12 +0800 Subject: [PATCH] =?UTF-8?q?admin=E8=87=AA=E5=8A=A8=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/shop/views.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/backend/shop/views.py b/backend/shop/views.py index 67f8cad..2c504b2 100644 --- a/backend/shop/views.py +++ b/backend/shop/views.py @@ -511,17 +511,38 @@ def payment_finish(request): # Handle Activity Signup if hasattr(order, 'activity') and order.activity: try: - # Use string import to avoid circular dependency at module level - from community.models import ActivitySignup + # Use apps.get_model to avoid circular dependency + from django.apps import apps + ActivitySignup = apps.get_model('community', 'ActivitySignup') + signup = ActivitySignup.objects.filter(order=order).first() + + # Fallback: try to find by user and activity if not found by order + if not signup and order.wechat_user: + print(f"Warning: ActivitySignup not found by order {order.id}, trying by user/activity") + signup = ActivitySignup.objects.filter( + user=order.wechat_user, + activity=order.activity, + status='unpaid' + ).first() + if signup: + print(f"Found signup {signup.id} by user/activity, linking order...") + signup.order = order + signup.save() + if signup: # Determine status based on activity setting new_status = 'confirmed' if signup.activity.auto_confirm else 'pending' signup.status = new_status signup.save() print(f"活动报名状态已更新: {signup.id} -> {new_status}") + else: + print(f"Error: No ActivitySignup found for paid order {order.id}") + except Exception as e: print(f"更新活动报名状态失败: {str(e)}") + import traceback + traceback.print_exc() # 计算佣金 (旧版销售员系统) try: