diff --git a/apps/third/urls.py b/apps/third/urls.py index 17163ce6..cea101f5 100755 --- a/apps/third/urls.py +++ b/apps/third/urls.py @@ -1,7 +1,7 @@ from email.mime import base from django.urls import path, include from rest_framework import routers -from apps.third.views import DahuaTestView, DhCommonViewSet, SpTestView, SpeakerViewSet, XxCommonViewSet, XxTestView +from apps.third.views import DahuaTestView, DhCommonViewSet, SpTestView, SpeakerViewSet, XxCommonViewSet, XxTestView, KingCommonViewSet from apps.third.views_d import BltViewSet, TDeviceViewSet, TlogViewSet API_BASE_URL = 'api/third/' @@ -14,6 +14,7 @@ router.register('speaker', SpeakerViewSet, basename='api_speaker') router.register('tdevice', TDeviceViewSet, basename='tdevice') router.register('tlog', TlogViewSet, basename='tlog') router.register('tdevice/blt', BltViewSet, basename='blt') +router.register('king', KingCommonViewSet, basename='king') # router.register('doorauth', DoorAuthViewSet, basename='doorauth') urlpatterns = [ path(API_BASE_URL, include(router.urls)), diff --git a/apps/third/views.py b/apps/third/views.py index 8a8571c9..3e1c4937 100755 --- a/apps/third/views.py +++ b/apps/third/views.py @@ -4,6 +4,8 @@ from rest_framework.exceptions import ParseError, APIException from apps.ecm.service import dispatch_dahua_event, handle_xx_event, loc_change, rail_in, rail_out from apps.hrm.services import HrmService from apps.third.tapis import dhapis, xxapis, spapis +from apps.third.king.king_api import kapis +from apps.third.king.k import kingClient from apps.third.errors import TAPI_CODE_WRONG from apps.third.dahua import dhClient from apps.third.xunxi import xxClient @@ -134,12 +136,12 @@ class XxCommonViewSet(CreateModelMixin, CustomGenericViewSet): serializer.is_valid(raise_exception=True) vdata = serializer.validated_data if vdata.get('code', ''): - xxapi = xxapis.get(vdata['code'], None) - if xxapi is None: - raise ParseError(**TAPI_CODE_WRONG) - vdata['url'] = xxapi['url'] - vdata['method'] = xxapi['method'] - _, res = xxClient.request( + kapi = kapis.get(vdata['code'], None) + if kapi is None: + raise ParseError("code不存在") + vdata['url'] = kapi['url'] + vdata['method'] = kapi['method'] + _, res = kingClient.request( url=vdata['url'], method=vdata.get('method', 'post'), params=vdata.get('params', {}), @@ -226,6 +228,33 @@ class XxCommonViewSet(CreateModelMixin, CustomGenericViewSet): return Response() +class KingCommonViewSet(CreateModelMixin, CustomGenericViewSet): + perms_map = {'post': '*'} + serializer_class = RequestCommonSerializer + permission_classes = [IsAdminUser] + + def create(self, request, *args, **kwargs): + """ + 亚控通用调用接口 + + 亚控通用调用接口 + """ + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + vdata = serializer.validated_data + if vdata.get('code', ''): + xxapi = dhapis.get(vdata['code'], None) + if xxapi is None: + raise ParseError(**TAPI_CODE_WRONG) + vdata['url'] = xxapi['url'] + vdata['method'] = xxapi['method'] + _, res = dhClient.request( + url=vdata['url'], + method=vdata.get('method', 'post'), + params=vdata.get('params', {}), + json=vdata.get('json', {})) + return Response(res) + class DhCommonViewSet(CreateModelMixin, CustomGenericViewSet): perms_map = {'post': '*'} serializer_class = RequestCommonSerializer