Browse Source

优化删除设备接口

locky 2 years ago
parent
commit
37775af002
1 changed files with 31 additions and 35 deletions
  1. 31 35
      Controller/EquipmentManager.py

+ 31 - 35
Controller/EquipmentManager.py

@@ -776,13 +776,12 @@ def admin_modifyInterface(request):
             return response.json(0, res)
 
 
-# 新删除设备
 def deleteInterface(request):
-    '''
-    删除用户设备
-    :param request:
-    :return:
-    '''
+    """
+    删除设备
+    @param request: 请求体
+    @return: response
+    """
     response = ResponseObject()
     request.encoding = 'utf-8'
     if request.method == 'POST':
@@ -791,18 +790,20 @@ def deleteInterface(request):
         request_dict = request.GET
     else:
         return response.json(444)
+
     token = request_dict.get('token', None)
     id = request_dict.get('id', None)
-    if not id:
-        return response.json(444, 'id')
+    if not all([token, id]):
+        return response.json(444)
+
     tko = TokenObject(token)
     response.lang = tko.lang
     if tko.code != 0:
         return response.json(tko.code)
     userID = tko.userID
-    # 主用户删除设备全部删除
     if not userID:
         return response.json(309)
+
     try:
         with transaction.atomic():
             dv_qs = Device_Info.objects.filter(userID_id=userID, id=id)
@@ -810,32 +811,29 @@ def deleteInterface(request):
                 return response.json(14)
             uid = dv_qs[0].UID
             serial_number = dv_qs[0].serial_number
-            if userID == dv_qs[0].vodPrimaryUserID:
-                Device_Info.objects.filter(UID=uid).update(vodPrimaryUserID='', vodPrimaryMaster='')
 
-            up_qs = UidPushModel.objects.filter(uid_set__uid=uid)
-            if dv_qs[0].isShare:
-                DeviceShareView.del_device_channel_permission(userID, uid)
+            del_channel_permission_user_id = ''
+            # 主用户删除
+            if userID == dv_qs[0].vodPrimaryUserID:
+                user_id_list = Device_Info.objects.filter(UID=uid).values_list('userID_id', flat=True)
+                Device_Info.objects.filter(UID=uid).delete()
+                UidPushModel.objects.filter(uid_set__uid=uid).delete()
+                # 异步删除推送消息
+                asy = threading.Thread(target=ModelService.del_user_list_eq_info, args=(user_id_list, uid))
+                asy.start()
             else:
-                # a.主用户删除设备
-                # 删除设备影子信息uid_set   外键关联删除设备推送配置信息 uid_push
-                DetectControllerView().do_delete_redis(uid)
-                if up_qs.count() > 1:
-                    redisObj = RedisObject()
-                    ykey = '{uid}_redis_qs'.format(uid=uid)
-                    if ykey:
-                        redisObj.del_data(key=ykey)
-                # b.删除次用户设备
-                Device_Info.objects.filter(UID=uid, isShare=True, primaryUserID=userID).delete()
-                DeviceShareView.del_device_channel_permission('', uid)
-            up_qs.delete()
-            dv_qs.delete()
+                Device_Info.objects.filter(UID=uid, userID_id=userID).delete()
+                UidPushModel.objects.filter(uid_set__uid=uid, userID_id=userID).delete()
+                # 异步删除推送消息
+                asy = threading.Thread(target=ModelService.del_eq_info, args=(userID, uid))
+                asy.start()
+                if dv_qs[0].isShare:
+                    del_channel_permission_user_id = userID
+            DeviceShareView.del_device_channel_permission(userID, uid)
+
             if not serial_number:
                 serial_number = CommonService.query_serial_with_uid(uid)
             del_unicom_info(userID, serial_number)
-            # 异步删除推送消息
-            asy = threading.Thread(target=ModelService.del_eq_info, args=(userID, uid))
-            asy.start()
 
             # 记录操作日志
             now_time = int(time.time())
@@ -851,12 +849,10 @@ def deleteInterface(request):
                 'operation': '{}删除设备,uid:{}'.format(userID, uid),
             }
             LogModel.objects.create(**log)
-    except Exception as e:
-        errorInfo = traceback.format_exc()
-        print('删除数据库记录错误: %s' % errorInfo)
-        return response.json(176, repr(e))
-    else:
+
         return response.json(0)
+    except Exception as e:
+        return response.json(176, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
 
 def del_unicom_info(user_id, serial_no):