新增 fake-grab-order-list/manage/avatar 接口,权限 2200a;支持增删改价格介绍头像等;假单展示使用自定义头像。 Co-authored-by: Cursor <cursoragent@cursor.com>
109 lines
4.1 KiB
Python
109 lines
4.1 KiB
Python
"""假单后台管理 API。"""
|
|
from rest_framework.parsers import FormParser, JSONParser, MultiPartParser
|
|
from rest_framework.response import Response
|
|
from rest_framework.views import APIView
|
|
from rest_framework.permissions import IsAuthenticated
|
|
|
|
from backend.view import verify_kefu_permission
|
|
|
|
PRODUCT_PERMS = ('2200a',)
|
|
|
|
|
|
def _check_product_perm(request, phone):
|
|
kefu, permissions = verify_kefu_permission(request, phone)
|
|
if kefu is None:
|
|
return None, permissions
|
|
if not any(p in permissions for p in PRODUCT_PERMS):
|
|
return None, Response({'code': 403, 'msg': '无商品管理权限'})
|
|
return kefu, None
|
|
|
|
|
|
class FakeGrabOrderListView(APIView):
|
|
"""POST /jituan/houtai/fake-grab-order-list"""
|
|
permission_classes = [IsAuthenticated]
|
|
parser_classes = [JSONParser]
|
|
|
|
def post(self, request):
|
|
phone = (request.data.get('phone') or request.data.get('username') or '').strip()
|
|
if not phone:
|
|
return Response({'code': 401, 'msg': '缺少客服账号'})
|
|
_, err = _check_product_perm(request, phone)
|
|
if err:
|
|
return err
|
|
|
|
from jituan.services.fake_grab_order_admin import build_fake_order_list_payload
|
|
|
|
payload = build_fake_order_list_payload(
|
|
request,
|
|
leixing_id=request.data.get('leixing_id'),
|
|
page=request.data.get('page', 1),
|
|
page_size=request.data.get('page_size', 20),
|
|
)
|
|
return Response({'code': 0, 'data': payload})
|
|
|
|
|
|
class FakeGrabOrderManageView(APIView):
|
|
"""POST /jituan/houtai/fake-grab-order-manage action=create|update|delete"""
|
|
permission_classes = [IsAuthenticated]
|
|
parser_classes = [JSONParser]
|
|
|
|
def post(self, request):
|
|
phone = (request.data.get('phone') or request.data.get('username') or '').strip()
|
|
action = (request.data.get('action') or '').strip().lower()
|
|
if not phone:
|
|
return Response({'code': 401, 'msg': '缺少客服账号'})
|
|
_, err = _check_product_perm(request, phone)
|
|
if err:
|
|
return err
|
|
|
|
from jituan.services.fake_grab_order_admin import (
|
|
create_fake_order,
|
|
delete_fake_order,
|
|
update_fake_order,
|
|
)
|
|
|
|
if action == 'create':
|
|
data, err_msg = create_fake_order(request, request.data)
|
|
if err_msg:
|
|
return Response({'code': 400, 'msg': err_msg})
|
|
return Response({'code': 0, 'msg': '创建成功', 'data': data})
|
|
|
|
if action == 'update':
|
|
order_id = request.data.get('order_id') or request.data.get('dingdan_id')
|
|
data, err_msg = update_fake_order(request, order_id, request.data)
|
|
if err_msg:
|
|
return Response({'code': 400, 'msg': err_msg})
|
|
return Response({'code': 0, 'msg': '更新成功', 'data': data})
|
|
|
|
if action == 'delete':
|
|
order_id = request.data.get('order_id') or request.data.get('dingdan_id')
|
|
data, err_msg = delete_fake_order(request, order_id)
|
|
if err_msg:
|
|
return Response({'code': 400, 'msg': err_msg})
|
|
return Response({'code': 0, 'msg': '已删除', 'data': data})
|
|
|
|
return Response({'code': 400, 'msg': '无效的 action'})
|
|
|
|
|
|
class FakeGrabOrderAvatarUploadView(APIView):
|
|
"""POST /jituan/houtai/fake-grab-order-avatar"""
|
|
permission_classes = [IsAuthenticated]
|
|
parser_classes = [MultiPartParser, FormParser, JSONParser]
|
|
|
|
def post(self, request):
|
|
phone = (request.data.get('phone') or request.data.get('username') or '').strip()
|
|
order_id = (request.data.get('order_id') or request.data.get('dingdan_id') or '').strip()
|
|
file_obj = request.FILES.get('file')
|
|
if not phone:
|
|
return Response({'code': 401, 'msg': '缺少客服账号'})
|
|
_, err = _check_product_perm(request, phone)
|
|
if err:
|
|
return err
|
|
|
|
from jituan.services.fake_grab_order_admin import upload_fake_order_avatar
|
|
|
|
data, err_msg = upload_fake_order_avatar(request, order_id, file_obj)
|
|
if err_msg:
|
|
return Response({'code': 400, 'msg': err_msg})
|
|
return Response({'code': 0, 'msg': '上传成功', 'data': data})
|