Browse Source

更新最新代码
优化推送架构
分离推送设备

chenjunkai 5 years ago
parent
commit
d9796784a2
3 changed files with 81 additions and 82 deletions
  1. 76 80
      Controller/DetectController.py
  2. 3 0
      README.md
  3. 2 2
      Service/middleware.py

+ 76 - 80
Controller/DetectController.py

@@ -32,9 +32,12 @@ from Object.UidTokenObject import UidTokenObject
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
 
 
 '''
 '''
-http://test.dvema.com/detect/changeStatus?push_type=2&token_val=1507bfd3f7ba3bbb551&appBundleId=com.ansjer.zccloud_ab&tz=+08.00&uid=T4AZ3CUKCERH9FZA111A&status=1&m_code=AN020000own000000unkn.zccloud_ab&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzUxOTAxNjksInVzZXJJRCI6IjE1Njc3NTgyMTg2MTkxMzgwMDEzODAwMCIsImxhbmciOiJ0YyIsInVzZXIiOiIxMzExOTY1NzcxMyJ9.rQ11jA3IQPxQofFbZyG0nvLhGVcxOR82N2qQ8i04VuU&lang=tc&app_type=2
 http://test.push.dvema.com/notify/push?uidToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiJUNEFaM0NVS0NFUkg5RlpBMTExQSJ9.GtrXeq5gb2Z9M3mKECxi9eNQbPxqC-6PtgJkOOg6PwI&n_time=1598456451&channel=1&event_type=1&is_st=1
 http://test.push.dvema.com/notify/push?uidToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiJUNEFaM0NVS0NFUkg5RlpBMTExQSJ9.GtrXeq5gb2Z9M3mKECxi9eNQbPxqC-6PtgJkOOg6PwI&n_time=1598456451&channel=1&event_type=1&is_st=1
 http://push.dvema.com/notify/push?uidToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiJUNEFaM0NVS0NFUkg5RlpBMTExQSJ9.GtrXeq5gb2Z9M3mKECxi9eNQbPxqC-6PtgJkOOg6PwI&n_time=1598456451&channel=1&event_type=1&is_st=1
 http://push.dvema.com/notify/push?uidToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiJUNEFaM0NVS0NFUkg5RlpBMTExQSJ9.GtrXeq5gb2Z9M3mKECxi9eNQbPxqC-6PtgJkOOg6PwI&n_time=1598456451&channel=1&event_type=1&is_st=1
+
+http://www.dvema.com/detect/changeStatus?push_type=2&token_val=1a0018970a332cca935&appBundleId=com.ansjer.zccloud_ab&tz=+08.00&uid=HLK7EJ2VYLNHHUMG111A&status=1&m_code=AN02000025070000001207.zccloud_ab&token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiMTMxMTk2NTc3MTMiLCJsYW5nIjoiZW4iLCJtX2NvZGUiOiIxMjM0MTMyNDMyMTQiLCJ1c2VySUQiOiIxNTQ0ODM4MjMyOTczMTM4MDAxMzgwMDAiLCJleHAiOjE1ODQxNDc0NjN9.NjK91B26jZDtdmq8tW-8hXNQPqqDfo9Zwf_Jg6Uf7co&lang=cn&app_type=2
+
+
 '''
 '''
 
 
 
 
@@ -413,57 +416,53 @@ class NotificationView(View):
         else:
         else:
             # 设置推送间隔60秒一次
             # 设置推送间隔60秒一次
             redisObj.set_data(key=pkey, val=1, expire=60)
             redisObj.set_data(key=pkey, val=1, expire=60)
-        uid_set_qs = UidSetModel.objects.filter(uid=uid, detect_status=1)
-        if uid_set_qs.exists():
-            uid_set_id = uid_set_qs[0].id
-            nickname = uid_set_qs[0].nickname
+        uid_push_qs = UidPushModel.objects.filter(uid_set__uid=uid,uid_set__detect_status=1). \
+            values('token_val', 'app_type', 'appBundleId',
+                   'push_type', 'userID_id', 'userID__NickName',
+                   'lang', 'tz', 'uid_set__nickname')
+        if uid_push_qs.exists():
+            nickname = uid_push_qs[0]['uid_set__nickname']
             if not nickname:
             if not nickname:
                 nickname = uid
                 nickname = uid
-            uid_push_qs = UidPushModel.objects.filter(uid_set__id=uid_set_id). \
-                values('token_val', 'app_type', 'appBundleId', 'push_type', 'userID_id', 'userID__NickName', 'lang',
-                       'tz')
-            if uid_push_qs.exists():
-                auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
-                bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'apg')
-                for up in uid_push_qs:
-                    push_type = up['push_type']
-                    # ios apns
-                    print(push_type)
-                    if push_type == 0:
-                        self.do_apns(request_dict, up, response, uid, channel, nickname)
-                    # android gcm
-                    elif push_type == 1:
-                        self.do_fcm(request_dict, up, response, uid, channel, nickname)
-                        # self.do_gmc(request_dict, up, response, uid, channel,nickname)
-                    # android jpush
-                    elif push_type == 2:
-                        self.do_jpush(request_dict, up, response, uid, channel, nickname)
-                    # self.do_save_equipment_info(ua, n_time, channel, event_type, is_st)
-                # 需求不一样,所以这么做的
-                self.do_bulk_create_info(uid_push_qs, n_time, channel, event_type, is_st, uid)
-                if is_st == '0' or is_st == '2':
-                    return JsonResponse(status=200, data={'code': 0, 'msg': 'success'})
-                elif is_st == '1':
-                    # Endpoint以杭州为例,其它Region请按实际情况填写。
-                    obj = '{uid}/{channel}/{filename}.jpeg'.format(uid=uid, channel=channel, filename=n_time)
+            auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
+            bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'apg')
+            for up in uid_push_qs:
+                push_type = up['push_type']
+                # ios apns
+                print(push_type)
+                if push_type == 0:
+                    self.do_apns(request_dict, up, response, uid, channel, nickname)
+                # android gcm
+                elif push_type == 1:
+                    self.do_fcm(request_dict, up, response, uid, channel, nickname)
+                    # self.do_gmc(request_dict, up, response, uid, channel,nickname)
+                # android jpush
+                elif push_type == 2:
+                    self.do_jpush(request_dict, up, response, uid, channel, nickname)
+                # self.do_save_equipment_info(ua, n_time, channel, event_type, is_st)
+            # 需求不一样,所以这么做的
+            self.do_bulk_create_info(uid_push_qs, n_time, channel, event_type, is_st, uid)
+            if is_st == '0' or is_st == '2':
+                return JsonResponse(status=200, data={'code': 0, 'msg': 'success'})
+            elif is_st == '1':
+                # Endpoint以杭州为例,其它Region请按实际情况填写。
+                obj = '{uid}/{channel}/{filename}.jpeg'.format(uid=uid, channel=channel, filename=n_time)
+                # 设置此签名URL在60秒内有效。
+                url = bucket.sign_url('PUT', obj, 7200)
+                res_data = {'code': 0, 'img_push': url, 'msg': 'success'}
+                return JsonResponse(status=200, data=res_data)
+            elif is_st == '3':
+                # 人形检测带动图
+                # Endpoint以杭州为例,其它Region请按实际情况填写。
+                img_url_list = []
+                for i in range(int(is_st)):
+                    obj = '{uid}/{channel}/{filename}_{st}.jpeg'. \
+                        format(uid=uid, channel=channel, filename=n_time, st=i)
                     # 设置此签名URL在60秒内有效。
                     # 设置此签名URL在60秒内有效。
                     url = bucket.sign_url('PUT', obj, 7200)
                     url = bucket.sign_url('PUT', obj, 7200)
-                    res_data = {'code': 0, 'img_push': url, 'msg': 'success'}
-                    return JsonResponse(status=200, data=res_data)
-                elif is_st == '3':
-                    # 人形检测带动图
-                    # Endpoint以杭州为例,其它Region请按实际情况填写。
-                    img_url_list = []
-                    for i in range(int(is_st)):
-                        obj = '{uid}/{channel}/{filename}_{st}.jpeg'. \
-                            format(uid=uid, channel=channel, filename=n_time, st=i)
-                        # 设置此签名URL在60秒内有效。
-                        url = bucket.sign_url('PUT', obj, 7200)
-                        img_url_list.append(url)
-                    res_data = {'code': 0, 'img_url_list': img_url_list, 'msg': 'success'}
-                    return JsonResponse(status=200, data=res_data)
-            else:
-                return JsonResponse(status=200, data={'code': 404, 'msg': 'data is not exist'})
+                    img_url_list.append(url)
+                res_data = {'code': 0, 'img_url_list': img_url_list, 'msg': 'success'}
+                return JsonResponse(status=200, data=res_data)
         else:
         else:
             return JsonResponse(status=200, data={'code': 404, 'msg': 'data is not exist'})
             return JsonResponse(status=200, data={'code': 404, 'msg': 'data is not exist'})
 
 
@@ -660,39 +659,32 @@ class PushNotificationView(View):
                 return JsonResponse(status=200, data=res_data)
                 return JsonResponse(status=200, data=res_data)
             else:
             else:
                 redisObj.set_data(key=pkey, val=1, expire=60)
                 redisObj.set_data(key=pkey, val=1, expire=60)
-            uid_set_qs = UidSetModel.objects.filter(uid=uid, detect_status=1)
-            if uid_set_qs.exists():
-                uid_set_id = uid_set_qs[0].id
-                uid_push_qs = UidPushModel.objects.filter(uid_set__id=uid_set_id). \
-                    values('token_val', 'app_type', 'appBundleId', 'push_type',
-                           'userID_id', 'userID__NickName', 'lang', 'tz')
-                if uid_set_qs.exists():
-                    auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
-                    bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'apg')
-                    self.do_bulk_create_info(uid_push_qs, n_time, channel, event_type, is_st, uid)
-                    if is_st == '0' or is_st == '2':
-                        return JsonResponse(status=200, data={'code': 0, 'msg': 'success'})
-                    elif is_st == '1':
-                        # Endpoint以杭州为例,其它Region请按实际情况填写。
-                        obj = '{uid}/{channel}/{filename}.jpeg'.format(uid=uid, channel=channel, filename=n_time)
+            uid_push_qs = UidPushModel.objects.filter(uid_set__uid=uid,uid_set__detect_status=1).\
+                values('token_val', 'app_type', 'appBundleId', 'push_type','userID_id', 'userID__NickName', 'lang', 'tz', 'uid_set__nickname')
+            if uid_push_qs.exists():
+                auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
+                bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'apg')
+                self.do_bulk_create_info(uid_push_qs, n_time, channel, event_type, is_st, uid)
+                if is_st == '0' or is_st == '2':
+                    return JsonResponse(status=200, data={'code': 0, 'msg': 'success'})
+                elif is_st == '1':
+                    # Endpoint以杭州为例,其它Region请按实际情况填写。
+                    obj = '{uid}/{channel}/{filename}.jpeg'.format(uid=uid, channel=channel, filename=n_time)
+                    # 设置此签名URL在60秒内有效。
+                    url = bucket.sign_url('PUT', obj, 7200)
+                    res_data = {'code': 0, 'img_push': url, 'msg': 'success'}
+                    return JsonResponse(status=200, data=res_data)
+                elif is_st == '3':
+                    # 人形检测带动图
+                    img_url_list = []
+                    for i in range(int(is_st)):
+                        obj = '{uid}/{channel}/{filename}_{st}.jpeg'. \
+                            format(uid=uid, channel=channel, filename=n_time, st=i)
                         # 设置此签名URL在60秒内有效。
                         # 设置此签名URL在60秒内有效。
                         url = bucket.sign_url('PUT', obj, 7200)
                         url = bucket.sign_url('PUT', obj, 7200)
-                        res_data = {'code': 0, 'img_push': url, 'msg': 'success'}
-                        return JsonResponse(status=200, data=res_data)
-                    elif is_st == '3':
-                        # 人形检测带动图
-                        img_url_list = []
-                        for i in range(int(is_st)):
-                            obj = '{uid}/{channel}/{filename}_{st}.jpeg'. \
-                                format(uid=uid, channel=channel, filename=n_time, st=i)
-                            # 设置此签名URL在60秒内有效。
-                            url = bucket.sign_url('PUT', obj, 7200)
-                            img_url_list.append(url)
-                        res_data = {'code': 0, 'img_url_list': img_url_list, 'msg': 'success'}
-                        return JsonResponse(status=200, data=res_data)
-
-                else:
-                    return JsonResponse(status=200, data={'code': 404, 'msg': 'data is not exist'})
+                        img_url_list.append(url)
+                    res_data = {'code': 0, 'img_url_list': img_url_list, 'msg': 'success'}
+                    return JsonResponse(status=200, data=res_data)
             else:
             else:
                 return JsonResponse(status=200, data={'code': 404, 'msg': 'data is not exist'})
                 return JsonResponse(status=200, data={'code': 404, 'msg': 'data is not exist'})
         else:
         else:
@@ -707,12 +699,16 @@ class PushNotificationView(View):
         for dv in uaqs:
         for dv in uaqs:
             userID_id = dv["userID_id"]
             userID_id = dv["userID_id"]
             if userID_id not in userID_ids:
             if userID_id not in userID_ids:
+                if dv['uid_set__nickname']:
+                    uid_nickname = dv['uid_set__nickname']
+                else:
+                    uid_nickname = uid
                 add_data = {
                 add_data = {
                     'userID_id': dv["userID_id"],
                     'userID_id': dv["userID_id"],
                     'eventTime': n_time,
                     'eventTime': n_time,
                     'eventType': event_type,
                     'eventType': event_type,
                     'devUid': uid,
                     'devUid': uid,
-                    'devNickName': uid,
+                    'devNickName': uid_nickname,
                     'Channel': channel,
                     'Channel': channel,
                     'alarm': 'Motion \tChannel:{channel}'.format(channel=channel),
                     'alarm': 'Motion \tChannel:{channel}'.format(channel=channel),
                     'is_st': int(is_st),
                     'is_st': int(is_st),

+ 3 - 0
README.md

@@ -1,3 +1,6 @@
+### 软件版本:V2.0.0.2020-2-10
+    1,自主推送方案 移动侦测,图片推送
+    2,alexa oauth2 rtsp
 ### 软件版本:V1.5.0.2019-2-12
 ### 软件版本:V1.5.0.2019-2-12
     1,云存功能第二版测试完成,功能完善,bug修正,使用公司提供账号
     1,云存功能第二版测试完成,功能完善,bug修正,使用公司提供账号
     2,新版本ota功能(主要未dvr)
     2,新版本ota功能(主要未dvr)

+ 2 - 2
Service/middleware.py

@@ -82,9 +82,9 @@ class StatisticsUrlMiddleware(MiddlewareMixin):
         if request.path !='/favicon.ico':
         if request.path !='/favicon.ico':
             print('process_response', request, response)
             print('process_response', request, response)
             try:
             try:
-                #pass
+                pass
                 # mysql
                 # mysql
-                MiscellService.batch_add_access_log(request=request, status_code=response.status_code)
+                # MiscellService.batch_add_access_log(request=request, status_code=response.status_code)
 
 
                 # MiscellService.DynamoDB_add_access_log(request=request, status_code=response.status_code)
                 # MiscellService.DynamoDB_add_access_log(request=request, status_code=response.status_code)
                 # MiscellService.add_access_log(request=request, status_code=response.status_code)
                 # MiscellService.add_access_log(request=request, status_code=response.status_code)