瀏覽代碼

Merge branch 'dev' into bin

chenshibin 4 年之前
父節點
當前提交
11e29a2f90

+ 9 - 0
Ansjer/formal_settings.py

@@ -199,6 +199,15 @@ LOGGING = {
             'class': 'logging.StreamHandler',
             'formatter': 'error_format'
         },
+        # 'info': {  # 向文件中输出日志
+        #     'level': 'INFO',
+        #     'class': 'logging.handlers.RotatingFileHandler',
+        #     'filename': BASE_DIR + '/static/log/print.log',  # 日志文件的位置
+        #     'maxBytes': 20 * 1024 * 1024,  # 20M大小
+        #     'backupCount': 10,
+        #     'formatter': 'verbose',
+        #     'encoding': 'utf-8'
+        # },
     },
     'loggers': {
         'django': {

+ 2 - 0
Controller/AccessLog.py

@@ -19,6 +19,8 @@ http://192.168.136.40:8077/accesslog?operation=queryByAdmin&token=test&page=1&li
 http://192.168.136.40:8077/accesslog?operation=truncateByAdmin&token=test
 http://192.168.136.40:8077/accesslog?operation=searchByAdmin&token=test&page=1&line=10&content={"status":20}&order=-id
 
+
+
 http://192.168.136.40:8077/accesslog/staticPath/?token=stest
 '''
 

+ 26 - 6
Controller/DetectController.py

@@ -246,15 +246,14 @@ class DetectControllerView(View):
             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)
+                self.do_delete_redis(uid)
                 return response.json(0)
             elif status == 1:
                 uid_push_qs = UidPushModel.objects.filter(userID_id=userID, m_code=m_code, uid_set__uid=uid)
-                ykey = '{uid}_redis_qs'.format(uid=uid)
-                redisObj = RedisObject(db=6, SERVER_HOST='push.dvema.com')
-                redisObj.del_data(key=ykey)
+                # ykey = '{uid}_redis_qs'.format(uid=uid)
+                # redisObj = RedisObject(db=6, SERVER_HOST='push.dvema.com')
+                # redisObj.del_data(key=ykey)
+
                 if uid_push_qs.exists():
                     uid_push_update_dict = {
                         'appBundleId': appBundleId,
@@ -283,6 +282,11 @@ class DetectControllerView(View):
                     }
                     # 绑定设备推送
                     UidPushModel.objects.create(**uid_push_create_dict)
+
+                if interval:
+                    self.do_delete_redis(uid, int(interval))
+                else:
+                    self.do_delete_redis(uid)
                 # utko = UidTokenObject()
                 # # right
                 # utko.generate(data={'uid': uid})
@@ -294,6 +298,22 @@ class DetectControllerView(View):
         else:
             return response.json(14)
 
+    def do_delete_redis(self, uid, detect_interval=0):
+        keyPattern = '{uid}*'.format(uid=uid)
+        redisObj = RedisObject(db=6, SERVER_HOST='push.dvema.com')
+        keys = redisObj.get_keys(keyPattern)
+        if keys:
+            for key in keys:
+                key = key.decode()
+                if detect_interval == 0:
+                    redisObj.del_data(key=key)
+                elif key.find('plt') != -1:
+                    continue
+                elif key.find('flag') != -1:
+                    redisObj.set_data(key=key, val=1, expire=detect_interval)
+                else:
+                    redisObj.del_data(key=key)
+
     def do_update_interval(self, userID, request_dict, response):
         uid = request_dict.get('uid', None)
         interval = request_dict.get('interval', None)

+ 31 - 1
Controller/EquipmentManager.py

@@ -96,6 +96,12 @@ def addNewUserEquipmentInterface(request):
                 userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID,
                                          **deviceData)
                 userDevice.save()
+                if UID == '98UXAA8BRPA35VAL111A':
+                    asy = threading.Thread(target=ModelService.add_log,
+                                           args=(CommonService.get_ip_address(request), userID, 'addV0'))
+                    asy.start()
+
+
 
                 # is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
                 # # 判断是否有已绑定用户
@@ -158,6 +164,9 @@ def delUserEquipmentInterface(request):
         # redisObj.del_data(key='uid_qs_' + userID)
         if dv_qs.exists():
             uid = dv_qs[0].UID
+            asy = threading.Thread(target=ModelService.add_log, args=(CommonService.get_ip_address(request), userID, 'deleteV1'))
+            asy.start()
+
             print('删除')
             UID_Preview.objects.filter(uid=uid).delete()
             dv_qs.delete()
@@ -210,6 +219,15 @@ def modifyUserEquipmentInterface(request):
         res = CommonService.qs_to_dict(qs)
         if qs.exists():
             uid = qs[0].UID
+            if uid == '98UXAA8BRPA35VAL111A':
+                file_path = '/'.join((BASE_DIR, 'static/add_device.log'))
+                file = open(file_path, 'a+')
+                file.write(
+                    CommonService.get_ip_address(request) + "; username:" + userID + "; time:" + time.strftime(
+                        "%Y-%m-%d %H:%M:%S", time.localtime()) + "; modifyV1")
+                file.write('\n')
+                file.flush()
+                file.close()
             nickname = qs[0].NickName
             # 增加设备影子信息修改昵称 start
             us_qs = UidSetModel.objects.filter(uid=uid)
@@ -356,6 +374,12 @@ def addInterface(request):
                         return response.json(174)
                     else:
                         is_exist.delete()
+
+                if UID == '98UXAA8BRPA35VAL111A':
+                    asy = threading.Thread(target=ModelService.add_log,
+                                           args=(CommonService.get_ip_address(request), userID, 'addV1'))
+                    asy.start()
+
                 pass
                 # is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
                 # # 判断是否有已绑定用户
@@ -507,10 +531,12 @@ def admin_addInterface(request):
                 file_path = '/'.join((BASE_DIR, 'static/test.log'))
 
                 file = open(file_path, 'a+')
-                file.write(ipdizhi+"; username:"+username+"; time:"+time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
+                file.write(ipdizhi + "; username:" + username + "; time:" + time.strftime("%Y-%m-%d %H:%M:%S",
+                                                                                          time.localtime()))
                 file.write('\n')
                 file.flush()
                 file.close()
+
                 # is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
                 # # 判断是否有已绑定用户
                 # if not is_bind.exists():
@@ -654,6 +680,10 @@ def deleteInterface(request):
         dv_qs = Device_Info.objects.filter(userID_id=userID, id=id)
         if dv_qs.exists():
             uid = dv_qs[0].UID
+            asy = threading.Thread(target=ModelService.add_log,
+                                   args=(CommonService.get_ip_address(request), userID, 'deleteV2'))
+            asy.start()
+
             if dv_qs[0].isShare:
                 dv_qs.delete()
             else:

+ 22 - 9
Controller/EquipmentManagerV3.py

@@ -10,7 +10,7 @@ import oss2, base64
 from django.db.models import Q
 from django.views.generic.base import View
 from Object.RedisObject import RedisObject
-from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY
+from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY, BASE_DIR
 from Model.models import Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidPushModel, UidChannelSetModel
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
@@ -45,7 +45,7 @@ class EquipmentManagerV3(View):
             elif operation == 'query':
                 return self.do_query(userID, request_dict, response)
             elif operation == 'modify':
-                return self.do_modify(userID, request_dict, response)
+                return self.do_modify(userID, request_dict, response, request)
             else:
                 return response.json(414)
         else:
@@ -61,8 +61,10 @@ class EquipmentManagerV3(View):
         View_Password = self.decode_pwd(View_Password)
         Type = request_dict.get('Type', None)
         ChannelIndex = request_dict.get('ChannelIndex', None)
+
         if all([UID, NickName, View_Account, Type, ChannelIndex]):
             tko = TokenObject(token)
+
             response.lang = tko.lang
             if tko.code == 0:
                 userID = tko.userID
@@ -75,6 +77,11 @@ class EquipmentManagerV3(View):
                             return response.json(174)
                         else:
                             is_exist.delete()
+                    if UID == '98UXAA8BRPA35VAL111A':
+                        asy = threading.Thread(target=ModelService.add_log,
+                                               args=(CommonService.get_ip_address(request), userID, 'addV3'))
+                        asy.start()
+
                     # is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
                     # # 判断是否有已绑定用户
                     # if is_bind:
@@ -128,7 +135,7 @@ class EquipmentManagerV3(View):
         else:
             return response.json(444, {'param': 'UID,NickName,View_Account,View_Password,Type,ChannelIndex'})
 
-    def do_modify(self, userID, request_dict, response):
+    def do_modify(self, userID, request_dict, response, request):
         token = request_dict.get('token', None)
         deviceContent = request_dict.get('content', None)
         id = request_dict.get('id', None)
@@ -155,11 +162,15 @@ class EquipmentManagerV3(View):
             print(e)
             return response.json(177, repr(e))
         else:
-            # qs = Device_Info.objects.filter(userID_id=userID, id=id)
-            qs = dev_info_qs
+            qs = Device_Info.objects.filter(userID_id=userID, id=id)
             res = CommonService.qs_to_dict(qs)
             if qs.exists():
                 uid = qs[0].UID
+                if uid == '98UXAA8BRPA35VAL111A':
+                    asy = threading.Thread(target=ModelService.add_log,
+                                           args=(CommonService.get_ip_address(request), userID, 'modifyV3'))
+                    asy.start()
+
                 nickname = qs[0].NickName
                 # 增加设备影子信息修改昵称 start
                 us_qs = UidSetModel.objects.filter(uid=uid)
@@ -180,6 +191,10 @@ class EquipmentManagerV3(View):
                     UidSetModel.objects.create(**uid_set_create_dict)
                 di_qs = Device_Info.objects.filter(UID=uid)
                 di_qs.update(NickName=nickname)
+                if deviceData is not None and deviceData.__contains__('NickName') and us_qs[0].is_alexa == 1:
+
+                    asy = threading.Thread(target=ModelService.notify_alexa_add, args=(uid, userID, nickname))
+                    asy.start()
             # redisObj = RedisObject(db=8)
             # redisObj.del_data(key='uid_qs_' + userID)
             return response.json(0, res)
@@ -333,7 +348,7 @@ class EquipmentManagerV3(View):
                 for index, item in enumerate(result):
                     if uid == item['UID']:
                         # 加密
-                        item['View_Password'] = self.encrypt_pwd(item['View_Password']) 
+                        item['View_Password'] = self.encrypt_pwd(item['View_Password'])
                         data.append(item)
                         return response.json(0, data)
             items = []
@@ -385,6 +400,4 @@ class EquipmentManagerV3(View):
                 password = password.decode('utf-8')
                 # 去前3位,后3位
                 password = password[3:-3]
-        return password
-
-
+        return password

+ 3 - 1
Controller/UserController.py

@@ -2643,6 +2643,7 @@ class alexaUidView(TemplateView):
         userID = request_dict.get('alexa_user_id')
         sid = request_dict.get('sid')
         sst = request_dict.get('sst')
+
         if sid == 'admin' and sst == 'admin':
             uid_qs = Device_Info.objects.filter(userID_id=userID, isExist=1).values('UID', 'NickName', 'View_Password')
             uid_dict = {}
@@ -2652,7 +2653,8 @@ class alexaUidView(TemplateView):
                 uid_list.append(uid_q['UID'])
                 # 给uid_q['UID']赋值
                 uid_dict[uid_q['UID']] = {'nick': uid_q['NickName'], 'password': uid_q['View_Password']}
-            us_qs = UidSetModel.objects.filter(uid__in=uid_list, is_alexa=2).values('uid', 'region_alexa')
+            us_qs = UidSetModel.objects.filter(uid__in=uid_list, is_alexa=1).values('uid', 'region_alexa')
+
             # uid,password,region的列表
             uid_arr = []
             for us in us_qs:

+ 7 - 0
Object/RedisObject.py

@@ -84,3 +84,10 @@ class RedisObject:
             return ttl
         else:
             return 0
+
+    def get_keys(self, key):
+        keys = self.CONN.keys(key)
+        if keys:
+            return keys
+        else:
+            return False

+ 15 - 1
Service/ModelService.py

@@ -1,5 +1,9 @@
+import logging
+import time
+
 import requests
 
+from Ansjer.config import BASE_DIR
 from Model.models import *
 from Service.CommonService import CommonService
 import json
@@ -157,7 +161,7 @@ class ModelService:
 
     @staticmethod
     def notify_alexa_add(uid, userID, nickname):
-        url = 'https://www.zositech.xyz/deviceStatus/addOrupdate'
+        url = 'https://www.zositech.xyz/deviceStatus/addOrUpdate'
         data = {
             'UID': uid,
             'userID': userID,
@@ -168,6 +172,16 @@ class ModelService:
         except Exception as e:
             print(repr(e))
 
+    @staticmethod
+    def add_log(ip, userID, operation):
+        file_path = '/'.join((BASE_DIR, 'static/delete_device.log'))
+        file = open(file_path, 'a+')
+        file.write(ip + "; username:" + userID + "; time:" + time.strftime(
+                "%Y-%m-%d %H:%M:%S", time.localtime()) + "; " + operation)
+        file.write('\n')
+        file.flush()
+        file.close()
+
 
 def notify_alexa_delete(userID, UID):
     url = 'https://www.zositech.xyz/deviceStatus/delete'