Browse Source

新增AI推送关联云存信息

zhangdongming 2 năm trước cách đây
mục cha
commit
5f2733ba68
3 tập tin đã thay đổi với 89 bổ sung2 xóa
  1. 32 2
      Controller/AiController.py
  2. 26 0
      Model/models.py
  3. 31 0
      Object/enums/MessageTypeEnum.py

+ 32 - 2
Controller/AiController.py

@@ -8,10 +8,11 @@ import time
 from django.views.generic.base import View
 
 from AnsjerPush.config import BASE_DIR
-from Model.models import UidPushModel, AiService, Device_Info
+from Model.models import UidPushModel, AiService, Device_Info, VodHlsTag, VodHlsTagType
 from Object.AiImageObject import ImageProcessingObject
 from Object.ETkObject import ETkObject
 from Object.ResponseObject import ResponseObject
+from Object.enums.MessageTypeEnum import MessageTypeEnum
 from Object.utils import LocalDateTimeUtil
 from Object.utils.AmazonRekognitionUtil import AmazonRekognitionUtil
 from Service.CommonService import CommonService
@@ -199,7 +200,7 @@ class AiView(View):
                 except Exception as e:
                     logger.info('ai推送消息异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
                     continue
-
+            AiView.save_cloud_ai_tag(uid, int(n_time), event_type)
             week = LocalDateTimeUtil.date_to_week(local_date_time)
             EquipmentInfoService.equipment_info_bulk_create(week, eq_list)
             return response.json(0)
@@ -211,3 +212,32 @@ class AiView(View):
                 'errMsg': repr(e)
             }
             return response.json(48, data)
+
+    @classmethod
+    def save_cloud_ai_tag(cls, uid, event_time, types):
+        """
+        保存云存AI标签
+        """
+        try:
+            types = str(types)
+            if not types:
+                return False
+            n_time = int(time.time())
+            vod_hls_tag = {"uid": uid, "ai_event_time": event_time, "created_time": n_time}
+            vod_tag_vo = VodHlsTag.objects.create(**vod_hls_tag)
+            tag_list = []
+            if len(types) > 1:
+                for i in range(1, len(types) + 1):
+                    ai_type = MessageTypeEnum(int(types[i - 1:i]))
+                    vod_tag_type_vo = VodHlsTagType(tag_id=vod_tag_vo.id, created_time=n_time, type=ai_type.value)
+                    tag_list.append(vod_tag_type_vo)
+            else:
+                ai_type = MessageTypeEnum(int(types))
+                vod_tag_type_vo = {"tag_id": vod_tag_vo.id, "created_time": n_time, "type": ai_type.value}
+                VodHlsTagType.objects.create(**vod_tag_type_vo)
+            if tag_list:
+                VodHlsTagType.objects.bulk_create(tag_list)
+            return True
+        except Exception as e:
+            print('AI标签存储异常详情,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            return False

+ 26 - 0
Model/models.py

@@ -2468,3 +2468,29 @@ class DeviceTypeSharePermission(models.Model):
         db_table = 'device_type_share_permission'
         verbose_name = '设备类型关联分享权限'
         verbose_name_plural = verbose_name
+
+
+class VodHlsTag(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name='自增id')
+    uid = models.CharField(blank=True, db_index=True, max_length=32, verbose_name=u'设备UID')
+    vod_hls_id = models.IntegerField(default=0, db_index=True, verbose_name='云存hlsId')
+    tab_num = models.SmallIntegerField(default=0, verbose_name='所在表编号')
+    ai_event_time = models.IntegerField(default=0, db_index=True, verbose_name='ai事件事件')
+    created_time = models.IntegerField(default=0, verbose_name='创建时间')
+
+    class Meta:
+        db_table = 'vod_hls_tag'
+        verbose_name = '云存hls标签'
+        verbose_name_plural = verbose_name
+
+
+class VodHlsTagType(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name='自增id')
+    tag_id = models.IntegerField(default=0, db_index=True, verbose_name='云存关联AI标签ID')
+    type = models.SmallIntegerField(default=0, db_index=True, verbose_name='标签类型')
+    created_time = models.IntegerField(default=0, verbose_name='创建时间')
+
+    class Meta:
+        db_table = 'vod_hls_tag_type'
+        verbose_name = '云存hls关联标签类型'
+        verbose_name_plural = verbose_name

+ 31 - 0
Object/enums/MessageTypeEnum.py

@@ -0,0 +1,31 @@
+# -*- encoding: utf-8 -*-
+"""
+@File    : MessageTypeEnum.py
+@Time    : 2023/2/13 15:50
+@Author  : stephen
+@Email   : zhangdongming@asj6.wecom.work
+@Software: PyCharm
+"""
+from enum import IntEnum, unique
+
+
+@unique
+class MessageTypeEnum(IntEnum):
+    AI_HUMAN_SHAPE = 1  # ai人形
+    AI_CAT = 2  # ai车型
+    AI_PET = 3  # ai宠物
+    AI_PARCEL = 4  # ai包裹
+    MOTION_DETECTION = 51  # 移动侦测
+    SENSOR_ALARM = 52  # 传感器报警
+    IMAGE_LOSS = 53  # 影像遗失
+    PIR = 54  # PIR
+    DOOR_MAGNETIC_ALARM = 55  # 门磁报警
+    EXTERNAL_TRANSMISSION = 56  # 外部发报
+    HUMAN_SHAPE = 57  # 人形报警
+    CAT = 58  # 车型
+    PET = 59  # 宠物
+    FACE = 60  # 人脸
+    ABNORMAL_SOUND = 61  # 异响
+    CAMERA_SLEEP = 702  # 摄像头休眠
+    CAMERA_WAKE_UP = 703  # 摄像头唤醒
+    LOW_BATTERY = 704  # 电量过低