chenjunkai 6 سال پیش
والد
کامیت
e066fddd54
6فایلهای تغییر یافته به همراه175 افزوده شده و 199 حذف شده
  1. 1 1
      Ansjer/test/oss.py
  2. 39 44
      Controller/AdminManage.py
  3. 74 88
      Controller/EquipmentInfo.py
  4. 26 38
      Controller/UserController.py
  5. 5 2
      Object/TokenObject.py
  6. 30 26
      Service/MiscellService.py

+ 1 - 1
Ansjer/test/oss.py

@@ -27,7 +27,7 @@ auth = Auth(accessid, accesskey)
 bucket = Bucket(auth, host, bucket_name)
 ######################
 # 生成oss签名url
-url = bucket.sign_url('GET', 'vod/video/ii.m3u8', 60 * 60, params={'x-oss-process': 'hls/sign'})
+url = bucket.sign_url('GET', 'vod/video/vod.m3u8', 60 * 60, params={'x-oss-process': 'hls/sign'})
 # url = bucket.sign_url('GET', 'vod/playlist.m3u8', 60 * 60,params={'x-oss-process': 'hls/sign'})
 url = urllib.parse.unquote(url, encoding='utf-8', errors='replace')
 print(url)

+ 39 - 44
Controller/AdminManage.py

@@ -39,54 +39,49 @@ class AdminManage(TemplateView):
     def validation(self, request_dict, *args, **kwargs):
         response = ResponseObject()
         token = request_dict.get('token', None)
-        if token is not None:
-            tko = TokenObject(token)
-            tko.valid()
-            response.lang = tko.lang
-            if tko.code == 0:
-                userID = tko.userID
-                operation = request_dict.get('operation', None)
-                if userID is not None and operation is not None:
-                    if operation == 'resetUserPwd':
-                        return self.resetUserPwd(request_dict,userID,response)
-                    if operation == 'getAllOnLine':
-                        return self.getAllOnLine(userID,response)
-                    if operation == 'getOnLine':
-                        return self.getOnLine(userID,response)
-                    if operation == 'getAllUserName':
-                        return self.getAllUserName(userID,response)
-                    if operation == 'getStatisAccess':
-                        return self.getStatisAccess(userID,request_dict,response)
-                    if operation == 'getAllUID':
-                        return self.getAllUID(userID,response)
-                    if operation == 'getAllDeviceArea':
-                        return self.getAllDeviceArea(userID,response)
-                else:
-                    return response.json(444,'operation')
-            else:
-                return response.json(tko.code)
-        else:
-            return response.json(309)
+        tko = TokenObject(token)
+        tko.valid()
+        response.lang = tko.lang
+        if tko.code != 0:
+            return response.json(tko.code)
+        userID = tko.userID
+        operation = request_dict.get('operation', None)
+        if userID is None or operation is None:
+            return response.json(444, 'operation')
+        if operation == 'resetUserPwd':
+            return self.resetUserPwd(request_dict, userID, response)
+        if operation == 'getAllOnLine':
+            return self.getAllOnLine(userID, response)
+        if operation == 'getOnLine':
+            return self.getOnLine(userID, response)
+        if operation == 'getAllUserName':
+            return self.getAllUserName(userID, response)
+        if operation == 'getStatisAccess':
+            return self.getStatisAccess(userID, request_dict, response)
+        if operation == 'getAllUID':
+            return self.getAllUID(userID, response)
+        if operation == 'getAllDeviceArea':
+            return self.getAllDeviceArea(userID, response)
+
 
     def resetUserPwd(self, request_dict, userID,response):
         own_permission = ModelService.check_permission(userID=userID, permID=50)
-        if own_permission:
-            duserID = request_dict.get('duserID', None)
-            userPwd = request_dict.get('userPwd', None)
-            if duserID:
-                UserValid = Device_User.objects.filter(userID=duserID)
-                if UserValid:
-                    if userPwd is None:
-                        userPwd = '123456'
-                    is_update = UserValid.update(password=make_password(userPwd))
-                    if is_update:
-                        return response.json(0)
-                    else:
-                        return response.json(106)
-            else:
-                return response.json(444,'duserID')
-        else:
+        if not own_permission:
             return response.json(404)
+        duserID = request_dict.get('duserID', None)
+        userPwd = request_dict.get('userPwd', None)
+        if duserID:
+            UserValid = Device_User.objects.filter(userID=duserID)
+            if UserValid:
+                if userPwd is None:
+                    userPwd = '123456'
+                is_update = UserValid.update(password=make_password(userPwd))
+                if is_update:
+                    return response.json(0)
+                else:
+                    return response.json(106)
+        else:
+            return response.json(444, 'duserID')
 
     def getAllUserName(self, userID,response):
         # 权限固定为30

+ 74 - 88
Controller/EquipmentInfo.py

@@ -34,35 +34,30 @@ class EquipmentInfo(View):
     def validation(self, request_dict, *args, **kwargs):
         token = request_dict.get('token', None)
         response = ResponseObject()
-        if token is not None:
-            tko = TokenObject(token)
-            tko.valid()
-            from var_dump import var_dump
-            var_dump(tko.lang)
-            response.lang = tko.lang
-            if tko.code == 0:
-                userID = tko.userID
-                operation = request_dict.get('operation', None)
-                if userID is not None and operation is not None:
-                    if operation == 'query':
-                        return self.query_info(request_dict, userID, response)
-                    elif operation == 'add':
-                        return self.add_info(request_dict, userID, response)
-                    elif operation == 'update':
-                        return self.update_info(request_dict, userID, response)
-                    elif operation == 'delete':
-                        return self.delete_info(request_dict, userID, response)
-                    elif operation == 'findByTime':
-                        return self.findByTime_info(request_dict, userID, response)
-                    if operation == 'queryByAdmin':
-                        return self.query_all_info(request_dict, userID, response)
-                    if operation == 'deleteByAdmin':
-                        return self.delete_by_admin(request_dict, userID, response)
-                return response.json(444,'operation')
-            else:
-                return response.json(tko.code)
+        tko = TokenObject(token)
+        tko.valid()
+        if tko.code != 0:
+            return response.json(tko.code)
+        userID = tko.userID
+        operation = request_dict.get('operation', None)
+        if not userID:
+            return response.json(444, 'operation')
+        if operation == 'query':
+            return self.query_info(request_dict, userID, response)
+        elif operation == 'add':
+            return self.add_info(request_dict, userID, response)
+        elif operation == 'update':
+            return self.update_info(request_dict, userID, response)
+        elif operation == 'delete':
+            return self.delete_info(request_dict, userID, response)
+        elif operation == 'findByTime':
+            return self.findByTime_info(request_dict, userID, response)
+        if operation == 'queryByAdmin':
+            return self.query_all_info(request_dict, userID, response)
+        if operation == 'deleteByAdmin':
+            return self.delete_by_admin(request_dict, userID, response)
         else:
-            return response.json(309)
+            return response.json(444, 'operation')
 
     def add_info(self, request_dict, userID,response):
         devUid = request_dict.get('devUid', None)
@@ -71,77 +66,67 @@ class EquipmentInfo(View):
         eventTime = request_dict.get('eventTime', None)
         receiveTime = request_dict.get('receiveTime', None)
         alarm = request_dict.get('alarm', None)
-        param_flag = CommonService.get_param_flag(data=[devUid, Channel, eventType, eventTime, alarm, receiveTime])
-        if param_flag is True:
-            own_device = ModelService.check_own_device(userID, UID=devUid)
-            if own_device is True:
+        if not devUid or not Channel or not eventType or not eventTime or not alarm or not receiveTime:
+            return response.json(444,'devUid, Channel, eventType, eventTime, alarm, receiveTime')
+        own_device = ModelService.check_own_device(userID, UID=devUid)
+        if own_device is not True:
+            return response.json(14)
+        try:
+            device_info = Device_Info.objects.filter(UID=devUid, userID_id=userID)
+        except Exception:
+            errorInfo = traceback.format_exc()
+            print(errorInfo)
+            return response.json(424, errorInfo)
+        else:
+            if device_info.exists():
                 try:
-                    device_info = Device_Info.objects.filter(UID=devUid,userID_id=userID)
+                    equipment_info = Equipment_Info(
+                        userID=Device_User.objects.get(userID=userID),
+                        devUid=devUid,
+                        Channel=Channel,
+                        eventType=eventType,
+                        receiveTime=receiveTime,
+                        eventTime=eventTime,
+                        viewPwd=device_info[0].View_Password,
+                        devNickName=device_info[0].NickName,
+                        viewAccont=device_info[0].View_Account,
+                        alarm=alarm
+                    )
+                    equipment_info.save()
                 except Exception:
                     errorInfo = traceback.format_exc()
                     print(errorInfo)
-                    return response.json(424, errorInfo)
+                    return response.json(500, errorInfo)
                 else:
-                    if device_info.exists():
-                        try:
-                            equipment_info = Equipment_Info(
-                                userID=Device_User.objects.get(userID=userID),
-                                devUid=devUid,
-                                Channel=Channel,
-                                eventType=eventType,
-                                receiveTime=receiveTime,
-                                eventTime=eventTime,
-                                viewPwd=device_info[0].View_Password,
-                                devNickName=device_info[0].NickName,
-                                viewAccont=device_info[0].View_Account,
-                                alarm=alarm
-                            )
-                            equipment_info.save()
-                        except Exception:
-                            errorInfo = traceback.format_exc()
-                            print(errorInfo)
-                            return response.json(500, errorInfo)
-                        else:
-                            if equipment_info.id:
-                                return response.json(0, {'infoID': equipment_info.id,
-                                                        'devUid': devUid,
-                                                        'Channel': Channel,
-                                                        'alarm': alarm,
-                                                        'eventType': eventType,
-                                                        'eventTime': eventTime,
-                                                        'receiveTime': receiveTime,
-                                                        'viewPwd': equipment_info.viewPwd,
-                                                        'devNickName': equipment_info.devNickName,
-                                                        'viewAccont': equipment_info.viewAccont})
-                            else:
-                                return response.json(500)
+                    if equipment_info.id:
+                        return response.json(0, {'infoID': equipment_info.id,
+                                                 'devUid': devUid,
+                                                 'Channel': Channel,
+                                                 'alarm': alarm,
+                                                 'eventType': eventType,
+                                                 'eventTime': eventTime,
+                                                 'receiveTime': receiveTime,
+                                                 'viewPwd': equipment_info.viewPwd,
+                                                 'devNickName': equipment_info.devNickName,
+                                                 'viewAccont': equipment_info.viewAccont})
                     else:
-                        return response.json(14)
+                        return response.json(500)
             else:
                 return response.json(14)
-        return response.json(444)
 
     def query_info(self, request_dict, userID,response):
         page = int(request_dict.get('page', None))
         line = int(request_dict.get('line', None))
-        param_flag = CommonService.get_param_flag(data=[page, line])
-        if param_flag is True:
-            equipment_info_queryset = Equipment_Info.objects.filter(userID_id=userID)
-            if equipment_info_queryset.exists():
-                equipment_info_count = equipment_info_queryset.count()
-                equipment_info_res = equipment_info_queryset[(page - 1) * line:page * line]
-                send_json = CommonService.qs_to_dict(equipment_info_res)
-                send_json['count'] = equipment_info_count
-                return response.json(0, send_json)
-            else:
-                # uid_list = Device_Info.objects.filter(userID_id=userID).values_list('UID', flat=True)
-                # devNickName_list = Device_Info.objects.filter(userID_id=userID).values_list('NickName', flat=True)
-                # if len(uid_list) and len(devNickName_list):
-                #     Equipment_Info.objects.filter(devUid__in=uid_list, devNickName__in=devNickName_list).update(
-                #         userID=userID)
-                return response.json(0, {'datas': [], 'count': 0})
-        else:
-            return response.json(444)
+        if not page or not line:
+            return response.json(444,'page,line')
+        equipment_info_queryset = Equipment_Info.objects.filter(userID_id=userID)
+        if not equipment_info_queryset.exists():
+            return response.json(0, {'datas': [], 'count': 0})
+        equipment_info_count = equipment_info_queryset.count()
+        equipment_info_res = equipment_info_queryset[(page - 1) * line:page * line]
+        send_json = CommonService.qs_to_dict(equipment_info_res)
+        send_json['count'] = equipment_info_count
+        return response.json(0, send_json)
 
     def update_info(self, request_dict, userID, response):
         id_list = request_dict.getlist('id[]', None)
@@ -249,4 +234,5 @@ class EquipmentInfo(View):
             else:
                 return response.json(404)
         else:
-            return response.json(444)
+            return response.json(444)
+

+ 26 - 38
Controller/UserController.py

@@ -291,21 +291,13 @@ class LogoutView(TemplateView):
 
     def Logout(self, request, token):
         response = ResponseObject()
-        if token:
-            tko = TokenObject(token)
-            tko.valid()
-            if tko.code == 0:
-                try:
-                    MiscellService.add_access_log(request=request, status_code=200)
-                except Exception as e:
-                    pass
-                is_udpate = Device_User.objects.filter(userID=tko.userID).update(online=False)
-                if is_udpate:
-                    return response.json(0)
-            else:
-                return response.json(tko.code)
-        else:
-            return response.json(800)
+        tko = TokenObject(token)
+        tko.valid()
+        if tko.code != 0:
+            return response.json(tko.code)
+        MiscellService.add_access_log(request=request, status_code=200)
+        Device_User.objects.filter(userID=tko.userID).update(online=False)
+        return response.json(0)
 
 
 # 修改密码
@@ -329,31 +321,28 @@ class ChangePwdView(TemplateView):
         oldPwd = request_dict.get('oldPwd', None)
         newPwd = request_dict.get('newPwd', None)
         response = ResponseObject()
-        if token and oldPwd and newPwd:
-            tko = TokenObject(token)
-            tko.valid()
-            response.lang = tko.lang
-            if tko.code == 0:
-                return self.updatePwd(tko.userID, oldPwd, newPwd, response)
-            else:
-                return response.json(tko.code)
-        else:
+        if oldPwd is None and newPwd is None:
             return response.json(800)
+        tko = TokenObject(token)
+        tko.valid()
+        response.lang = tko.lang
+        if tko.code != 0:
+            return response.json(tko.code)
+        return self.updatePwd(tko.userID, oldPwd, newPwd, response)
 
     def updatePwd(self, userID, oldPwd, newPwd, response):
         user_qs = Device_User.objects.filter(userID=userID)
-        if user_qs.exists():
-            c_p = check_password(oldPwd, user_qs[0].password)
-            if c_p:
-                update = user_qs.update(password=make_password(newPwd))
-                if update:
-                    return response.json(0)
-                else:
-                    return response.json(112)
-            else:
-                return response.json(111)
-        else:
+        if not user_qs.exists():
             return response.json(113)
+        c_p = check_password(oldPwd, user_qs[0].password)
+        # 密码是否正确
+        if not c_p:
+            return response.json(111)
+        update = user_qs.update(password=make_password(newPwd))
+        if update:
+            return response.json(0)
+        else:
+            return response.json(112)
 
 
 class ForgetPwdView(TemplateView):
@@ -834,7 +823,7 @@ class v2forgetPwdCodeView(TemplateView):
         if not reds.set_data(key=email + '_forgetPwdResetCode', val=resetCode, expire=600):
             return response.json(10, '生成缓存错误')
         send_data = TemplateService.email_message(type='forgetCode', language=response.lang)
-        send_body = send_data['body'].format(userEmail=email,email_valid_code=resetCode)
+        send_body = send_data['body'].format(userEmail=email, email_valid_code=resetCode)
         ses = SesClassObject()
         send_res = ses.send_email(send_address_list=[email], subject=send_data['title'], body=send_body)
         if send_res is not True:
@@ -908,7 +897,6 @@ class v2resetPwdByCodeView(TemplateView):
             return response.json(10, '删除缓存失败')
         return response.json(0)
 
-
     def do_phone_pwd_reset(self, phone, authcode, password, response):
         data_valid = DataValid()
         if data_valid.mobile_validate(phone) is not True:
@@ -1026,7 +1014,7 @@ class v2LoginView(TemplateView):
         return self.valid_login(user_qs, password, response)
 
     def do_name_login(self, username, password, response):
-        user_qs = Device_User.objects.filter(username=username)
+        user_qs = Device_User.objects.filter(Q(username=username) | Q(phone=username) | Q(userEmail=username))
         if not user_qs.exists():
             return response.json(104)
         if not user_qs[0].user_isValid or not user_qs[0].is_active:

+ 5 - 2
Object/TokenObject.py

@@ -29,6 +29,9 @@ class TokenObject:
         self.userID = None
 
     def valid(self):
+        if self.token is None:
+            self.code = 309
+            return
         try:
             res = jwt.decode(self.token, OAUTH_ACCESS_TOKEN_SECRET, algorithms='HS256')
             self.userID = res.get('userID', None)
@@ -71,7 +74,7 @@ class TokenObject:
                 'refresh_token': refresh_token.decode('utf-8'),
             }
         except Exception as e:
-            self.code = 45
+            self.code = 309
             print(repr(e))
         else:
             return res
@@ -84,7 +87,7 @@ class TokenObject:
             print(repr(e))
             self.code = 309
         except Exception as e:
-            self.code = 45
+            self.code = 309
             print(repr(e))
         else:
             userID = res['userID']

+ 30 - 26
Service/MiscellService.py

@@ -35,32 +35,36 @@ class MiscellService():
 
     @staticmethod
     def add_access_log(request, status_code):
-        request.encoding = 'utf-8'
-        if request.method == 'GET':
-            request_dict = request.GET
-        if request.method == 'POST':
-            request_dict = request.POST
-        api_list = TemplateService.log_api()
-        request_path = request.path.strip().strip('/')
-        if request_path in api_list:
-            user = MiscellService.get_access_name(request_dict=request_dict)
-            clientIP = CommonService.get_ip_address(request)
-            now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
-            password = request_dict.get('userPwd', None)
-            if password is not None:
-                request_dict = dict(request_dict)
-                request_dict.pop('userPwd')
-            content = json.dumps(request_dict)
-            add_data = {
-                'user': user,
-                'ip': clientIP,
-                'status': status_code,
-                'url': request.META['SERVER_PROTOCOL'] + '-' + request.method + '-' + request.path,
-                'operation': request_path,
-                'time': now_time,
-                'content': content
-            }
-            ModelService.addAccessLog(data=add_data)
+        try:
+            request.encoding = 'utf-8'
+            if request.method == 'GET':
+                request_dict = request.GET
+            if request.method == 'POST':
+                request_dict = request.POST
+            api_list = TemplateService.log_api()
+            request_path = request.path.strip().strip('/')
+            if request_path in api_list:
+                user = MiscellService.get_access_name(request_dict=request_dict)
+                clientIP = CommonService.get_ip_address(request)
+                now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
+                password = request_dict.get('userPwd', None)
+                if password is not None:
+                    request_dict = dict(request_dict)
+                    request_dict.pop('userPwd')
+                content = json.dumps(request_dict)
+                add_data = {
+                    'user': user,
+                    'ip': clientIP,
+                    'status': status_code,
+                    'url': request.META['SERVER_PROTOCOL'] + '-' + request.method + '-' + request.path,
+                    'operation': request_path,
+                    'time': now_time,
+                    'content': content
+                }
+                ModelService.addAccessLog(data=add_data)
+        except Exception as e:
+            pass
+
 
     @staticmethod
     def access_log(request,response,type):