Kaynağa Gözat

增加新的删除设备接口

chenjunkai 6 yıl önce
ebeveyn
işleme
c26ca3aecb

+ 4 - 0
Ansjer/urls.py

@@ -34,6 +34,9 @@ urlpatterns = [
     url(r'^equipment/modifyUserEquipment$', EquipmentManager.modifyUserEquipmentInterface),
     url(r'^equipment/showAllUserEquipment$', EquipmentManager.showAllUserEquipmentInterface),
     url(r'^equipment/findEquipmentInfo$', EquipmentManager.findEquipmentInfoInterface),
+    # 新删除设备接口
+    url(r'^equipment/delete', EquipmentManager.deleteInterface),
+
     url(r'^OTA/uploads$', OTAEquipment.getUploadFiletoDirView.as_view()),
     url(r'^OTA/download$', OTAEquipment.downloadUpdataFileUrl),
     url(r'^OTA/downloads/(\w+)/(\w+[\w+]*.+[^_w]*.\w+)$', OTAEquipment.downloadUpdataFileUrlInterface),
@@ -96,6 +99,7 @@ urlpatterns = [
     url(r'^v2/account/register$', UserController.v2registerView.as_view()),
     url(r'^v2/account/forgetCode$', UserController.v2forgetPwdCodeView.as_view()),
     url(r'^v2/account/resetPwdByCode$', UserController.v2resetPwdByCodeView.as_view()),
+
     url(r'^detect/add$', EquipmentInfo.AddDetectionView.as_view()),
     url(r'^detect/status$', EquipmentInfo.DetectStatusView.as_view()),
     url(r'^cloudVod/(?P<operation>.*)$', CloudVod.CloudVodView.as_view()),

+ 0 - 5
Controller/CheckUserData.py

@@ -2,18 +2,13 @@
 
 import os
 import re
-import traceback
 from random import Random  # 用于生成随机码
 from wsgiref.util import FileWrapper
 
-from django.contrib.auth.hashers import make_password
 from django.http import HttpResponse
-from django.utils.decorators import method_decorator
 from django.views.decorators.csrf import csrf_exempt
-from django.views.generic import TemplateView
 
 from Ansjer.config import BASE_DIR
-from Model.models import Device_User
 from Object.ResponseObject import ResponseObject
 
 

+ 1 - 2
Controller/EquipmentInfo.py

@@ -86,8 +86,7 @@ class EquipmentInfo(View):
                 receiveTime=receiveTime,
                 eventTime=eventTime,
                 devNickName=device_info[0].NickName,
-                alarm=alarm
-            )
+                alarm=alarm)
             equipment_info.save()
         except Exception:
             errorInfo = traceback.format_exc()

+ 44 - 4
Controller/EquipmentManager.py

@@ -138,12 +138,52 @@ def delUserEquipmentInterface(request):
     userID = tko.userID
     # 主用户删除设备全部删除
     try:
-        dv_qs = Device_Info.objects.filter(userID_id=userID, id=id).values('UID', 'isShare')
-        if dv_qs[0]['isShare']:
-            Device_Info.objects.filter(userID_id=userID, id=id).delete()
+        Device_Info.objects.filter(userID_id=userID, id=id).delete()
+    except Exception as e:
+        errorInfo = traceback.format_exc()
+        print('删除数据库记录错误: %s' % errorInfo)
+        return response.json(176, repr(e))
+    else:
+        return response.json(0)
+
+
+@csrf_exempt
+def deleteInterface(request):
+    '''
+    删除用户设备
+    :param request:
+    :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)
+    id = request_dict.get('id', None)
+    if not id:
+        return response.json(444, 'id')
+    tko = TokenObject(token)
+    response.lang = tko.lang
+    if tko.code != 0:
+        return response.json(tko.code)
+    userID = tko.userID
+    # 主用户删除设备全部删除
+    try:
+        dv_qs = Device_Info.objects.filter(userID_id=userID, id=id)
+        uid = dv_qs[0].UID
+        if dv_qs[0].isShare:
+            dv_qs.delete()
         else:
             # 主用户删除设备
-            Device_Info.objects.filter(UID=dv_qs[0]['UID']).delete()
+            dv_qs.delete()
+            # 分享获得用户假删除
+            ud_dv_qs = Device_Info.objects.filter(UID=uid)
+            if ud_dv_qs.exists():
+                ud_dv_qs.update(isExist=0)
     except Exception as e:
         errorInfo = traceback.format_exc()
         print('删除数据库记录错误: %s' % errorInfo)

+ 3 - 5
Controller/UserController.py

@@ -999,22 +999,20 @@ class v2LoginView(TemplateView):
         return self.valid_login(user_qs, password, response)
 
     def do_phone_login(self, phone, password, response):
-        user_qs = Device_User.objects.filter(Q(phone=phone) | Q(username=phone))
+        user_qs = Device_User.objects.filter(Q(phone=phone) | Q(username=phone), is_active=True, user_isValid=True)
         return self.valid_login(user_qs, password, response)
 
     def do_name_login(self, username, password, response):
-        user_qs = Device_User.objects.filter(Q(username=username) | Q(phone=username) | Q(userEmail=username))
+        user_qs = Device_User.objects.filter(Q(username=username) | Q(phone=username) | Q(userEmail=username), is_active=True, user_isValid=True)
         return self.valid_login(user_qs, password, response)
 
     def valid_login(self, user_qs, password, response):
         if not user_qs.exists():
             return response.json(104)
         users = user_qs.values('role__rid', 'role__roleName', 'userID', 'role', 'NickName', 'username', 'userEmail',
-                               'phone', 'password', 'userIconPath','user_isValid','is_active')[0]
+                               'phone', 'password', 'userIconPath', 'user_isValid', 'is_active')[0]
         if not check_password(password, users['password']):
             return response.json(111)
-        if not users['user_isValid'] or not users['is_active']:
-            return response.json(110)
         userID = users['userID']
         tko = TokenObject()
         res = tko.generate(data={'userID': userID, 'lang': response.lang, 'user': users['username']})

+ 2 - 1
Model/models.py

@@ -276,7 +276,8 @@ class Device_Info(models.Model):
     MirrorType = models.IntegerField(blank=True, default=0, verbose_name=u'镜像类型 0:关闭镜像,1:上下镜像,2:左右镜像,3:上下左右镜像')
     RecordType = models.IntegerField(blank=True, default=0, verbose_name=u'录像模式(0:关闭,1:全是录像,3:报警录像)')
     TimeZone = models.CharField(blank=True, max_length=50, default='', verbose_name=u'时区')
-    isVod = models.SmallIntegerField(blank=True, default=0, verbose_name='是否支持云存')
+    isVod = models.SmallIntegerField(blank=True, default=0, verbose_name='是否支持云存') # 是否支持云存设备
+    isExist = models.SmallIntegerField(blank=True, default=1, verbose_name='是否被删除') # 是否被删除了(需主用户交互)
     ###
     REQUIRED_FIELDS = []