| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 | # -*- encoding: utf-8 -*-"""@File    : UserDeviceShareController.py@Time    : 2023/2/3 13:25@Author  : guanhailong@Email   : guanhailong@asj6.wecom.work@Software: PyCharm"""import datetimeimport timeimport loggingfrom Model.models import Device_User, DeviceSuperPasswordfrom Object.RedisObject import RedisObjectfrom Object.ResponseObject import ResponseObjectfrom Object.TokenObject import TokenObjectfrom django.views import Viewfrom Service.CommonService import CommonServiceclass AppAccoutView(View):    def get(self, request, *args, **kwargs):        request.encoding = 'utf-8'        operation = kwargs.get('operation')        request_dict = request.GET        return self.validation(request_dict, request, operation)    def post(self, request, *args, **kwargs):        request.encoding = 'utf-8'        operation = kwargs.get('operation')        request_dict = request.POST        return self.validation(request_dict, request, operation)    def validation(self, request_dict, request, operation):        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)        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, userID)        else:            return response.json(404)    @staticmethod    def getAuthorizationCode(request_dict, response, userID):        """        用户提交请求        @param request_dict:请求参数        @param response:响应对象        @param userID:用户ID        @return:        """        uid = request_dict.get('uid', None)        # 需求描述        describe = request_dict.get('describe', None)        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:            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=nowTime, userID_id=userID,                                               buyTime=buyTime, status=0, lang=lang)            return response.json(0)        except Exception as e:            print('生成验证码异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))    @staticmethod    def verifyTheVerificationCode(request_dict, response, userID):        """        检验验证码        @param request_dict:请求参数        @param response:响应对象        @param userID:用户ID        @return:        """        authcode = request_dict.get('authcode', None)        if authcode:            authcode = CommonService.decode_data(authcode)            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中的验证码            if redis_image_code is False or authcode.lower() != redis_image_code.lower():                return response.json(121)            else:                return response.json(0)        else:            return response.json(444)
 |