123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- # -*- encoding: utf-8 -*-
- """
- @File : UserDeviceShareController.py
- @Time : 2023/2/3 13:25
- @Author : guanhailong
- @Email : guanhailong@asj6.wecom.work
- @Software: PyCharm
- """
- import datetime
- import random
- import time
- from Controller.CheckUserData import RandomStr
- from Model.models import Device_User, Device_Info, DeviceSuperPassword
- from Object.RedisObject import RedisObject
- from Object.ResponseObject import ResponseObject
- from Object.TokenObject import TokenObject
- from django.views import View
- from Service.CommonService import CommonService
- class 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))
|