peng 1 жил өмнө
parent
commit
9d4bfc7e9d

+ 2 - 1
Controller/DetectControllerV2.py

@@ -49,6 +49,7 @@ class NotificationV2View(View):
         electricity = request_dict.get('electricity', '')
         dealings_type = int(request_dict.get('dealingsType', 0))
         detection = int(request_dict.get('detection', 0))
+        button = request_dict.get('button', '1')
 
         # 参数校验
         if not all([channel, n_time]):
@@ -81,7 +82,7 @@ class NotificationV2View(View):
             redis_obj.set_data(key=req_limiting, val=1, expire=60)  # 当缓存不存在限流数据 重新设置一分钟请求一次
 
             # 查询uid_push和uid_set数据
-            uid_push_qs = DevicePushService.query_uid_push(uid, event_type)
+            uid_push_qs = DevicePushService.query_uid_push(uid, event_type, button)
             if not uid_push_qs.exists():
                 TIME_LOGGER.info('推送响应,uid:{},uid_push数据不存在!'.format(uid))
                 return JsonResponse(status=200, data={'code': 176, 'msg': 'no uid_push data'})

+ 13 - 0
Model/models.py

@@ -3483,3 +3483,16 @@ class UserEmailSubscriptions(models.Model):
     class Meta:
         db_table = 'user_email_subscriptions'
         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 = '用户音视频推送表'

+ 7 - 2
Service/DevicePushService.py

@@ -22,7 +22,7 @@ from AnsjerPush.config import CONFIG_INFO, CONFIG_CN, MULTI_CHANNEL_TYPE_LIST, S
     AWS_SECRET_ACCESS_KEY, EVENT_DICT, EVENT_DICT_CN, CONFIG_TEST
 from AnsjerPush.config import XMPUSH_CONFIG, OPPOPUSH_CONFIG, XM_PUSH_CHANNEL_ID
 from Model.models import UidPushModel, SysMsgModel, DeviceSharePermission, DeviceChannelUserSet, \
-    DeviceChannelUserPermission, UidSetModel, Device_Info
+    DeviceChannelUserPermission, UidSetModel, Device_Info, UserAudioVideoPush
 from Object.ETkObject import ETkObject
 from Object.OCIObjectStorage import OCIObjectStorage
 from Object.RedisObject import RedisObject
@@ -90,11 +90,12 @@ class DevicePushService:
         return aws_s3_client
 
     @classmethod
-    def query_uid_push(cls, uid, event_type):
+    def query_uid_push(cls, uid, event_type, button='1'):
         """
         查询uid_push和uid_set数据
         @param uid: uid
         @param event_type: 事件类型
+        @param button: 按钮
         @return: uid_push_qs
         """
         if event_type not in [606, 607]:
@@ -107,6 +108,10 @@ class DevicePushService:
             # 一键通话只推主用户
             device_info_qs = Device_Info.objects.filter(UID=uid).values('vodPrimaryUserID')
             primary_user_id = device_info_qs[0]['vodPrimaryUserID']
+            if event_type == 607:  # 音视频通话根据用户按钮来推送
+                button_qs = UserAudioVideoPush.objects.filter(uid=uid).values('buttonUser1', 'buttonUser2')
+                if button_qs.exists():
+                    primary_user_id = button_qs[0]['buttonUser1'] if button == '1' else button_qs[0]['buttonUser2']
             uid_push_qs = UidPushModel.objects.filter(uid_set__uid=uid, userID_id=primary_user_id). \
                 values('token_val', 'app_type', 'appBundleId', 'm_code', 'push_type', 'userID_id', 'userID__NickName',
                        'lang', 'm_code', 'tz', 'uid_set__nickname', 'uid_set__detect_interval', 'uid_set__detect_group',