Files
boss_dp/server/api/contacts.py
Your Name 87f915819f 哈哈
2026-02-14 17:58:29 +08:00

77 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: utf-8 -*-
"""
联系记录 API需要登录
- GET /api/contacts -> 查询联系记录(支持分页、搜索)
- POST /api/contacts -> 创建联系记录
- GET /api/contacts/{id} -> 查询单条记录
- PUT /api/contacts/{id} -> 更新记录
- DELETE /api/contacts/{id} -> 删除记录
"""
from django.db.models import Q
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from server.models import ContactRecord
from server.serializers import ContactRecordSerializer
@api_view(["GET", "POST"])
def contact_list(request):
if request.method == "GET":
search = request.query_params.get("search", "")
page = int(request.query_params.get("page", 1))
page_size = int(request.query_params.get("page_size", 10))
reply_status = request.query_params.get("reply_status")
wechat = request.query_params.get("wechat_exchanged")
qs = ContactRecord.objects.all()
if search:
qs = qs.filter(
Q(name__icontains=search) |
Q(position__icontains=search) |
Q(contact__icontains=search)
)
if reply_status:
qs = qs.filter(reply_status=reply_status)
if wechat is not None:
qs = qs.filter(wechat_exchanged=wechat.lower() in ("true", "1"))
total = qs.count()
start = (page - 1) * page_size
end = start + page_size
records = qs[start:end]
return Response({
"total": total,
"page": page,
"page_size": page_size,
"results": ContactRecordSerializer(records, many=True).data,
})
ser = ContactRecordSerializer(data=request.data)
ser.is_valid(raise_exception=True)
ser.save()
return Response(ser.data, status=status.HTTP_201_CREATED)
@api_view(["GET", "PUT", "DELETE"])
def contact_detail(request, pk):
try:
obj = ContactRecord.objects.get(pk=pk)
except ContactRecord.DoesNotExist:
return Response({"detail": "联系记录不存在"}, status=status.HTTP_404_NOT_FOUND)
if request.method == "GET":
return Response(ContactRecordSerializer(obj).data)
if request.method == "PUT":
ser = ContactRecordSerializer(obj, data=request.data, partial=True)
ser.is_valid(raise_exception=True)
ser.save()
return Response(ser.data)
obj.delete()
return Response({"message": "联系记录已删除"})