|
@@ -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})
|