|
|
@@ -6,9 +6,10 @@ import time
|
|
|
from .serializers import SearchEquipSerializer, DeviceListSerializer, DeviceDetailSerializer
|
|
|
from utils.utils import get_equip_list
|
|
|
from utils.JWTAuthentication_diy import MyJWTAuthentication
|
|
|
-from utils.permissions import ModulePermission, DeviceDetailPermission
|
|
|
+from utils.permissions import ModulePermission, DeviceDetailPermission, AccessPermission
|
|
|
from utils.MyRateThrottle import DeviceListRateThrottle, DeviceDetailRateThrottle
|
|
|
-
|
|
|
+from utils.paginations import CustomPagination
|
|
|
+from utils.db_utils import MongoDBTools
|
|
|
from .models import Device, QXZData
|
|
|
|
|
|
|
|
|
@@ -113,3 +114,51 @@ class DeviceDetail(GenericAPIView):
|
|
|
device_queryset = self.get_queryset().filter(device_id_id=deviceId, add_time__gt=start_time)
|
|
|
serializer = self.get_serializer(instance=device_queryset, many=True)
|
|
|
return Response(serializer.data)
|
|
|
+
|
|
|
+
|
|
|
+def get_page_or_page_size(request):
|
|
|
+ try:
|
|
|
+ page = int(request.query_params['page']) - 1
|
|
|
+ if page < 0:
|
|
|
+ page = 0
|
|
|
+ except Exception as e:
|
|
|
+ page = 0
|
|
|
+
|
|
|
+ try:
|
|
|
+ page_size = int(request.query_params['page_size'])
|
|
|
+ if page_size < 0:
|
|
|
+ page_size = 10
|
|
|
+ except Exception as e:
|
|
|
+ page_size = 10
|
|
|
+ return page, page_size
|
|
|
+
|
|
|
+
|
|
|
+class QxzDeviceListView(APIView):
|
|
|
+ permission_classes = [AccessPermission]
|
|
|
+
|
|
|
+ def get(self, request, *args, **kwargs):
|
|
|
+ """获取气象站设备列表接口"""
|
|
|
+ uid = request.uid
|
|
|
+ wheres = {
|
|
|
+ '$or': [
|
|
|
+ {'owner_uid': uid},
|
|
|
+ {'user_dealer': uid}
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ project = {
|
|
|
+ 'device_id': '$device_id',
|
|
|
+ 'uptime': '$uptime',
|
|
|
+ 'device_status': '$device_status',
|
|
|
+ 'lng': '$lng',
|
|
|
+ 'lat': '$lat'
|
|
|
+ }
|
|
|
+ page, page_size = get_page_or_page_size(request)
|
|
|
+ skip, limit = page * page_size, page_size
|
|
|
+ m = MongoDBTools(db_name='smartfarming', table_name='sa_device')
|
|
|
+ data = m.find_many(wheres=wheres, options=project, skip=skip, limit=limit)
|
|
|
+ result = []
|
|
|
+ for item in data:
|
|
|
+ result.append(item)
|
|
|
+ return Response(result)
|
|
|
+
|
|
|
+
|