|
@@ -17,7 +17,8 @@ from pyfcm import FCMNotification
|
|
|
|
|
|
from AnsjerPush.config import JPUSH_CONFIG, FCM_CONFIG, APNS_CONFIG, BASE_DIR, APNS_MODE, APP_BUNDLE_DICT
|
|
from AnsjerPush.config import JPUSH_CONFIG, FCM_CONFIG, APNS_CONFIG, BASE_DIR, APNS_MODE, APP_BUNDLE_DICT
|
|
from AnsjerPush.config import SERVER_TYPE
|
|
from AnsjerPush.config import SERVER_TYPE
|
|
-from Model.models import UidPushModel, SysMsgModel
|
|
|
|
|
|
+from Model.models import UidPushModel, SysMsgModel, DeviceSharePermission, DeviceChannelUserSet, \
|
|
|
|
+ DeviceChannelUserPermission
|
|
from Object.ETkObject import ETkObject
|
|
from Object.ETkObject import ETkObject
|
|
from Object.UidTokenObject import UidTokenObject
|
|
from Object.UidTokenObject import UidTokenObject
|
|
from Object.utils import LocalDateTimeUtil
|
|
from Object.utils import LocalDateTimeUtil
|
|
@@ -98,6 +99,7 @@ class DevicePushService:
|
|
kwag_args = params['kwag_args']
|
|
kwag_args = params['kwag_args']
|
|
code_data = {'do_apns_code': '', 'do_fcm_code': '', 'do_jpush_code': ''}
|
|
code_data = {'do_apns_code': '', 'do_fcm_code': '', 'do_jpush_code': ''}
|
|
local_date_time = ''
|
|
local_date_time = ''
|
|
|
|
+ push_permission = True
|
|
for up in uid_set_push_list:
|
|
for up in uid_set_push_list:
|
|
appBundleId = up['appBundleId']
|
|
appBundleId = up['appBundleId']
|
|
token_val = up['token_val']
|
|
token_val = up['token_val']
|
|
@@ -135,14 +137,17 @@ class DevicePushService:
|
|
else:
|
|
else:
|
|
LOGGING.info('分表存数据start------')
|
|
LOGGING.info('分表存数据start------')
|
|
params['userID_id'] = userID_id
|
|
params['userID_id'] = userID_id
|
|
- new_device_info_list.append(cls.created_device_vo(local_date_time, **params))
|
|
|
|
|
|
+ push_permission = DevicePushService.check_share_permission(userID_id, params['channel'],
|
|
|
|
+ params['uid'])
|
|
|
|
+ if push_permission:
|
|
|
|
+ new_device_info_list.append(cls.created_device_vo(local_date_time, **params))
|
|
userID_ids.append(userID_id)
|
|
userID_ids.append(userID_id)
|
|
params['appBundleId'] = appBundleId
|
|
params['appBundleId'] = appBundleId
|
|
params['token_val'] = token_val
|
|
params['token_val'] = token_val
|
|
params['lang'] = lang
|
|
params['lang'] = lang
|
|
params['tz'] = tz
|
|
params['tz'] = tz
|
|
params['kwag_args'] = kwag_args
|
|
params['kwag_args'] = kwag_args
|
|
- code_data = cls.send_app_msg_push(up['push_type'], **params)
|
|
|
|
|
|
+ code_data = cls.send_app_msg_push(up['push_type'], **params) if push_permission else code_data
|
|
return {'code_date': code_data, 'new_device_info_list': new_device_info_list, 'sys_msg_list': sys_msg_list,
|
|
return {'code_date': code_data, 'new_device_info_list': new_device_info_list, 'sys_msg_list': sys_msg_list,
|
|
'local_date_time': local_date_time}
|
|
'local_date_time': local_date_time}
|
|
|
|
|
|
@@ -431,3 +436,31 @@ class DevicePushService:
|
|
ExpiresIn=3600
|
|
ExpiresIn=3600
|
|
)
|
|
)
|
|
return response_url
|
|
return response_url
|
|
|
|
+
|
|
|
|
+ @staticmethod
|
|
|
|
+ def check_share_permission(user_id, channel, uid):
|
|
|
|
+ """
|
|
|
|
+ 检查用户是否有权限接收设备报警推送
|
|
|
|
+ """
|
|
|
|
+ user_permission_qs = DeviceChannelUserSet.objects.filter(user_id=user_id, uid=uid) \
|
|
|
|
+ .values('id', 'channels')
|
|
|
|
+ # 根据当前用户与uid查询是否设置过通道权限,不存在则不是分享设备
|
|
|
|
+ if not user_permission_qs.exists():
|
|
|
|
+ return True
|
|
|
|
+ up_id = user_permission_qs[0]['id']
|
|
|
|
+ channels = user_permission_qs[0]['channels']
|
|
|
|
+ channels_list = [int(val) for val in channels.split(',')]
|
|
|
|
+ # 当前uid是属于分享设备并且设置了权限
|
|
|
|
+ # 判断通道是否设置了权限,不存在则当前通道没有权限接受消息推送
|
|
|
|
+ if int(channel) not in channels_list:
|
|
|
|
+ return False
|
|
|
|
+ permission_qs = DeviceSharePermission.objects.filter(code='AlarmMessages').values('id')
|
|
|
|
+ p_id = permission_qs[0]['id']
|
|
|
|
+
|
|
|
|
+ # 当前通道存在设置则查看是否有 消息推送权限
|
|
|
|
+ channel_permission_qs = DeviceChannelUserPermission.objects \
|
|
|
|
+ .filter(channel_user_id=up_id, permission_id=p_id) \
|
|
|
|
+ .values('permission_id', 'channel_user_id')
|
|
|
|
+ if not channel_permission_qs.exists():
|
|
|
|
+ return False
|
|
|
|
+ return True
|