diff --git a/apps/third/models.py b/apps/third/models.py index 4c98f6c3..b457eef5 100755 --- a/apps/third/models.py +++ b/apps/third/models.py @@ -40,12 +40,16 @@ class TDevice(BaseModel): areas = models.ManyToManyField(Area, verbose_name='覆盖区', related_name='tareas') obj_cate = models.CharField('绑定对象', max_length=20, help_text='people/...', null=True, blank=True) - employee = models.ForeignKey(Employee, verbose_name='绑定人员', on_delete=models.CASCADE, null=True, blank=True) + employee = models.ForeignKey(Employee, verbose_name='当前绑定人员', on_delete=models.CASCADE, null=True, blank=True) is_clock = models.BooleanField('是否打卡设备', default=False) third_info = models.JSONField('三方信息', default=dict, null=False, blank=True) +class BltRecord(BaseModel): + pass + + class Tlog(BaseModel): """第三方请求与处理日志 """ diff --git a/apps/third/serializers.py b/apps/third/serializers.py index e600fe92..18415e65 100755 --- a/apps/third/serializers.py +++ b/apps/third/serializers.py @@ -59,3 +59,10 @@ class TlogSerializer(CustomModelSerializer): class Meta: model = Tlog fields = '__all__' + + + +class BltQuerySerializer(serializers.Serializer): + """标签复杂查询 + """ + areas = serializers.ListField(child=serializers.CharField(), label='区域ID列表') \ No newline at end of file diff --git a/apps/third/urls.py b/apps/third/urls.py index b1c5c934..ae34d3d8 100755 --- a/apps/third/urls.py +++ b/apps/third/urls.py @@ -12,7 +12,7 @@ router.register('xunxi', XxCommonViewSet, basename='api_xunxi') router.register('dahua', DhCommonViewSet, basename='api_dahua') router.register('tdevice', TDeviceViewSet, basename='tdevice') router.register('tlog', TlogViewSet, basename='tlog') -router.register('tdevice/blt', BltViewSet, basename='blt') +router.register('blt', BltViewSet, basename='blt') urlpatterns = [ path(API_BASE_URL, include(router.urls)), path(API_BASE_URL + 'dahua/test/', DahuaTestView.as_view()), diff --git a/apps/third/views_d.py b/apps/third/views_d.py index 488864fb..8f21e269 100644 --- a/apps/third/views_d.py +++ b/apps/third/views_d.py @@ -11,15 +11,26 @@ from apps.am.models import Area from rest_framework.views import APIView -class BltViewSet(CreateModelMixin, CustomGenericViewSet): +class BltViewSet(CustomGenericViewSet): """定位标签列表 定位标签列表 """ queryset = TDevice.objects.filter(type=TDevice.DEVICE_BLT) serializer_class = TDeviceSerializer - select_related_fields = ['employee'] - ordering = ['-create_time'] + + @action(methods=['get'], detail=False, perms_map={'get': '*'}) + def count_people_bind(self, request): + """统计绑定人员数 + + 统计绑定人员数 + """ + qs = self.queryset.exclude(employee=None) + ret = {} + ret['count_employee'] = qs.filter(employee__type='employee').count() + ret['count_remployee'] = qs.filter(employee__type='remployee').count() + ret['count_visitor'] = qs.filter(employee__type='visitor').count() + return Response(ret) class TDeviceViewSet(ListModelMixin, CustomGenericViewSet):