add message
Some checks failed
Build and Deploy Backend / build-and-deploy (push) Failing after 1m3s

This commit is contained in:
repair-agent 2026-02-14 13:23:16 +08:00
parent f1bead86f6
commit ee7f3ffea3
3 changed files with 80 additions and 3 deletions

View File

@ -1,10 +1,13 @@
"""
系统模块URL配置
- App端接口/api/v1/feedback/*, /api/v1/version/*
- 管理端接口/api/admin/feedbacks/*
"""
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import FeedbackViewSet, VersionViewSet
from .views import FeedbackViewSet, VersionViewSet, AdminFeedbackViewSet
# App端路由
router = DefaultRouter()
router.register('feedback', FeedbackViewSet, basename='feedback')
router.register('version', VersionViewSet, basename='version')
@ -12,3 +15,11 @@ router.register('version', VersionViewSet, basename='version')
urlpatterns = [
path('', include(router.urls)),
]
# 管理端路由
admin_router = DefaultRouter()
admin_router.register('feedbacks', AdminFeedbackViewSet, basename='admin-feedbacks')
admin_urlpatterns = [
path('', include(admin_router.urls)),
]

View File

@ -1,5 +1,5 @@
"""
系统模块视图 - App端
系统模块视图
"""
from rest_framework import viewsets
from rest_framework.decorators import action
@ -7,7 +7,8 @@ from rest_framework.permissions import IsAuthenticated, AllowAny
from drf_spectacular.utils import extend_schema
from utils.response import success, error
from apps.admins.authentication import AppJWTAuthentication
from apps.admins.authentication import AppJWTAuthentication, AdminJWTAuthentication
from apps.admins.permissions import IsAdminUser
from .models import Feedback, AppVersion
from .serializers import FeedbackSerializer, AppVersionSerializer
@ -60,3 +61,65 @@ class VersionViewSet(viewsets.ViewSet):
'has_update': has_update,
'latest_version': AppVersionSerializer(latest).data if has_update else None,
})
@extend_schema(tags=['管理员-意见反馈'])
class AdminFeedbackViewSet(viewsets.ViewSet):
"""意见反馈管理视图集(管理端)"""
authentication_classes = [AdminJWTAuthentication]
permission_classes = [IsAdminUser]
def list(self, request):
"""
反馈列表
GET /api/admin/feedbacks/
"""
queryset = Feedback.objects.select_related('user').all()
# 搜索条件
phone = request.query_params.get('phone')
if phone:
queryset = queryset.filter(user__phone__contains=phone)
# 分页
page = int(request.query_params.get('page', 1))
page_size = int(request.query_params.get('page_size', 10))
start = (page - 1) * page_size
end = start + page_size
total = queryset.count()
feedbacks = queryset[start:end]
items = [
{
'id': fb.id,
'user_phone': fb.user.phone,
'user_nickname': fb.user.nickname,
'content': fb.content,
'contact': fb.contact,
'created_at': fb.created_at,
}
for fb in feedbacks
]
return success(data={'total': total, 'items': items})
def retrieve(self, request, pk=None):
"""
反馈详情
GET /api/admin/feedbacks/{id}/
"""
try:
fb = Feedback.objects.select_related('user').get(pk=pk)
except Feedback.DoesNotExist:
return error(message='反馈不存在')
return success(data={
'id': fb.id,
'user_phone': fb.user.phone,
'user_nickname': fb.user.nickname,
'content': fb.content,
'contact': fb.contact,
'created_at': fb.created_at,
})

View File

@ -23,6 +23,7 @@ app_api_patterns = [
# ============ Web管理端路由 (管理员,用户名密码登录) ============
from apps.inventory.urls import admin_urlpatterns as inventory_admin_urls
from apps.users.urls import admin_urlpatterns as users_admin_urls
from apps.system.urls import admin_urlpatterns as system_admin_urls
admin_api_patterns = [
# 管理员认证和个人信息
@ -31,6 +32,8 @@ admin_api_patterns = [
path('', include(inventory_admin_urls)),
# App用户管理
path('', include(users_admin_urls)),
# 意见反馈管理
path('', include(system_admin_urls)),
]
urlpatterns = [