Просмотр исходного кода

新增超级密码模块;添加超级密码请求表;备注接口功能

guanhailong 2 лет назад
Родитель
Сommit
2190e6bb7a
4 измененных файлов с 230 добавлено и 2 удалено
  1. 36 1
      AdminController/UserManageController.py
  2. 3 1
      Ansjer/urls.py
  3. 173 0
      Controller/AppAccountManagement.py
  4. 18 0
      Model/models.py

+ 36 - 1
AdminController/UserManageController.py

@@ -310,6 +310,16 @@ class UserManagement(View):
                 return response.json(404)
 
     def getUserInfo(self, userID, request_dict, response):
+        """
+        @param userID:用户ID
+        @param request_dict:请求参数
+        @param response:响应对象
+        @param username:用户名
+        @param NickName:用户昵称
+        @param phone:电话号
+        @param userEmail:用户邮箱
+        @return:
+        """
         print('request_dict: ', request_dict)
         username = request_dict.get('username', '').strip()  # 移除字符串头尾的空格
         NickName = request_dict.get('NickName', '').strip()
@@ -369,7 +379,15 @@ class UserManagement(View):
             return response.json(500, repr(e))
 
     def AddOrEditAccount(self, userID, request_dict, response):
-        # 添加/编辑用户
+        """
+        添加/编辑用户
+        @param userID:用户ID
+        @param request_dict:请求参数
+        @param response:响应对象
+        @param roleName:用户角色
+        @param isEdit:添加用户需要输入密码
+        @return:
+        """
         print('request_dict: ', request_dict)
         username = request_dict.get('username', '').strip()  # 移除字符串头尾的空格
         userEmail = request_dict.get('userEmail', '').strip()
@@ -454,6 +472,14 @@ class UserManagement(View):
             return response.json(500, repr(e))
 
     def getFeedbackList(self, request_dict, response):
+        """
+        用户反馈查询
+        @param request_dict:请求参数
+        @param response:响应对象
+        @param status:回复状态
+        @param collectStatus:收藏状态1
+        @return:
+        """
         status = request_dict.get('status', 0)
         username = request_dict.get('username', None)
         collectStatus = request_dict.get('collectStatus', None)
@@ -542,6 +568,14 @@ class UserManagement(View):
             return response.json(500, repr(e))
 
     def sendSysMsgToUser(self, request_dict, response):
+        """
+        发送系统消息至用户
+        @param request_dict:请求参数
+        @param response:响应对象
+        @param userID:用户ID
+        @param msg:发送内容
+        @return:
+        """
         userID = request_dict.get('userID', None)
         msg = request_dict.get('msg', None)
 
@@ -571,6 +605,7 @@ class UserManagement(View):
             return response.json(500, repr(e))
 
     def getSysMessageList(self, request_dict, response):
+        # 功能群发查询
         print('request_dict: ', request_dict)
         pageNo = request_dict.get('pageNo', None)
         pageSize = request_dict.get('pageSize', None)

+ 3 - 1
Ansjer/urls.py

@@ -22,7 +22,7 @@ from Controller import FeedBack, EquipmentOTA, EquipmentInfo, AdminManage, AppIn
     OrderTaskController, HistoryUIDController, UIDManageUserController, SerialNumberController, CompanyController, \
     RegionController, VPGController, LanguageController, TestController, DeviceConfirmRegion, S3GetStsController, \
     DetectControllerV2, PcInfo, PctestController, DeviceDebug, PaymentCycle, \
-    DeviceLogController, CouponController, AiController, ShadowController
+    DeviceLogController, CouponController, AiController, ShadowController, AppAccountManagement
 from Controller.Cron import CronTaskController
 from Controller.MessagePush import EquipmentMessagePush
 from Controller.Surveys import CloudStorageController
@@ -357,6 +357,8 @@ urlpatterns = [
     url(r'^algorithm-shop/', include("Ansjer.server_urls.algorithm_shop_url")),
     # KVS模块
     url(r'^kvs/', include("Ansjer.server_urls.kvs_url")),
+    # 超级密码模块
+    re_path('appAccout/(?P<operation>.*)', AppAccountManagement.AppAccoutView.as_view()),
 
     # 传感器网关
     re_path('sensorGateway/(?P<operation>.*)', SensorGatewayController.SensorGateway.as_view()),

+ 173 - 0
Controller/AppAccountManagement.py

@@ -0,0 +1,173 @@
+# -*- 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))

+ 18 - 0
Model/models.py

@@ -3315,3 +3315,21 @@ class DeviceTypeSharePermission(models.Model):
         db_table = 'device_type_share_permission'
         verbose_name = '设备类型关联分享权限'
         verbose_name_plural = verbose_name
+
+
+class DeviceSuperPassword(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name='自增id')
+    uid = models.CharField(blank=True, db_index=True, max_length=32, verbose_name=u'设备UID')
+    userID = models.ForeignKey(Device_User, blank=True, to_field='userID', on_delete=models.CASCADE)
+    orderID = models.CharField(max_length=30, db_index=True, verbose_name='订单ID', blank=True, default='')
+    describe = models.CharField(max_length=128, blank=True, verbose_name='需求描述', default=0)
+    purchase_channel = models.CharField(max_length=128, blank=True, verbose_name='购买渠道描述', default='')
+    addTime = models.IntegerField(default=0, verbose_name='添加时间')
+    status = models.SmallIntegerField(default=0, verbose_name='0:未通过,1:通过')
+    buyTime = models.IntegerField(default=0, verbose_name='购买时间')
+    hint = models.CharField(max_length=128, blank=True, verbose_name='温馨提示', default='')
+
+    class Meta:
+        db_table = 'device_super_password'
+        verbose_name = '超级密码请求表'
+        verbose_name_plural = verbose_name