Files
Django/merchant_ops/views_templates.py
2026-06-20 03:25:24 +08:00

106 lines
3.6 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.
"""子客服专用:派单模板 / 链接(独立路径;读模板用 merchant_id写模板需 template_manage"""
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView
from config.views import (
ShangjiaTianjiaMobanView,
ShangjiaGengxinMobanView,
ShangjiaShanchuMobanView,
ShangjiaGenerateLinkView,
ShangjiaLianjieListView,
)
from merchant_ops.helpers import proxy_as_merchant_user
from merchant_ops.services.authz import StaffAuthError, get_active_staff_member, member_has_perm
from merchant_ops.services.template_query import list_merchant_templates
from merchant_ops.views_manage import _err
def _require_staff(request):
member = get_active_staff_member(request.user)
if not member:
raise StaffAuthError(403, '非有效子客服')
return member
def _can_read_templates(member):
"""派单发常规单需读模板;改模板需 template_manage。"""
return member_has_perm(member, 'order_dispatch') or member_has_perm(member, 'template_manage')
class StaffTemplateListView(APIView):
"""读商家全部模板UserID=merchant_id有 order_dispatch 即可。"""
permission_classes = [IsAuthenticated]
def post(self, request):
try:
member = _require_staff(request)
if not _can_read_templates(member):
raise StaffAuthError(403, '无权限查看模板')
payload, http_status = list_merchant_templates(member.merchant_id, request.data)
return Response(payload, status=http_status)
except Exception as e:
return _err(e)
class StaffTemplateCreateView(APIView):
permission_classes = [IsAuthenticated]
def post(self, request):
try:
member = _require_staff(request)
if not member_has_perm(member, 'template_manage'):
raise StaffAuthError(403, '无权限添加模板')
return proxy_as_merchant_user(request, member, ShangjiaTianjiaMobanView, 'template_manage')
except Exception as e:
return _err(e)
class StaffTemplateUpdateView(APIView):
permission_classes = [IsAuthenticated]
def post(self, request):
try:
member = _require_staff(request)
if not member_has_perm(member, 'template_manage'):
raise StaffAuthError(403, '无权限修改模板')
return proxy_as_merchant_user(request, member, ShangjiaGengxinMobanView, 'template_manage')
except Exception as e:
return _err(e)
class StaffTemplateDeleteView(APIView):
permission_classes = [IsAuthenticated]
def post(self, request):
try:
member = _require_staff(request)
if not member_has_perm(member, 'template_manage'):
raise StaffAuthError(403, '无权限删除模板')
return proxy_as_merchant_user(request, member, ShangjiaShanchuMobanView, 'template_manage')
except Exception as e:
return _err(e)
class StaffLinkGenerateView(APIView):
permission_classes = [IsAuthenticated]
def post(self, request):
try:
member = _require_staff(request)
return proxy_as_merchant_user(request, member, ShangjiaGenerateLinkView, 'order_dispatch')
except Exception as e:
return _err(e)
class StaffLinkListView(APIView):
permission_classes = [IsAuthenticated]
def post(self, request):
try:
member = _require_staff(request)
return proxy_as_merchant_user(request, member, ShangjiaLianjieListView, 'order_dispatch')
except Exception as e:
return _err(e)