Procházet zdrojové kódy

删除设备接口同步测试服

locky před 2 roky
rodič
revize
0acab25d2c
2 změnil soubory, kde provedl 49 přidání a 43 odebrání
  1. 38 39
      Controller/EquipmentManager.py
  2. 11 4
      Service/ModelService.py

+ 38 - 39
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,51 +790,53 @@ 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)
+            dv_qs = Device_Info.objects.filter(userID_id=userID, id=id).values('UID', 'serial_number', 'isShare',
+                                                                               'vodPrimaryUserID')
             if not dv_qs.exists():
                 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)
+            uid = dv_qs[0]['UID']
+            serial_number = dv_qs[0]['serial_number']
+            is_share = dv_qs[0]['isShare']
+            vod_primary_user_id = dv_qs[0]['vodPrimaryUserID']
+
+            del_channel_permission_user_id = ''
+            # 主用户删除
+            if userID == vod_primary_user_id:
+                user_id_list = 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()
+                # 删除推送消息
+                del_eq_info_thread = threading.Thread(target=ModelService.del_user_list_eq_info,
+                                                      args=(user_id_list, uid))
             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()
+                # 删除推送消息
+                del_eq_info_thread = threading.Thread(target=ModelService.del_eq_info, args=(userID, uid))
+                if is_share:
+                    del_channel_permission_user_id = userID
+            del_eq_info_thread.start()
+            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 +852,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):

+ 11 - 4
Service/ModelService.py

@@ -156,11 +156,18 @@ class ModelService:
             eq_list = eq_list.filter(device_user_id=userID, device_uid=uid)
             if eq_list.exists():
                 eq_list.delete()
-        # ei_count = ei_qs.count()
-        # while (ei_count > 1000):
-        #     ei_qs[0:1000].delete()
 
-        # 根据设备主键ID判断是否拥有该设备
+    @staticmethod
+    def del_user_list_eq_info(user_id_list, uid):
+        """
+        根据用户id列表删除设备推送消息
+        @param user_id_list: 用户id列表
+        @param uid:
+        @return:
+        """
+        for i in range(1, 8):
+            EquipmentInfoService.get_equipment_info_model('', i).\
+                filter(device_user_id__in=user_id_list, device_uid=uid).delete()
 
     # 获取绑定用户设备列表
     @staticmethod