解决报名支付
All checks were successful
Deploy to Server / deploy (push) Successful in 36s

This commit is contained in:
jeremygan2021
2026-02-23 16:31:34 +08:00
parent 58176c6651
commit 799965ee74
7 changed files with 87 additions and 38 deletions

View File

@@ -0,0 +1,23 @@
# Generated by Django 6.0.1 on 2026-02-23 08:31
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('community', '0010_activity_is_paid_activity_price_activitysignup_order'),
]
operations = [
migrations.AddField(
model_name='activity',
name='auto_confirm',
field=models.BooleanField(default=False, help_text='开启后,付费活动支付成功或免费活动报名后直接显示报名成功,不需要审核', verbose_name='无需审核'),
),
migrations.AlterField(
model_name='activitysignup',
name='status',
field=models.CharField(choices=[('unpaid', '待支付'), ('pending', '审核中'), ('confirmed', '报名成功'), ('cancelled', '已取消')], default='confirmed', max_length=20, verbose_name='状态'),
),
]

View File

@@ -19,6 +19,7 @@ class Activity(models.Model):
price = models.DecimalField(max_digits=10, decimal_places=2, default=0, verbose_name="报名费用")
is_active = models.BooleanField(default=True, verbose_name="是否启用")
auto_confirm = models.BooleanField(default=False, verbose_name="无需审核", help_text="开启后,付费活动支付成功或免费活动报名后直接显示报名成功,不需要审核")
# 常用报名信息开关
ask_name = models.BooleanField(default=False, verbose_name="收集姓名")
@@ -72,6 +73,7 @@ class ActivitySignup(models.Model):
活动报名记录
"""
STATUS_CHOICES = (
('unpaid', '待支付'),
('pending', '审核中'),
('confirmed', '报名成功'),
('cancelled', '已取消'),

View File

@@ -156,13 +156,14 @@ class ActivityViewSet(viewsets.ReadOnlyModelViewSet):
if pending_signup:
pending_signup.signup_info = signup_info
pending_signup.order = order
pending_signup.status = 'unpaid' # Explicitly set to unpaid
pending_signup.save()
else:
ActivitySignup.objects.create(
activity=activity,
user=user,
signup_info=signup_info,
status='pending',
status='unpaid',
order=order
)
@@ -177,11 +178,14 @@ class ActivityViewSet(viewsets.ReadOnlyModelViewSet):
return Response({'error': '支付接口调用失败', 'detail': result}, status=500)
# Free Activity Signup
# Check auto_confirm
status_val = 'confirmed' if activity.auto_confirm else 'pending'
signup = ActivitySignup.objects.create(
activity=activity,
user=user,
signup_info=signup_info,
status='confirmed'
status=status_val
)
serializer = ActivitySignupSerializer(signup)
return Response(serializer.data, status=201)