Przeglądaj źródła

重构超级密码

guanhailong 2 lat temu
rodzic
commit
ed8ca0c80d
2 zmienionych plików z 164 dodań i 107 usunięć
  1. 121 2
      AdminController/UserManageController.py
  2. 43 105
      Controller/AppAccountManagement.py

+ 121 - 2
AdminController/UserManageController.py

@@ -23,9 +23,10 @@ from django.views.decorators.csrf import csrf_exempt
 from django.views.generic import TemplateView
 
 from Ansjer.config import SERVER_DOMAIN, OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET
-from Controller.CheckUserData import DataValid
+from Controller.CheckUserData import DataValid, RandomStr
 from Model.models import Device_User, Role, UserExModel, CountryModel, MenuModel, FeedBackModel, StatResModel, \
-    SysMassModel, App_Info, SysMsgModel
+    SysMassModel, App_Info, SysMsgModel, DeviceSuperPassword
+from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
@@ -306,6 +307,12 @@ class UserManagement(View):
                 return self.collectFeedBack(request_dict, response)
             elif operation == 'exportFeedBack':
                 return self.exportFeedBack(request_dict, response)
+            if operation == 'customerServiceManagement':  # 审核用户请求/生成超级密码
+                return self.customerServiceManagement(request_dict, response)
+            if operation == 'getDeviceSuperPassword':  # 查询超级密码请求表
+                return self.getDeviceSuperPassword(request_dict, response)
+            if operation == 'deleteInformation':  # 删除超级密码请求表
+                return self.deleteInformation(request_dict, response)
             else:
                 return response.json(404)
 
@@ -760,3 +767,115 @@ class UserManagement(View):
             return response.json(0, {'list': feed_back_list})
         except Exception as e:
             print(e)
+
+    def customerServiceManagement(self, request_dict, response):
+        """
+        审核用户请求/生成超级密码
+        @param request_dict:请求参数
+        @param response:响应对象
+        @request_dict status: 0:未通过,1:通过
+        @request_dict hint: 温馨提示
+        @return:
+        """
+        ID = request_dict.get('ID', None)
+        userID = request_dict.get('userID', None)
+        uid = request_dict.get('uid', None)
+        status = request_dict.get('status', None)
+        hint = request_dict.get('hint', None)
+        lang = request_dict.get('lang', 'en')
+        if not all({ID, uid, userID}):
+            return response.json(444, 'ID, uid, userID')
+        now = int(time.time())
+        try:
+            with transaction.atomic():
+                device_super_password_qs = DeviceSuperPassword.objects.filter(id=ID, uid=uid, userID=userID)
+                if not device_super_password_qs.exists():
+                    return response.json(173)
+                status = int(status)
+                if status == 1:
+                    # 验证码生成
+                    super_code = RandomStr(6, True)
+                    super_password_id = "super_password_%s" % userID
+                    redisObj = RedisObject()
+                    redis = redisObj.set_data(key=super_password_id, val=super_code, expire=86400)
+                    if redis is False:
+                        return response.json(121)
+                    device_super_password_qs.update(status=status)
+                    if lang == 'en':
+                        msg = "Your authorization code is " + super_code + ",valid within 24 hours"
+                    else:
+                        msg = "您的授权代码:" + super_code + ",24小时内有效"
+                    # eventType: 0系统消息,1 ipcamera消息,2 超级密码
+                    SysMsgModel.objects.create(userID_id=userID, msg=msg, addTime=now, updTime=now, uid=uid,
+                                               eventType=2)
+                    return response.json(0)
+                if status == 0 and len(hint) > 1:
+                    device_super_password_qs.update(status=status, hint=hint)
+                    SysMsgModel.objects.create(userID_id=userID, msg=hint, addTime=now, updTime=now, uid=uid,
+                                               eventType=2)
+                    return response.json(0)
+                return response.json(177)
+        except Exception as e:
+            print('修改状态异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            return response.json(500, repr(e))
+
+    def getDeviceSuperPassword(self, request_dict, response):
+        """
+        查询用户请求表
+        @param request_dict:请求参数
+        @param response:响应对象
+        @return:
+        """
+        pageNo = request_dict.get('pageNo', None)
+        pageSize = request_dict.get('pageSize', None)
+        status = request_dict.get('status', None)
+        userID = request_dict.get('userID', None)
+        uid = request_dict.get('uid', None)
+        if not all([pageNo, pageSize]):
+            return response.json(444)
+        page = int(pageNo)
+        line = int(pageSize)
+        try:
+            device_super_password_qs = DeviceSuperPassword.objects.all()
+            if status:
+                device_super_password_qs = device_super_password_qs.filter(status=status)
+            if userID:
+                device_super_password_qs = device_super_password_qs.filter(userID=userID)
+            if uid:
+                device_super_password_qs = device_super_password_qs.filter(uid=uid)
+            if not device_super_password_qs.exists():
+                return response.json(0, [])
+            count = device_super_password_qs.count()
+            device_super_password_qs = device_super_password_qs.values('id',
+                                                                       'uid',
+                                                                       'userID',
+                                                                       'orderID',
+                                                                       'describe',
+                                                                       'purchase_channel',
+                                                                       'addTime',
+                                                                       'status',
+                                                                       'buyTime',
+                                                                       'hint',
+                                                                       'lang',
+                                                                       'userID__username')
+            device_super_password_qs = device_super_password_qs.order_by('-addTime')[
+                                       (page - 1) * line:page * line]
+            return response.json(0, {'list': list(device_super_password_qs), 'count': count})
+        except Exception as e:
+            print('查询异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            return response.json(500, repr(e))
+
+    def deleteInformation(self, request_dict, response):
+        """
+        删除信息
+        @param request_dict:请求参数
+        @param response:响应对象
+        """
+        ID = request_dict.get('id', None)
+        if not ID:
+            return response.json(444)
+        device_super_password_qs = DeviceSuperPassword.objects.filter(id=ID)
+        if not device_super_password_qs.exists():
+            return response.json(173)
+        device_super_password_qs.delete()
+        return response.json(0)

+ 43 - 105
Controller/AppAccountManagement.py

@@ -7,11 +7,10 @@
 @Software: PyCharm
 """
 import datetime
-import random
 import time
+import logging
 
-from Controller.CheckUserData import RandomStr
-from Model.models import Device_User, Device_Info, DeviceSuperPassword
+from Model.models import Device_User, DeviceSuperPassword
 from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
@@ -30,78 +29,77 @@ class AppAccoutView(View):
     def post(self, request, *args, **kwargs):
         request.encoding = 'utf-8'
         operation = kwargs.get('operation')
-        request_dict = request.GET
+        request_dict = request.POST
         return self.validation(request_dict, request, operation)
 
     def validation(self, request_dict, request, operation):
-        token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
-        lang = request_dict.get('lang', token.lang)
+        tko = TokenObject(
+            request.META.get('HTTP_AUTHORIZATION'))
+        lang = request_dict.get('lang', tko.lang)
+        logger = logging.getLogger('info')
+        logger.info("传参语言{}".format(lang))
         response = ResponseObject(lang)
-        userID = token.userID
-        if token.code != 0:
-            return response.json(token.code)
-        if operation == 'getAuthorizationCode':  # 获取用户请求/生成授权码
+        if tko.code != 0:
+            return response.json(tko.code)
+        userID = tko.userID
+        if operation == 'getAuthorizationCode':  # 用户提交请求
             return self.getAuthorizationCode(request_dict, response, userID)
-        if operation == 'verifyTheVerificationCode':  # 效验验证码
-            return self.verifyTheVerificationCode(request_dict, response)
-        if operation == 'customerServiceManagement':  # 客服管理
-            return self.customerServiceManagement(request_dict, response)
-        if operation == 'getDeviceSuperPassword':  # 查询超级密码请求表
-            return self.getDeviceSuperPassword(request_dict, response)
+        if operation == 'verifyTheVerificationCode':  # 检验验证码
+            return self.verifyTheVerificationCode(request_dict, response, userID)
         else:
             return response.json(404)
 
-    def getAuthorizationCode(self, request_dict, response, userID):
+    @staticmethod
+    def getAuthorizationCode(request_dict, response, userID):
         """
-        @param uid:设备id
+        用户提交请求
         @param request_dict:请求参数
         @param response:响应对象
-        @param describe:需求描述
-        @param Purchase_channel:购买渠道描述
-        @param orderID:订单id
-        @param buyTime:购买时间
+        @param userID:用户ID
         @return:
         """
         uid = request_dict.get('uid', None)
+        # 需求描述
         describe = request_dict.get('describe', None)
-        if not all([uid, describe]):
-            return response.json(444)
         purchase_channel = request_dict.get('purchase_channel', None)
         orderID = request_dict.get('orderID', None)
         buyTime = request_dict.get('buyTime', None)
+        lang = request_dict.get('lang', 'en')
+        if not all([uid, describe]):
+            return response.json(444, 'uid, describe')
         try:
-            now = int(time.time())
-            addTime = now
-            device_info_qs = Device_Info.objects.filter(UID=uid, userID_id=userID)
-            if not device_info_qs.exists():
+            nowTime = int(time.time())
+            device_user_qs = Device_User.objects.filter(userID=userID)
+            if not device_user_qs.exists():
                 return response.json(173)
             if buyTime:
                 buyTime = datetime.datetime.strptime(buyTime, '%Y-%m-%d')
                 buyTime = CommonService.str_to_timestamp(str_time=str(buyTime))
             DeviceSuperPassword.objects.create(uid=uid, orderID=orderID, describe=describe,
-                                               purchase_channel=purchase_channel, addTime=addTime, userID=userID,
-                                               buyTime=buyTime, status=0)
-            # 验证码生成
-            super_code = RandomStr(6, True)
-            super_password_id = "super_password_%s" % super_code
-            redisObj = RedisObject(db=6)
-            redisObj.set_data(key=super_password_id, val=super_code, expire=86400)
-            authcode = CommonService.encode_data(super_code)
+                                               purchase_channel=purchase_channel, addTime=nowTime, userID_id=userID,
+                                               buyTime=buyTime, status=0, lang=lang)
 
-            return response.json(0, {'authcode': authcode})
+            return response.json(0)
         except Exception as e:
-            print('获取验证码异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            print('生成验证码异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
             return response.json(500, repr(e))
 
-    def verifyTheVerificationCode(self, request_dict, response):
-        verificationCode = request_dict.get('verificationCode', None)
+    @staticmethod
+    def verifyTheVerificationCode(request_dict, response, userID):
+        """
+        检验验证码
+        @param request_dict:请求参数
+        @param response:响应对象
+        @param userID:用户ID
+        @return:
+        """
         authcode = request_dict.get('authcode', None)
-
-        if verificationCode and authcode:
-
+        if authcode:
             authcode = CommonService.decode_data(authcode)
-            super_password_id = 'super_password_' + verificationCode
-            redisObj = RedisObject(db=6)
+            if not len(authcode) == 6:
+                return response.json(121)
+            super_password_id = 'super_password_' + userID
+            redisObj = RedisObject()
             # redis里面的验证码
             redis_image_code = redisObj.get_data(key=super_password_id)
             # 验证用户输入的验证码和redis中的验证码
@@ -111,63 +109,3 @@ class AppAccoutView(View):
                 return response.json(0)
         else:
             return response.json(444)
-
-    def customerServiceManagement(self, request_dict, response):
-        userID = request_dict.get('userID')
-        uid = request_dict.get('uid', None)
-        status = request_dict.get('status', None)
-        hint = request_dict.get('hint', None)
-        if not all({uid, userID}):
-            return response.json(444)
-        try:
-            device_super_password_qs = DeviceSuperPassword.objects.filter(uid=uid, userID=userID)
-            if not device_super_password_qs.exists():
-                return response.json(173)
-            status = int(status)
-            if status == 1:
-                device_super_password_qs.update(status=status)
-                return response.json(0)
-            else:
-                device_super_password_qs.update(status=status, hint=hint)
-                return response.json(0)
-        except Exception as e:
-            print('修改状态异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
-            return response.json(500, repr(e))
-
-    def getDeviceSuperPassword(self, request_dict, response):
-        pageNo = request_dict.get('pageNo', None)
-        pageSize = request_dict.get('pageSize', None)
-        status = request_dict.get('status', None)
-        userID = request_dict.get('userID', None)
-        uid = request_dict.get('uid', None)
-        if not all([pageNo, pageSize]):
-            return response.json(444)
-        page = int(pageNo)
-        line = int(pageSize)
-        try:
-            device_super_password_qs = DeviceSuperPassword.objects.all()
-            if status:
-                device_super_password_qs = device_super_password_qs.filter(status=status)
-            if userID:
-                device_super_password_qs = device_super_password_qs.filter(userID=userID)
-            if uid:
-                device_super_password_qs = device_super_password_qs.filter(uid=uid)
-            if not device_super_password_qs.exists():
-                return response.json(0, [])
-            count = device_super_password_qs.count()
-            device_super_password_qs = device_super_password_qs.values('id',
-                                                                       'uid',
-                                                                       'userID',
-                                                                       'orderID',
-                                                                       'describe',
-                                                                       'purchase_channel',
-                                                                       'addTime',
-                                                                       'status',
-                                                                       'buyTime',
-                                                                       'hint')
-            device_super_password_qs = device_super_password_qs.order_by('-addTime')[
-                                       (page - 1) * line:page * line]
-            return response.json(0, {'list': list(device_super_password_qs), 'count': count})
-        except Exception as e:
-            print('查询异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
-            return response.json(500, repr(e))