Эх сурвалжийг харах

新增查询AI数据列表接口

locky 3 жил өмнө
parent
commit
155ab1a8a7

+ 78 - 0
Controller/AiController.py

@@ -102,6 +102,8 @@ class AiView(View):
                 return self.do_commodity_list(userID, request_dict, response)
             elif operation == 'identification':  # ai识别
                 return self.do_ai_identification(request_dict, response)
+            elif operation == 'queryInfo':  # 查询消息列表
+                return self.queryInfo(userID, request_dict, response)
             else:
                 return response.json(414)
 
@@ -639,3 +641,79 @@ class AiView(View):
             print(repr(e))
             logger.info(repr(e))
             return repr(e)
+
+    def queryInfo(self, userID, request_dict, response):
+        page = int(request_dict.get('page', None))
+        line = int(request_dict.get('line', None))
+        if not page or not line:
+            return response.json(444, 'page,line')
+        startTime = request_dict.get('startTime', None)
+        endTime = request_dict.get('endTime', None)
+        eventType = request_dict.get('eventType', None)
+
+        now_time = int(time.time())
+        seven_days_ago = now_time - 7 * 24 * 3600   # 查询7天内的数据
+        qs = Ai_Push_Info.objects.filter(userID_id=userID, eventTime__gt=seven_days_ago).order_by('-eventTime')
+
+        if startTime and endTime:
+            qs = qs.filter(eventTime__range=(startTime, endTime))
+        if eventType:
+            qs = qs.filter(eventType=eventType)
+        uids = request_dict.get('uids', None)
+        if uids:
+            uid_list = uids.split(',')
+            qs = qs.filter(devUid__in=uid_list)
+            dvqs = Device_Info.objects.filter(UID__in=uid_list, userID_id=userID).values('UID', 'Type', 'NickName')
+            uid_type_dict = {}
+            for dv in dvqs:
+                uid_type_dict[dv['UID']] = {'type': dv['Type'], 'NickName': dv['NickName']}
+        else:
+            dvqs = Device_Info.objects.filter(userID_id=userID).values('UID', 'Type', 'NickName')
+            uid_type_dict = {}
+            for dv in dvqs:
+                uid_type_dict[dv['UID']] = {'type': dv['Type'], 'NickName': dv['NickName']}
+
+        if not qs.exists():
+            return response.json(0, {'datas': [], 'count': 0})
+
+        count = qs.count()
+        qs = qs.values('id', 'devUid', 'devNickName', 'Channel', 'eventType', 'status', 'alarm', 'eventTime',
+                       'receiveTime', 'is_st', 'addTime', 'storage_location')
+
+        qs = qs[(page - 1) * line:page * line]
+        res = []
+
+        aws_s3_client = boto3.client(
+            's3',
+            aws_access_key_id=AWS_ACCESS_KEY_ID[0],
+            aws_secret_access_key=AWS_SECRET_ACCESS_KEY[0],
+            config=botocore.client.Config(signature_version='s3v4'),
+            region_name='cn-northwest-1'
+        )
+
+        for p in qs:
+            devUid = p['devUid']
+            eventTime = p['eventTime']
+            channel = p['Channel']
+            storage_location = p['storage_location']
+            if p['is_st'] == 1:
+                s3_img = '{uid}/{channel}/desc{time}.jpg'.format(uid=devUid, channel=channel, time=eventTime)
+                response_url = aws_s3_client.generate_presigned_url('get_object',
+                                                                    ExpiresIn=300,
+                                                                    Params={
+                                                                        'Bucket': 'aipush', 'Key': s3_img
+                                                                    },
+                                                                    )
+                p['img'] = response_url
+                p['img_list'] = [response_url]
+
+            elif p['is_st'] == 2:
+                pass
+
+            if devUid in uid_type_dict.keys():
+                p['uid_type'] = uid_type_dict[devUid]['type']
+                p['devNickName'] = uid_type_dict[devUid]['NickName']
+            else:
+                p['uid_type'] = ''
+            res.append(p)
+        return response.json(0, {'datas': res, 'count': count})