51 lines
2.0 KiB
Python
51 lines
2.0 KiB
Python
"""集团后台:俱乐部订单单向互通抢单配置。"""
|
||
from rest_framework.parsers import JSONParser
|
||
from rest_framework.permissions import IsAuthenticated
|
||
from rest_framework.response import Response
|
||
from rest_framework.views import APIView
|
||
|
||
from backend.utils import verify_kefu_permission
|
||
from jituan.services.admin_context import can_manage_admin_assignments
|
||
from jituan.services.order_grab_share import add_grab_link, delete_grab_link, list_grab_links
|
||
|
||
|
||
class ClubOrderGrabLinkManageView(APIView):
|
||
"""
|
||
POST /jituan/houtai/order-grab-link
|
||
action: list | add | delete
|
||
仅集团权限(can_manage_admin_assignments)可操作。
|
||
"""
|
||
permission_classes = [IsAuthenticated]
|
||
parser_classes = [JSONParser]
|
||
|
||
def post(self, request):
|
||
username = (request.data.get('username') or request.data.get('phone') or '').strip()
|
||
if not username:
|
||
return Response({'code': 400, 'msg': '缺少username'})
|
||
kefu, permissions = verify_kefu_permission(request, username)
|
||
if kefu is None:
|
||
return permissions
|
||
if not can_manage_admin_assignments(request.user, permissions):
|
||
return Response({'code': 403, 'msg': '仅集团权限可配置订单互通'})
|
||
|
||
action = (request.data.get('action') or 'list').strip()
|
||
if action == 'list':
|
||
return Response({'code': 0, 'msg': 'ok', 'data': {'list': list_grab_links()}})
|
||
|
||
if action == 'add':
|
||
data, err = add_grab_link(
|
||
request.data.get('grabber_club_id'),
|
||
request.data.get('order_club_id'),
|
||
)
|
||
if err:
|
||
return Response({'code': 400, 'msg': err})
|
||
return Response({'code': 0, 'msg': '已添加', 'data': data})
|
||
|
||
if action == 'delete':
|
||
ok, err = delete_grab_link(request.data.get('id'))
|
||
if not ok:
|
||
return Response({'code': 400, 'msg': err or '删除失败'})
|
||
return Response({'code': 0, 'msg': '已删除'})
|
||
|
||
return Response({'code': 400, 'msg': '无效 action'})
|