From f4a50196d4da79f1b97538d2c4bde0a9a52ac0e8 Mon Sep 17 00:00:00 2001 From: jeremygan2021 Date: Wed, 4 Mar 2026 13:20:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/community/views.py | 46 +++++++++++++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/backend/community/views.py b/backend/community/views.py index c0f5ff1..18b37be 100644 --- a/backend/community/views.py +++ b/backend/community/views.py @@ -6,7 +6,7 @@ from rest_framework import serializers, permissions from django.core.signing import TimestampSigner, BadSignature, SignatureExpired from django.utils import timezone from django.db import models -from drf_spectacular.utils import extend_schema +from drf_spectacular.utils import extend_schema, OpenApiParameter, OpenApiTypes from shop.models import WeChatUser, Order from shop.views import get_wechat_pay_client @@ -439,13 +439,31 @@ class AdminPublishViewSet(viewsets.ViewSet): return None - @extend_schema(summary="API发布活动") + @extend_schema( + summary="API发布活动", + parameters=[ + OpenApiParameter( + name='apikey', + description='API访问密钥', + required=True, + type=OpenApiTypes.STR, + location=OpenApiParameter.QUERY + ), + OpenApiParameter( + name='phone_number', + description='管理员手机号 (用于关联发布者)', + required=True, + type=OpenApiTypes.STR, + location=OpenApiParameter.QUERY + ) + ] + ) @action(detail=False, methods=['post']) def publish_activity(self, request): if not self.check_api_key(request): return Response({'error': 'Invalid API Key'}, status=403) - phone = request.data.get('phone_number') + phone = request.data.get('phone_number') or request.query_params.get('phone_number') user = self.get_admin_user_by_phone(phone) if not user: return Response({'error': 'Admin user not found with this phone number'}, status=404) @@ -457,13 +475,31 @@ class AdminPublishViewSet(viewsets.ViewSet): return Response(serializer.data, status=201) return Response(serializer.errors, status=400) - @extend_schema(summary="API发布帖子") + @extend_schema( + summary="API发布帖子", + parameters=[ + OpenApiParameter( + name='apikey', + description='API访问密钥', + required=True, + type=OpenApiTypes.STR, + location=OpenApiParameter.QUERY + ), + OpenApiParameter( + name='phone_number', + description='管理员手机号 (用于关联发布者)', + required=True, + type=OpenApiTypes.STR, + location=OpenApiParameter.QUERY + ) + ] + ) @action(detail=False, methods=['post']) def publish_topic(self, request): if not self.check_api_key(request): return Response({'error': 'Invalid API Key'}, status=403) - phone = request.data.get('phone_number') + phone = request.data.get('phone_number') or request.query_params.get('phone_number') user = self.get_admin_user_by_phone(phone) if not user: return Response({'error': 'Admin user not found with this phone number'}, status=404)