瀏覽代碼

删除设备删除次用户设备,新增批量删除设备接口

locky 4 年之前
父節點
當前提交
05cd71a9e3
共有 2 個文件被更改,包括 68 次插入4 次删除
  1. 1 0
      Ansjer/urls.py
  2. 67 4
      Controller/EquipmentManager.py

+ 1 - 0
Ansjer/urls.py

@@ -53,6 +53,7 @@ urlpatterns = [
     url(r'^equipment/findEquipmentInfo$', EquipmentManager.findEquipmentInfoInterface),
     url(r'^equipment/findEquipmentInfo$', EquipmentManager.findEquipmentInfoInterface),
     # 新删除设备接口
     # 新删除设备接口
     url(r'^equipment/delete', EquipmentManager.deleteInterface),
     url(r'^equipment/delete', EquipmentManager.deleteInterface),
+    url(r'^equipment/batchDelete', EquipmentManager.batchDeleteInterface),
     url(r'^equipment/add', EquipmentManager.addInterface),
     url(r'^equipment/add', EquipmentManager.addInterface),
     url(r'^equipment/admin_add', EquipmentManager.admin_addInterface),
     url(r'^equipment/admin_add', EquipmentManager.admin_addInterface),
     url(r'^equipment/admin_modify', EquipmentManager.admin_modifyInterface),
     url(r'^equipment/admin_modify', EquipmentManager.admin_modifyInterface),

+ 67 - 4
Controller/EquipmentManager.py

@@ -812,10 +812,8 @@ def deleteInterface(request):
                         redisObj.del_data(key=ykey)
                         redisObj.del_data(key=ykey)
                 else:
                 else:
                     up_qs.delete()
                     up_qs.delete()
-                # b.分享获得用户假删除
-                ud_dv_qs = Device_Info.objects.filter(UID=uid, isShare=True, primaryUserID=userID)
-                if ud_dv_qs.exists():
-                    ud_dv_qs.update(isExist=0)
+                # b.删除次用户设备
+                Device_Info.objects.filter(UID=uid, isShare=True, primaryUserID=userID).delete()
                 # 异步删除推送消息
                 # 异步删除推送消息
             asy = threading.Thread(target=ModelService.del_eq_info, args=(userID, uid))
             asy = threading.Thread(target=ModelService.del_eq_info, args=(userID, uid))
             asy.start()
             asy.start()
@@ -830,6 +828,71 @@ def deleteInterface(request):
     else:
     else:
         return response.json(0)
         return response.json(0)
 
 
+# 批量删除设备
+def batchDeleteInterface(request):
+    '''
+    批量删除用户设备
+    :param request: token,ids
+    :return:
+    '''
+    response = ResponseObject()
+    request.encoding = 'utf-8'
+    if request.method == 'POST':
+        request_dict = request.POST
+    elif request.method == 'GET':
+        request_dict = request.GET
+    else:
+        return response.json(444)
+    token = request_dict.get('token', None)
+    ids = request_dict.get('ids', None)
+    if not ids:
+        return response.json(444, 'ids')
+    tko = TokenObject(token)
+    response.lang = tko.lang
+    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)
+    try:
+        deviceInfo_qs = Device_Info.objects.filter(userID_id=userID, id__in=ids.split(','))
+        if not deviceInfo_qs.exists():
+            return response.json(14)
+        for deviceInfo in deviceInfo_qs:
+            uid = deviceInfo.UID
+            asy = threading.Thread(target=ModelService.delete_log,
+                                   args=(CommonService.get_ip_address(request), userID, 'deleteV2', uid))
+            asy.start()
+            if userID == deviceInfo.vodPrimaryUserID:
+                Device_Info.objects.filter(UID=uid).update(vodPrimaryUserID='', vodPrimaryMaster='')
+
+            deviceInfo.delete()
+            if not deviceInfo.isShare:
+                # a.主用户删除设备
+                # 删除设备影子信息uid_set   外键关联删除设备推送配置信息 uid_push
+                up_qs = UidPushModel.objects.filter(uid_set__uid=uid)
+                DetectControllerView().do_delete_redis(uid)
+                if up_qs.count() > 1:
+                    UidPushModel.objects.filter(uid_set__uid=uid, userID_id=userID).delete()
+                    redisObj = RedisObject(db=6, SERVER_HOST='push.dvema.com')
+                    ykey = '{uid}_redis_qs'.format(uid=uid)
+                    if ykey:
+                        redisObj.del_data(key=ykey)
+                else:
+                    up_qs.delete()
+                # b.删除次用户设备
+                Device_Info.objects.filter(UID=uid, isShare=True, primaryUserID=userID).delete()
+                    # 异步删除推送消息
+            asy = threading.Thread(target=ModelService.del_eq_info, args=(userID, uid))
+            asy.start()
+    except Exception as e:
+        errorInfo = traceback.format_exc()
+        print('删除数据库记录错误: %s' % errorInfo)
+        return response.json(176, repr(e))
+    else:
+        return response.json(0)
 
 
 # 新查询设备字段
 # 新查询设备字段
 def queryInterface(request):
 def queryInterface(request):