| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 | # -*- encoding: utf-8 -*-"""@File    : UserDeviceShareController.py@Time    : 2023/2/3 13:25@Author  : guanhailong@Email   : guanhailong@asj6.wecom.work@Software: PyCharm"""import datetimeimport randomimport timefrom Controller.CheckUserData import RandomStrfrom Model.models import Device_User, Device_Info, 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.GET        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)        response = ResponseObject(lang)        userID = token.userID        if token.code != 0:            return response.json(token.code)        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)        else:            return response.json(404)    def getAuthorizationCode(self, request_dict, response, userID):        """        @param uid:设备id        @param request_dict:请求参数        @param response:响应对象        @param describe:需求描述        @param Purchase_channel:购买渠道描述        @param orderID:订单id        @param buyTime:购买时间        @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)        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():                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)            return response.json(0, {'authcode': authcode})        except Exception as 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)        authcode = request_dict.get('authcode', None)        if verificationCode and authcode:            authcode = CommonService.decode_data(authcode)            super_password_id = 'super_password_' + verificationCode            redisObj = RedisObject(db=6)            # 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)    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))
 |