diff --git a/apps/third/serializers.py b/apps/third/serializers.py index 776bcbab..9c2a422f 100755 --- a/apps/third/serializers.py +++ b/apps/third/serializers.py @@ -68,3 +68,9 @@ class BltSerializer(serializers.ModelSerializer): class Meta: model = TDevice fields = ['code', 'obj_cate', 'employee', 'employee_'] + + +class BltQuerySerializer(serializers.ModelSerializer): + class Meta: + model = TDevice + fields = ['area'] diff --git a/apps/third/views_d.py b/apps/third/views_d.py index 6f0ff028..578b994c 100644 --- a/apps/third/views_d.py +++ b/apps/third/views_d.py @@ -1,5 +1,5 @@ from apps.third.models import TDevice, Tlog -from apps.third.serializers import BindAreaSerializer, BltSerializer, LabelLocationSerializer, TDeviceSerializer, TlogSerializer +from apps.third.serializers import BindAreaSerializer, BltQuerySerializer, BltSerializer, LabelLocationSerializer, TDeviceSerializer, TlogSerializer from apps.utils.viewsets import CustomGenericViewSet from rest_framework.mixins import ListModelMixin, CreateModelMixin from apps.third.clients import xxClient, dhClient, spClient @@ -9,6 +9,7 @@ from rest_framework.serializers import Serializer from rest_framework.decorators import action from apps.am.models import Area from rest_framework.views import APIView +from rest_framework.exceptions import ParseError class BltViewSet(CustomGenericViewSet): @@ -58,18 +59,31 @@ class BltViewSet(CustomGenericViewSet): ret['count_visitor'] = qs.filter(employee__type='visitor').count() return Response(ret) - @action(methods=['get'], detail=False, perms_map={'get': '*'}) - def all(self, request): - """全部在线标签列表信息 + @action(methods=['post'], detail=False, perms_map={'post': '*'}, + serializer_class=BltQuerySerializer) + def query(self, request): + """在线标签列表信息 - 全部在线标签列表信息 + 在线标签列表信息 """ - json = { - "pageNum": 1, - "numPerPage": 2000, - "online": "online" - } - _, res = xxClient.request(**xxapis['blt_list'], json=json) + data = request.data + if data.get('area', None): + try: + railId = Area.objects.get(id=data['area']).third_info['xx_rail']['id'] + except Exception: + raise ParseError('区域信息不正确') + json = { + "railId": railId, + "type": "" + } + _, res = xxClient.request(**xxapis['rail_ibeacon_list'], json=json) + else: + json = { + "pageNum": 1, + "numPerPage": 2000, + "online": "online" + } + _, res = xxClient.request(**xxapis['blt_list'], json=json) blt_list = res['recordList'] macs = [] for i in blt_list: