1
0
forked from erp-dev/erp
Files
erpnew/api_v1/views/settlement/views.py

76 lines
2.2 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.
"""Settlement API views"""
import logging
import re
from datetime import datetime, date
from django.utils import timezone
from rest_framework import status
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated
from settlement.services import get_plate_order_summary_by_customer
logger = logging.getLogger(__name__)
class PlateOrderSummaryView(APIView):
"""
开版订单统计 API
GET /api/v1/settlement/plate-orders/summary/
参数:
date: 统计日期YYYY-MM-DD
"""
permission_classes = [IsAuthenticated]
def get(self, request):
"""
获取开版订单统计
"""
date_str = request.query_params.get('date')
if not date_str:
return Response(
{'error': '缺少 date 参数'},
status=status.HTTP_400_BAD_REQUEST
)
if not re.match(r'^\d{4}-\d{2}-\d{2}$', date_str):
return Response(
{'error': '日期格式错误,请使用 YYYY-MM-DD 格式'},
status=status.HTTP_400_BAD_REQUEST
)
try:
settlement_date = date.fromisoformat(date_str)
except ValueError:
return Response(
{'error': '日期不存在'},
status=status.HTTP_403_FORBIDDEN
)
emp = getattr(request.user, 'employee', None)
if emp is None or emp.merchant is None:
return Response(
{'error': '用户未关联商户'},
status=status.HTTP_403_FORBIDDEN
)
try:
data = get_plate_order_summary_by_customer(
merchant_id=emp.merchant.id,
settlement_date=settlement_date,
user=request.user
)
return Response({'data': data})
except Exception as e:
logger.exception(
f'[settlement.views] 获取开版订单统计失败: {e}'
)
return Response(
{'error': '获取统计数据失败'},
status=status.HTTP_500_INTERNAL_SERVER_ERROR
)