Эх сурвалжийг харах

Merge branch 'LocalWyp' into dev

# Conflicts:
#	Controller/DetectController.py
#	Service/TemplateService.py
#	Service/middleware.py
WuYiPei 5 жил өмнө
parent
commit
3664d433a2

+ 116 - 0
Controller/DetectController.py

@@ -154,6 +154,118 @@ class DetectControllerView(View):
             res.append(p)
         return response.json(0, {'datas': res, 'count': count})
 
+    def do_change_status1(self, userID, request_dict, response):
+
+        uid = request_dict.get('uid', None)
+        token_val = request_dict.get('token_val', None)
+        appBundleId = request_dict.get('appBundleId', None)
+        app_type = request_dict.get('app_type', None)
+        push_type = request_dict.get('push_type', None)
+        status = request_dict.get('status', None)
+        m_code = request_dict.get('m_code', None)
+        # 设备语言
+        lang = request_dict.get('lang', 'en')
+        tz = request_dict.get('tz', '0')
+        # interval = request_dict.get('interval', None)
+        if not status:
+            return response.json(444, 'status')
+        # 关闭推送
+        if not all([appBundleId, app_type, token_val, uid, m_code]):
+            return response.json(444, 'appBundleId,app_type,token_val,uid,m_code')
+        # 判断推送类型对应key是否存在
+        if push_type == '0':
+            if appBundleId not in APNS_CONFIG.keys():
+                return response.json(904)
+        elif push_type == '1':
+            if appBundleId not in FCM_CONFIG.keys():
+                return response.json(904)
+        elif push_type == '2':
+            if appBundleId not in JPUSH_CONFIG.keys():
+                return response.json(904)
+        else:
+            return response.json(173)
+        dvqs = Device_Info.objects.filter(userID_id=userID, UID=uid)
+        status = int(status)
+        if dvqs.exists():
+            # 获取用户区域
+            # ip = self.ip
+            # ipInfo = CommonService.getIpIpInfo(ip=ip, lang='EN')
+            # area = ipInfo['country_name']
+            # if area == 'China':
+            #     DETECT_PUSH_DOMAIN = 'cn.push.dvema.com'
+            # else:
+            #     DETECT_PUSH_DOMAIN = 'en.push.dvema.com'
+            nowTime = int(time.time())
+            uid_set_qs = UidSetModel.objects. \
+                filter(uid=uid, uidpushmodel__userID_id=userID, uidpushmodel__m_code=m_code)
+            # 判断是否有曾经开启过
+            if uid_set_qs.exists():
+                uid_push_update_dict = {
+                    'appBundleId': appBundleId,
+                    'app_type': app_type,
+                    'push_type': push_type,
+                    'token_val': token_val,
+                    'updTime': nowTime,
+                    'lang': lang,
+                    'tz': tz
+                }
+                uid_set_qs.update(detect_status=status, updTime=nowTime)
+                UidPushModel.objects.filter(userID_id=userID, m_code=m_code, uid_set__uid=uid). \
+                    update(**uid_push_update_dict)
+                if status == 0:
+                    # 关闭成功
+                    return response.json(0)
+                utko = UidTokenObject()
+                # right
+                utko.generate(data={'uid': uid})
+                detectUrl = "{DETECT_PUSH_DOMAIN}notify/push?uidToken={uidToken}". \
+                    format(uidToken=utko.token, DETECT_PUSH_DOMAIN=DETECT_PUSH_DOMAIN)
+                return response.json(0, {'detectUrl': detectUrl})
+            else:
+                uid_set_qs = UidSetModel.objects.filter(uid=uid)
+                # 判断uid push是否绑定
+                if not uid_set_qs.exists():
+                    uid_set_create_dict = {
+                        'uid': uid,
+                        'addTime': nowTime,
+                        'updTime': nowTime,
+                        'detect_status': status,
+                    }
+                    # 添加设备配置
+                    uid_set_qs = UidSetModel.objects.create(**uid_set_create_dict)
+                    uid_set_id = uid_set_qs.id
+                else:
+                    update_dict = {
+                        'updTime': nowTime,
+                        'detect_status': status,
+                    }
+                    uid_set_qs.update(**update_dict)
+                    uid_set_id = uid_set_qs[0].id
+                uid_push_create_dict = {
+                    'uid_set_id': uid_set_id,
+                    'userID_id': userID,
+                    'appBundleId': appBundleId,
+                    'app_type': app_type,
+                    'push_type': push_type,
+                    'token_val': token_val,
+                    'm_code': m_code,
+                    'addTime': nowTime,
+                    'updTime': nowTime,
+                    'lang': lang,
+                    'tz': tz
+                }
+                # 绑定设备推送
+                UidPushModel.objects.create(**uid_push_create_dict)
+                if status == 0:
+                    return response.json(0)
+                utko = UidTokenObject()
+                utko.generate(data={'uid': uid})
+                detectUrl = "{DETECT_PUSH_DOMAIN}notify/push?uidToken={uidToken}". \
+                    format(uidToken=utko.token, DETECT_PUSH_DOMAIN=DETECT_PUSH_DOMAIN)
+                return response.json(0, {'detectUrl': detectUrl})
+        else:
+            return response.json(14)
+
     def do_change_status(self, userID, request_dict, response):
         uid = request_dict.get('uid', None)
         token_val = request_dict.get('token_val', None)
@@ -212,6 +324,10 @@ class DetectControllerView(View):
             uid_set_qs.update(detect_status=status, updTime=nowTime)
             if status == 0:
                 UidPushModel.objects.filter(uid_set__uid=uid).delete()
+                # 状态为0的时候删除redis缓存数据
+                ykey = '{uid}_redis_qs'.format(uid=uid)
+                redisObj = RedisObject(db=6,SERVER_HOST = 'push.dvema.com')
+                redisObj.del_data(key=ykey)
                 return response.json(0)
             elif status == 1:
                 uid_push_qs = UidPushModel.objects.filter(userID_id=userID, m_code=m_code, uid_set__uid=uid)

+ 1 - 1
Object/RedisObject.py

@@ -25,7 +25,7 @@ db=3  -> 统计在线人数用
 
 class RedisObject:
 
-    def __init__(self, db=0):
+    def __init__(self, db=0,SERVER_HOST = SERVER_HOST):
         if db == 3:
             if SERVER_TYPE != 'Ansjer.formal_settings':
                 db = 4

+ 2 - 9
Service/TemplateService.py

@@ -66,15 +66,8 @@ class TemplateService:
             # 'notify/push',
             'equipment/flowUpdate',
             'wechat/authsign',
-            # 'user/initInfo',
-            'wechat/perfect',
-            'oauth/perfect',
-            'oauth/authcode',
-            'detect/queryInfo',
-            'deviceShadow/update',
-            'uidset/adminDelete'
-        ]
-        return apiList
+
+		 return apiList
 
     @staticmethod
     def email_message(type, language):

+ 1 - 4
Service/middleware.py

@@ -84,13 +84,10 @@ class StatisticsUrlMiddleware(MiddlewareMixin):
             try:
                 pass
                 # mysql
-                # 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.add_access_log(request=request, status_code=response.status_code)
                 # mongodb版
                 # MiscellService.access_log(request=request, response=response, type=0)
             except Exception as e:
                 print(repr(e))
             django.db.close_old_connections()
-        return response
+		return response