Bläddra i källkod

后台同步设备数据时同步uid_set数据,优化添加删除设备操作日志

locky 1 år sedan
förälder
incheckning
25b7b21295

+ 45 - 1
AdminController/SerialManageController.py

@@ -17,7 +17,7 @@ from django.views.decorators.csrf import csrf_exempt
 from django.views.generic.base import View
 
 from Model.models import CompanyModel, VPGModel, UIDModel, UIDCompanySerialModel, CompanySerialModel, \
-    LogModel, iotdeviceInfoModel
+    LogModel, iotdeviceInfoModel, UidSetModel
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
@@ -289,6 +289,30 @@ class SerialView(View):
                         iot_data['serial_number'] = serial
                         iotdeviceInfoModel.objects.create(**iot_data)
 
+                # 同步uid_set数据
+                if res_data.get('ucode') is not None:
+                    uid_set_qs = UidSetModel.objects.filter(uid=uid)
+                    uid_set_data = {
+                        'ucode': res_data['ucode'],
+                        'version': res_data['version'],
+                        'tz': res_data['tz'],
+                        'ip': res_data['ip'],
+                        'is_human': res_data['is_human'],
+                        'is_custom_voice': res_data['is_custom_voice'],
+                        'double_wifi': res_data['double_wifi'],
+                        'isSupportFourPoint': res_data['isSupportFourPoint'],
+                        'mobile_4g': res_data['mobile_4g'],
+                        'is_ptz': res_data['is_ptz'],
+                        'is_ai': res_data['is_ai'],
+                        'cloud_vod': res_data['cloud_vod'],
+                        'is_alexa': res_data['is_alexa'],
+                        'ai_type': res_data['ai_type']
+                    }
+                    if uid_set_qs.exists():
+                        iot_device_info_qs.update(**uid_set_data)
+                    else:
+                        UidSetModel.objects.create(**uid_set_data)
+
                 # 记录操作日志
                 ip = CommonService.get_ip_address(request)
                 content = json.loads(json.dumps(request_dict))
@@ -353,6 +377,26 @@ class SerialView(View):
                 res_data['endpoint'] = iot_device_info_qs[0]['endpoint']
                 res_data['token_iot_number'] = iot_device_info_qs[0]['token_iot_number']
 
+            # 查询uid_set数据
+            uid_set_qs = UidSetModel.objects.filter(uid=uid).values(
+                'ucode', 'version', 'tz', 'ip', 'is_human', 'is_custom_voice', 'double_wifi', 'isSupportFourPoint',
+                'mobile_4g', 'is_ptz', 'is_ai', 'cloud_vod', 'is_alexa', 'ai_type')
+            if uid_set_qs.exists():
+                res_data['ucode'] = uid_set_qs[0]['ucode']
+                res_data['version'] = uid_set_qs[0]['version']
+                res_data['tz'] = uid_set_qs[0]['tz']
+                res_data['ip'] = uid_set_qs[0]['ip']
+                res_data['is_human'] = uid_set_qs[0]['is_human']
+                res_data['is_custom_voice'] = uid_set_qs[0]['is_custom_voice']
+                res_data['double_wifi'] = uid_set_qs[0]['double_wifi']
+                res_data['isSupportFourPoint'] = uid_set_qs[0]['isSupportFourPoint']
+                res_data['mobile_4g'] = uid_set_qs[0]['mobile_4g']
+                res_data['is_ptz'] = uid_set_qs[0]['is_ptz']
+                res_data['is_ai'] = uid_set_qs[0]['is_ai']
+                res_data['cloud_vod'] = uid_set_qs[0]['cloud_vod']
+                res_data['is_alexa'] = uid_set_qs[0]['is_alexa']
+                res_data['ai_type'] = uid_set_qs[0]['ai_type']
+
             # 修改序列号状态为占用,uid状态为3(数据被同步)
             CompanySerialModel.objects.filter(serial_number=serial).update(status=3)
             UIDModel.objects.filter(uid=uid).update(status=3)

+ 17 - 7
Controller/EquipmentManager.py

@@ -803,6 +803,7 @@ def deleteInterface(request):
     if not userID:
         return response.json(309)
 
+    username = CommonService.get_username(userID)
     try:
         with transaction.atomic():
             dv_qs = Device_Info.objects.filter(userID_id=userID, id=id).values('UID', 'serial_number', 'isShare',
@@ -852,7 +853,7 @@ def deleteInterface(request):
                 'time': now_time,
                 'content': json.dumps(content),
                 'url': 'equipment/delete',
-                'operation': '{}删除设备,uid:{}'.format(userID, uid),
+                'operation': '{}删除设备,uid:{}'.format(username, uid),
             }
             LogModel.objects.create(**log)
 
@@ -867,7 +868,7 @@ def deleteInterface(request):
             'time': now_time,
             'content': 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)),
             'url': 'equipment/delete',
-            'operation': '{}删除设备失败,uid:{}'.format(userID, uid),
+            'operation': '{}删除设备失败,uid:{}'.format(username, uid),
         }
         LogModel.objects.create(**log)
         return response.json(176, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
@@ -912,10 +913,9 @@ def batchDeleteInterface(request):
     if tko.code != 0:
         return response.json(tko.code)
     userID = tko.userID
-    # userID = request_dict.get('userID', None)   # 调试
-    # 主用户删除设备全部删除
     if not userID:
         return response.json(309)
+    username = CommonService.get_username(userID)
     try:
         deviceInfo_qs = Device_Info.objects.filter(userID_id=userID, id__in=ids.split(','))
         if not deviceInfo_qs.exists():
@@ -958,12 +958,22 @@ def batchDeleteInterface(request):
             'time': now_time,
             'content': json.dumps(content),
             'url': 'equipment/batchDelete',
-            'operation': '{}批量删除设备,uid:{}'.format(userID, uid_list),
+            'operation': '{}批量删除设备,uid:{}'.format(username, uid_list),
         }
         LogModel.objects.create(**log)
     except Exception as e:
-        errorInfo = traceback.format_exc()
-        print('删除数据库记录错误: %s' % errorInfo)
+        now_time = int(time.time())
+        ip = CommonService.get_ip_address(request)
+        log = {
+            'ip': ip,
+            'user_id': 1,
+            'status': 200,
+            'time': now_time,
+            'content': 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)),
+            'url': 'equipment/batchDelete',
+            'operation': '{}批量删除设备失败'.format(username),
+        }
+        LogModel.objects.create(**log)
         return response.json(176, repr(e))
     else:
         return response.json(0)

+ 3 - 2
Controller/EquipmentManagerV3.py

@@ -216,6 +216,7 @@ class EquipmentManagerV3(View):
             return response.json(0, res)
 
         # 日志数据
+        username = CommonService.get_username(userID)
         nowTime = int(time.time())
         ip = CommonService.get_ip_address(request)
         content = json.loads(json.dumps(request_dict))
@@ -226,7 +227,7 @@ class EquipmentManagerV3(View):
             'time': nowTime,
             'content': json.dumps(content),
             'url': 'v3/equipment/add',
-            'operation': '{}添加{}成功'.format(userID, UID)
+            'operation': '{}添加{}成功'.format(username, UID)
         }
 
         try:
@@ -347,7 +348,7 @@ class EquipmentManagerV3(View):
         except Exception as e:
             # 记录添加失败日志
             error_msg = 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e))
-            operation = '{}添加{}失败:{}'.format(userID, UID, error_msg)
+            operation = '{}添加{}失败:{}'.format(username, UID, error_msg)
             log['operation'] = operation
             LogModel.objects.create(**log)
             return response.json(10, error_msg)

+ 19 - 1
Service/CommonService.py

@@ -21,7 +21,8 @@ from pyipip import IPIPDatabase
 from Ansjer.config import BASE_DIR, SERVER_DOMAIN_SSL, CONFIG_INFO, CONFIG_TEST, CONFIG_CN, SERVER_DOMAIN_TEST, \
     SERVER_DOMAIN_CN, SERVER_DOMAIN_US, CONFIG_US, CONFIG_EUR, SERVER_DOMAIN_LIST, SERVER_DOMAIN_EUR
 from Controller.CheckUserData import RandomStr
-from Model.models import iotdeviceInfoModel, Device_Info, UIDModel, AppDeviceType, UIDCompanySerialModel, GatewayPush
+from Model.models import iotdeviceInfoModel, Device_Info, UIDModel, AppDeviceType, UIDCompanySerialModel, GatewayPush, \
+    Device_User
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 
@@ -182,6 +183,23 @@ class CommonService:
                     eID = '13800' + timeID + '138000'
                     return eID
 
+    @staticmethod
+    def get_username(userID):
+        """
+        根据用户id获取用户名/邮箱/电话
+        @param userID: 用户id
+        @return:
+        """
+        if userID:
+            device_user_qs = Device_User.objects.filter(userID=userID).values('username', 'userEmail', 'phone')
+            if device_user_qs[0]['username']:
+                return device_user_qs[0]['username']
+            elif device_user_qs[0]['userEmail']:
+                return device_user_qs[0]['userEmail']
+            elif device_user_qs[0]['phone']:
+                return device_user_qs[0]['phone']
+        return ''
+
     # 生成随机数
     @staticmethod
     def RandomStr(randomlength=8, number=True):