|
@@ -5,6 +5,7 @@ import time
|
|
|
import boto3
|
|
|
import botocore
|
|
|
import oss2
|
|
|
+import redis
|
|
|
from botocore import client
|
|
|
from django.http import JsonResponse
|
|
|
from django.views.generic.base import View
|
|
@@ -12,6 +13,7 @@ from django.views.generic.base import View
|
|
|
from Ansjer.config import DETECT_PUSH_DOMAIN, DETECT_PUSH_DOMAINS, DETECT_PUSH_DOMAIN_JIUAN, DETECT_PUSH_DOMAINS_JIUAN, \
|
|
|
OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, LOGGER, ALGORITHM_COMBO_TYPES
|
|
|
from Ansjer.config import PUSH_BUCKET, CONFIG_INFO, CONFIG_CN, CONFIG_EUR, CONFIG_US
|
|
|
+from Ansjer.config import PUSH_REDIS_ADDRESS
|
|
|
from Model.models import Device_Info, Equipment_Info, UidSetModel, UidPushModel, CompanyModel, SysMsgModel, \
|
|
|
AiService, VodBucketModel
|
|
|
from Object.ETkObject import ETkObject
|
|
@@ -23,8 +25,6 @@ from Object.utils import LocalDateTimeUtil
|
|
|
from Service.CommonService import CommonService
|
|
|
from Service.EquipmentInfoService import EquipmentInfoService
|
|
|
from Service.VodHlsService import SplitVodHlsObject
|
|
|
-import redis
|
|
|
-from Ansjer.config import PUSH_REDIS_ADDRESS
|
|
|
|
|
|
|
|
|
class DetectControllerViewV2(View):
|
|
@@ -528,46 +528,26 @@ class DetectControllerViewV2(View):
|
|
|
|
|
|
# redis_obj,is_st,storage_location,uid,channel,event_type,event_time,event_tag)
|
|
|
def get_redis_url(self, **params):
|
|
|
- oss_img_bucket = params['oss_img_bucket']
|
|
|
-
|
|
|
- # 国内生产环境默认不实例OCI对象
|
|
|
- oci = self.get_oci_client()
|
|
|
- uid = params['uid']
|
|
|
- is_st = params['is_st']
|
|
|
- storage_location = params['storage_location']
|
|
|
- region = params['region']
|
|
|
- aws_s3 = params['aws_s3']
|
|
|
- aws_s3_cn = params['aws_s3_cn']
|
|
|
- redis_obj = params['redis_obj']
|
|
|
- channel = params['channel']
|
|
|
- event_time = params['event_time']
|
|
|
- img_list = []
|
|
|
- img_url = ''
|
|
|
- if is_st == 1:
|
|
|
- thumbspng = '{}/{}/{}.jpeg'.format(uid, channel, event_time)
|
|
|
- if storage_location == 1: # 阿里云oss
|
|
|
- img_url = oss_img_bucket.sign_url('GET', thumbspng, 300)
|
|
|
- elif storage_location in [3, 4]:
|
|
|
- prefix_name = f'{uid}/'
|
|
|
- img_url = DetectControllerViewV2.oci_object_url(oci, redis_obj, uid, prefix_name)
|
|
|
- if img_url:
|
|
|
- img_url = img_url + thumbspng
|
|
|
- else:
|
|
|
- params = {'Key': thumbspng}
|
|
|
- if region == 1: # AWS国外
|
|
|
- params['Bucket'] = 'foreignpush'
|
|
|
- img_url = aws_s3.generate_presigned_url(
|
|
|
- 'get_object', Params=params, ExpiresIn=300)
|
|
|
- else: # AWS国内
|
|
|
- params['Bucket'] = 'push'
|
|
|
- img_url = aws_s3_cn.generate_presigned_url(
|
|
|
- 'get_object', Params=params, ExpiresIn=300)
|
|
|
- img_list = [img_url]
|
|
|
- elif is_st == 3 or is_st == 4:
|
|
|
- # 列表装载回放时间戳标记
|
|
|
+ try:
|
|
|
+ oss_img_bucket = params['oss_img_bucket']
|
|
|
+
|
|
|
+ # 国内生产环境默认不实例OCI对象
|
|
|
+ oci = self.get_oci_client()
|
|
|
+ uid = params['uid']
|
|
|
+ is_st = params['is_st']
|
|
|
+ storage_location = params['storage_location']
|
|
|
+ region = params['region']
|
|
|
+ aws_s3 = params['aws_s3']
|
|
|
+ aws_s3_cn = params['aws_s3_cn']
|
|
|
+ redis_obj = params['redis_obj']
|
|
|
+ channel = params['channel']
|
|
|
+ event_time = params['event_time']
|
|
|
+ event_type = int(params['event_type'])
|
|
|
+ event_tag = params['event_tag']
|
|
|
img_list = []
|
|
|
- for i in range(is_st):
|
|
|
- thumbspng = '{}/{}/{}_{}.jpeg'.format(uid, channel, event_time, i)
|
|
|
+ img_url = ''
|
|
|
+ if is_st == 1:
|
|
|
+ thumbspng = '{}/{}/{}.jpeg'.format(uid, channel, event_time)
|
|
|
if storage_location == 1: # 阿里云oss
|
|
|
img_url = oss_img_bucket.sign_url('GET', thumbspng, 300)
|
|
|
elif storage_location in [3, 4]:
|
|
@@ -577,38 +557,65 @@ class DetectControllerViewV2(View):
|
|
|
img_url = img_url + thumbspng
|
|
|
else:
|
|
|
params = {'Key': thumbspng}
|
|
|
- if region == 1: # 国外AWS
|
|
|
+ if region == 1: # AWS国外
|
|
|
params['Bucket'] = 'foreignpush'
|
|
|
img_url = aws_s3.generate_presigned_url(
|
|
|
'get_object', Params=params, ExpiresIn=300)
|
|
|
- else: # 国内AWS
|
|
|
+ else: # AWS国内
|
|
|
params['Bucket'] = 'push'
|
|
|
img_url = aws_s3_cn.generate_presigned_url(
|
|
|
'get_object', Params=params, ExpiresIn=300)
|
|
|
- img_list.append(img_url)
|
|
|
- ai_event_type_list = EquipmentInfoService.get_combo_types(params['event_type'], params['event_tag'])
|
|
|
- msg_data = {
|
|
|
- "id": "",
|
|
|
- "status": False,
|
|
|
- "answer_status": False,
|
|
|
- "alarm": "",
|
|
|
- "is_st": params['is_st'],
|
|
|
- "storage_location": params['storage_location'],
|
|
|
- "devUid": uid,
|
|
|
- "devNickName": "",
|
|
|
- "Channel": params['channel'],
|
|
|
- "eventType": params['event_type'],
|
|
|
- "eventTime": params['event_time'],
|
|
|
- "receiveTime": "",
|
|
|
- "addTime": 0,
|
|
|
- "borderCoords": "",
|
|
|
- "eventTag": params['event_tag'],
|
|
|
- "img": img_url,
|
|
|
- "img_list": img_list,
|
|
|
- "uid_type": 0,
|
|
|
- "ai_event_type_list": ai_event_type_list
|
|
|
- }
|
|
|
- return msg_data
|
|
|
+ img_list = [img_url]
|
|
|
+ elif is_st == 3 or is_st == 4:
|
|
|
+ # 列表装载回放时间戳标记
|
|
|
+ img_list = []
|
|
|
+ for i in range(is_st):
|
|
|
+ thumbspng = '{}/{}/{}_{}.jpeg'.format(uid, channel, event_time, i)
|
|
|
+ if storage_location == 1: # 阿里云oss
|
|
|
+ img_url = oss_img_bucket.sign_url('GET', thumbspng, 300)
|
|
|
+ elif storage_location in [3, 4]:
|
|
|
+ prefix_name = f'{uid}/'
|
|
|
+ img_url = DetectControllerViewV2.oci_object_url(oci, redis_obj, uid, prefix_name)
|
|
|
+ if img_url:
|
|
|
+ img_url = img_url + thumbspng
|
|
|
+ else:
|
|
|
+ params = {'Key': thumbspng}
|
|
|
+ if region == 1: # 国外AWS
|
|
|
+ params['Bucket'] = 'foreignpush'
|
|
|
+ img_url = aws_s3.generate_presigned_url(
|
|
|
+ 'get_object', Params=params, ExpiresIn=300)
|
|
|
+ else: # 国内AWS
|
|
|
+ params['Bucket'] = 'push'
|
|
|
+ img_url = aws_s3_cn.generate_presigned_url(
|
|
|
+ 'get_object', Params=params, ExpiresIn=300)
|
|
|
+ img_list.append(img_url)
|
|
|
+ ai_event_type_list = EquipmentInfoService.get_combo_types(event_type, event_tag)
|
|
|
+ msg_data = {
|
|
|
+ "id": "",
|
|
|
+ "status": False,
|
|
|
+ "answer_status": False,
|
|
|
+ "alarm": "",
|
|
|
+ "is_st": is_st,
|
|
|
+ "storage_location": storage_location,
|
|
|
+ "devUid": uid,
|
|
|
+ "devNickName": "",
|
|
|
+ "Channel": channel,
|
|
|
+ "eventType": event_type,
|
|
|
+ "eventTime": event_time,
|
|
|
+ "receiveTime": 0,
|
|
|
+ "addTime": 0,
|
|
|
+ "borderCoords": "",
|
|
|
+ "eventTag": event_tag,
|
|
|
+ "img": img_url,
|
|
|
+ "img_list": img_list,
|
|
|
+ "uid_type": 0,
|
|
|
+ "ai_event_type_list": ai_event_type_list
|
|
|
+ }
|
|
|
+ return msg_data
|
|
|
+ except Exception as e:
|
|
|
+ LOGGER.error('消息跳转异常:, errLine:{}, errMsg:{}'
|
|
|
+ .format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+ return []
|
|
|
|
|
|
def do_transfer(self, request_dict, response, userID):
|
|
|
event_time = request_dict.get('eventTime', None)
|
|
@@ -648,6 +655,7 @@ class DetectControllerViewV2(View):
|
|
|
|
|
|
if msg_data:
|
|
|
msg_dict = json.loads(msg_data)
|
|
|
+ LOGGER.info(f'缓存数据:{msg_dict}')
|
|
|
params = {'redis_obj': redis_obj, 'is_st': msg_dict['is_st'], 'region': region, 'aws_s3': aws_s3,
|
|
|
'storage_location': msg_dict['storage_location'], 'aws_s3_cn': aws_s3_cn,
|
|
|
'uid': uid, 'channel': channel, 'event_type': event_type, 'oss_img_bucket': oss_img_bucket,
|