Kaynağa Gözat

C520用户按钮推送

peng 1 yıl önce
ebeveyn
işleme
4807306664
2 değiştirilmiş dosya ile 92 ekleme ve 4 silme
  1. 77 4
      Controller/EquipmentManagerV3.py
  2. 15 0
      Model/models.py

+ 77 - 4
Controller/EquipmentManagerV3.py

@@ -19,7 +19,7 @@ from Controller.UnicomCombo.UnicomComboController import UnicomComboView
 from Controller.UnicomCombo.WXTechController import WXTechControllerView
 from Model.models import Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidChannelSetModel, \
     Device_User, iotdeviceInfoModel, UIDCompanySerialModel, UnicomDeviceInfo, CountryModel, \
-    DeviceCloudPhotoInfo, UidPushModel, ExperienceContextModel, LogModel
+    DeviceCloudPhotoInfo, UidPushModel, ExperienceContextModel, LogModel, UserAudioVideoPush
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
@@ -76,6 +76,10 @@ class EquipmentManagerV3(View):
             return self.do_get_device_features(request_dict, response)
         elif operation == 'deviceRouse':
             return self.device_rouse(request_dict, response)
+        elif operation == 'saveButtonUser':
+            return self.save_button_user(request_dict, response)
+        elif operation == 'getButtonUser':
+            return self.get_button_user(request_dict, response)
         else:
             return response.json(414)
 
@@ -302,9 +306,17 @@ class EquipmentManagerV3(View):
                         UidChannelSetModel.objects.bulk_create(UidChannelSet_bulk)
 
                 userDevice = Device_Info(id=id, userID_id=userID, UID=UID, NickName=NickName, View_Account=View_Account,
-                                         View_Password=View_Password, Type=Type, ChannelIndex=ChannelIndex, version=version,
+                                         View_Password=View_Password, Type=Type, ChannelIndex=ChannelIndex,
+                                         version=version,
                                          vodPrimaryUserID=vodPrimaryUserID, vodPrimaryMaster=vodPrimaryMaster)
                 userDevice.save()
+                # 保存用户推送按钮信息
+                button_qs = UserAudioVideoPush.objects.filter(uid=UID)
+                if button_qs.exists():
+                    button_qs.update(buttonUser1=userID, buttonUser2=userID)
+                else:
+                    UserAudioVideoPush.objects.create(uid=UID, buttonUser1=userID, buttonUser2=userID,
+                                                      created_time=nowTime, updated_time=nowTime)
                 # 添加到家庭房间
                 if family_id:
                     EquipmentFamilyView.family_room_device_save(family_id, room_id, userDevice.id, Type)
@@ -332,8 +344,9 @@ class EquipmentManagerV3(View):
                         if uid_channel_set_qs.exists():
                             # 多通道设备名为 UidChannelSetModel 的 channel_name
                             for uid_channel_set in uid_channel_set_qs:
-                                data_list.append({'userID': userID, 'UID': UID, 'uid_nick': uid_channel_set['channel_name'],
-                                                  'channel': uid_channel_set['channel'], 'password': encrypt_pass})
+                                data_list.append(
+                                    {'userID': userID, 'UID': UID, 'uid_nick': uid_channel_set['channel_name'],
+                                     'channel': uid_channel_set['channel'], 'password': encrypt_pass})
                     else:
                         data_list = [{'userID': userID, 'UID': UID, 'uid_nick': NickName, 'password': encrypt_pass}]
 
@@ -1161,3 +1174,63 @@ class EquipmentManagerV3(View):
         except Exception as e:
             LOGGER.info('EquipmentManagerV3.async_del_message,{},error_line:{}, error_msg:{}'
                         .format(uid, e.__traceback__.tb_lineno, repr(e)))
+
+    @staticmethod
+    def save_button_user(request_dict, response):
+        """
+        设置推送按钮用户
+        """
+        uid = request_dict.get('uid', None)
+        button_user1 = request_dict.get('buttonUser1', None)
+        button_user2 = request_dict.get('buttonUser2', None)
+        if not uid:
+            return response.json(444)
+        try:
+            now_time = int(time.time())
+            if button_user1:
+                button_qs = UserAudioVideoPush.objects.filter(uid=uid)
+                if button_qs.exists():
+                    button_qs.update(buttonUser1=button_user1, updated_time=now_time)
+                else:
+                    UserAudioVideoPush.objects.create(uid=uid, buttonUser1=button_user1, created_time=now_time,
+                                                      updated_time=now_time)
+            if button_user2:
+                button_qs = UserAudioVideoPush.objects.filter(uid=uid)
+                if button_qs.exists():
+                    button_qs.update(buttonUser2=button_user2, updated_time=now_time)
+                else:
+                    UserAudioVideoPush.objects.create(uid=uid, buttonUser2=button_user2, created_time=now_time,
+                                                      updated_time=now_time)
+            return response.json(0)
+        except Exception as e:
+            return response.json(500, repr(e))
+
+    @staticmethod
+    def get_button_user(request_dict, response):
+        """
+        获取推送按钮用户
+        """
+        uid = request_dict.get('uid', None)
+        if not uid:
+            return response.json(444)
+        try:
+            device_qs = Device_Info.objects.filter(UID=uid).values('userID', 'userID__username', 'noteName')
+            button_qs = UserAudioVideoPush.objects.filter(uid=uid).values('buttonUser1', 'buttonUser2')
+            res = []
+            for item in device_qs:
+                noteName = item['noteName'] if item['noteName'] else item['userID__username']
+                temp_dict = {'userId': item['userID'], 'username': item['userID__username'],
+                             'noteName': noteName}
+                if not button_qs.exists():
+                    res.append(temp_dict)
+                    continue
+                if item['userID'] == button_qs[0]['buttonUser1']:
+                    temp_dict['audioVideoButton'] = '1'
+                if item['userID'] == button_qs[0]['buttonUser2']:
+                    temp_dict['audioVideoButton'] = '2'
+                if item['userID'] == button_qs[0]['buttonUser1'] and item['userID'] == button_qs[0]['buttonUser2']:
+                    temp_dict['audioVideoButton'] = '1,2'
+                res.append(temp_dict)
+            return response.json(0, res)
+        except Exception as e:
+            return response.json(500, repr(e))

+ 15 - 0
Model/models.py

@@ -266,6 +266,8 @@ class Device_Info(models.Model):
     isExist = models.SmallIntegerField(blank=True, default=1, verbose_name='是否被删除')  # 是否被删除了(需主用户交互) 1存在,0不存在,2设备被重置
     isCameraOpenCloud = models.SmallIntegerField(blank=True, default=1, verbose_name='是否开启云存')  # 0:不开启  1:开启
     serial_number = models.CharField(blank=True, max_length=9, default='', verbose_name='关联序列号')
+    # 分享用户备注名
+    noteName = models.CharField(max_length=64, verbose_name=u'用户备注名', default='', blank=True)
     ###
     REQUIRED_FIELDS = []
 
@@ -4872,6 +4874,19 @@ class UserEmailSubscriptions(models.Model):
         verbose_name = '用户邮件订阅记录表'
 
 
+class UserAudioVideoPush(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name='主键')
+    uid = models.CharField(default='', max_length=32, verbose_name='设备UID')
+    buttonUser1 = models.CharField(default='', max_length=32, verbose_name='用户按钮1')
+    buttonUser2 = models.CharField(default='', max_length=32, verbose_name='用户按钮2')
+    created_time = models.IntegerField(default=0, verbose_name='创建时间')
+    updated_time = models.IntegerField(default=0, verbose_name='更新时间')
+
+    class Meta:
+        db_table = 'user_audio_video_push'
+        verbose_name = '用户音视频推送表'
+
+
 class SerialNumberCheckLog(models.Model):
     id = models.AutoField(primary_key=True, verbose_name='自增id')
     serial_number = models.CharField(blank=True, db_index=True, max_length=20, default='',