Эх сурвалжийг харах

新增根据序列号确认域名接口

locky 2 жил өмнө
parent
commit
4234474aba

+ 0 - 1
Ansjer/urls.py

@@ -343,7 +343,6 @@ urlpatterns = [
     url(r'^pcTest/(?P<operation>.*)$', PctestController.PcTest.as_view()),
 
     # 设备debug
-    # url(r'^deviceDebug/(?P<operation>.*)$', DeviceDebug.DeviceDebug.as_view()),
     re_path('deviceDebug/(?P<operation>.*)', DeviceDebug.DeviceDebug.as_view()),
 
     # 问卷调查

+ 90 - 124
Controller/SerialNumberController.py

@@ -1,21 +1,17 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
 import json
 import logging
 import time
 
-import requests
 from django.db import transaction
 from django.views import View
 
-from Ansjer.config import CRCKey, SERVER_DOMAIN_US, SERVER_DOMAIN_CN, CONFIG_INFO, CONFIG_TEST, CONFIG_US, \
+from Ansjer.config import CRCKey, CONFIG_INFO, CONFIG_TEST, CONFIG_US, \
     CONFIG_CN, USED_SERIAL_REDIS_LIST, UNUSED_SERIAL_REDIS_LIST
 from Model.models import SerialNumberModel, CompanySerialModel, UIDCompanySerialModel, UIDModel, Device_Info, \
     iotdeviceInfoModel, LogModel, UidSetModel, UID_Bucket, \
     Unused_Uid_Meal, Order_Model, StsCrdModel, VodHlsModel, ExperienceContextModel, UidUserModel, ExperienceAiModel, \
-    AiService
+    AiService, DeviceDomainRegionModel, RegionModel
 from Object.RedisObject import RedisObject
-from Object.TokenObject import TokenObject
 from Object.uidManageResponseObject import uidManageResponseObject
 from Service.AlgorithmService import AlgorithmBaseOn35
 from Service.CommonService import CommonService
@@ -37,35 +33,27 @@ class SerialNumberView(View):
         return self.validate(request_dict, operation, request)
 
     def validate(self, request_dict, operation, request):
-        token = TokenObject(request_dict.get('token', None))
         response = uidManageResponseObject()
 
-        if operation == 'getUID':
-            return self.do_get_uid(request_dict, response)
-        elif operation == 'attachUID':  # 绑定uid
+        if operation == 'attachUID':  # 绑定uid
             return self.do_attach_uid(request_dict, response, request)
         elif operation == 'detachUID':  # 解绑uid
             return self.do_detach_uid(request, request_dict, response)
-        elif operation == 'create':
+        elif operation == 'create':  # 创建序列号
             return self.do_create(request_dict, response)
-        elif operation == 'changeSerialNumberStatus':
-            return self.changeSerialNumberStatus(request_dict, response)
-        elif operation == 'getRegionInfo':
+        elif operation == 'getUID':  # 根据序列号获取uid
+            return self.do_get_uid(request_dict, response)
+        elif operation == 'getRegionInfo':  # 根据序列号状态确认uid地区(PC工具使用)
             return self.get_region_info(request_dict, response)
+        elif operation == 'saveRegion':  # 保存序列号地区信息(app使用)
+            return self.save_region(request, request_dict, response)
+        elif operation == 'getDomain':  # 获取域名(设备使用)
+            return self.get_domain(request_dict, response)
         else:
-            if token.code != 0:
-                return response.json(token.code)
-
-            # if operation == 'create':
-            #     return self.do_create(request_dict, response)
-            elif operation == 'list':
-                return self.do_list(token.userID, request_dict, response)
-            elif operation == 'update':
-                return self.do_update(token.userID, request_dict, response)
-            else:
-                return response.json(404)
+            return response.json(414)
 
-    def do_create(self, request_dict, response):
+    @staticmethod
+    def do_create(request_dict, response):
         quantity = int(request_dict.get('quantity', 0))
 
         if not quantity:
@@ -73,15 +61,15 @@ class SerialNumberView(View):
 
         try:
             try:
-                sum = SerialNumberModel.objects.last().id
+                number = SerialNumberModel.objects.last().id
             except:
-                sum = 0
+                number = 0
             serial_number_bulk = []
             now_time = int(time.time())
             algorithm = AlgorithmBaseOn35()
             for i in range(quantity):
-                serial_number = algorithm.getLetter(sum)
-                sum += 1  # sum每次递增1
+                serial_number = algorithm.getLetter(number)
+                number += 1  # sum每次递增1
                 # 前面补0至六位
                 serial_number = (6 - len(serial_number)) * '0' + serial_number
                 serial_number_bulk.append(SerialNumberModel(serial_number=serial_number, add_time=now_time))
@@ -93,43 +81,6 @@ class SerialNumberView(View):
             print(e)
             return response.json(500, repr(e))
 
-    def do_list(self, userID, request_dict, response):
-        # perm = ModelService.check_perm_uid_manage(userID, 0)
-        # if not perm:
-        #     return response.json(309)
-
-        page = request_dict.get('page', None)
-        line = request_dict.get('limit', None)
-        serial_number = request_dict.get('serial_number', None)
-        status = request_dict.get('status', None)
-
-        if page and line:
-            page = int(page)
-            line = int(line)
-
-            serial_qs = SerialNumberModel.objects.filter().order_by('-id')
-
-            if serial_number:
-                serial_qs = serial_qs.filter(serial_number__contains=serial_number)
-
-            if status:
-                serial_qs = serial_qs.filter(status=status)
-
-            count = serial_qs.count()
-
-            start = (page - 1) * line
-            end = start + line
-
-            serial_qs = serial_qs[start: end].values()
-            res = {
-                'count': count,
-                'data': list(serial_qs)
-            }
-
-            return response.json(0, res)
-        else:
-            return response.json(444)
-
     def do_attach_uid(self, request_dict, response, request):
         serial_number = request_dict.get('serial_number', None)
         token = request_dict.get('token', None)
@@ -378,69 +329,13 @@ class SerialNumberView(View):
             djangoLogger.exception(repr(e))
             return response.json(176, str(e))
 
-    @staticmethod
-    def update_serial_status(serial, status):
-        if CONFIG_INFO == CONFIG_TEST:  # 测试服不处理
-            return True
-        server_domain = SERVER_DOMAIN_CN
-        if CONFIG_INFO == CONFIG_US:
-            server_domain = SERVER_DOMAIN_CN
-        elif CONFIG_INFO == CONFIG_CN:
-            server_domain = SERVER_DOMAIN_US
-        url = server_domain + 'serialNumber/changeSerialNumberStatus'
-        data = {'serial': serial, 'status': status}
-        req_res = requests.post(url=url, data=data, timeout=2)
-        if req_res.status_code != 200:
-            return False
-        req_res = req_res.json()
-        if req_res['result_code'] != 0:
-            return False
-        return True
-
-    def do_update(self, userID, request_dict, response):
-        # perm = ModelService.check_perm_uid_manage(userID, 0)
-        # if not perm:
-        #     return response.json(309)
-
-        id = request_dict.get('id', None)
-        status = request_dict.get('status', None)
-
-        if id and status:
-            serial_number_qs = SerialNumberModel.objects.filter(id=id)
-            if serial_number_qs.exists():
-                serial_number_qs.update(**{'status': status})
-                return response.json(0)
-            else:
-                return response.json(173)
-        else:
-            return response.json(444)
-
-    # 序列号绑定和解绑uid时修改其他数据库序列号的使用状态
-    def changeSerialNumberStatus(self, request_dict, response):
-        serial = request_dict.get('serial', None)
-        status = request_dict.get('status', None)
-        if not all([serial, status]):
-            return response(444)
-
-        try:
-            # 更新CompanySerialModel表的序列号使用状态
-            update = CompanySerialModel.objects.filter(serial_number=serial).update(status=int(status))
-            if update:
-                return response.json(0)
-            else:
-                return response.json(378)
-        except Exception as e:
-            djangoLogger = logging.getLogger('django')
-            djangoLogger.exception(repr(e))
-            return response.json(500, str(e))
-
     @staticmethod
     def get_region_info(request_dict, response):
         """
         根据序列号状态确认uid地区
         @param request_dict: 请求参数
         @param response: 响应对象
-        @request_dict endTime: 结束时间
+        @request_dict serial_number: 序列号
         @return: response
         """
         serial_number = request_dict.get('serial_number', None)
@@ -461,3 +356,74 @@ class SerialNumberView(View):
             elif CONFIG_INFO == CONFIG_US:
                 return response.json(0, {'region': 1})
         return response.json(0)
+
+    @staticmethod
+    def save_region(request, request_dict, response):
+        """
+        保存序列号地区信息
+        @param request: 请求体
+        @param request_dict: 请求参数
+        @param response: 响应对象
+        @request_dict serial_number: 序列号
+        @return: response
+        """
+        serial_number = request_dict.get('serial_number', None)
+        time_stamp_token = request_dict.get('time_stamp_token', None)
+        time_stamp = request_dict.get('time_stamp', None)
+        if not all([serial_number, time_stamp_token, time_stamp]):
+            return response(444)
+        # 时间戳token校验
+        if not CommonService.check_time_stamp_token(time_stamp_token, time_stamp):
+            return response.json(13)
+
+        try:
+            serial_number = serial_number[:9]
+            region_data = {
+                'ip': CommonService.get_ip_address(request),
+                'region_id': CommonService.confirm_region_id()
+            }
+
+            device_domain_region_qs = DeviceDomainRegionModel.objects.filter(serial_number=serial_number)
+            if device_domain_region_qs.exists():
+                device_domain_region_qs.update(region_data)
+            else:
+                region_data['serial_number'] = serial_number
+                DeviceDomainRegionModel.objects.create(serial_number=serial_number)
+            return response.json(0)
+        except Exception as e:
+            return response.json(500, repr(e))
+
+    @staticmethod
+    def get_domain(request_dict, response):
+        """
+        获取域名
+        @param request_dict: 请求参数
+        @param response: 响应对象
+        @request_dict serial_number: 序列号
+        @return: response
+        """
+        serial_number = request_dict.get('serial_number', None)
+        time_stamp_token = request_dict.get('time_stamp_token', None)
+        time_stamp = request_dict.get('time_stamp', None)
+        if not all([serial_number, time_stamp_token, time_stamp]):
+            return response(444)
+        # 时间戳token校验
+        if not CommonService.check_time_stamp_token(time_stamp_token, time_stamp):
+            return response.json(13)
+
+        try:
+            serial_number = serial_number[:9]
+
+            device_domain_region_qs = DeviceDomainRegionModel.objects.filter(serial_number=serial_number).values(
+                'region_id')
+            if not device_domain_region_qs.exists():
+                return response.json(173)
+            region_id = device_domain_region_qs[0]['region_id']
+            region_qs = RegionModel.objects.filter(id=region_id).values('api', 'push_api')
+            res = {
+                'api': region_qs[0]['api'],
+                'push_api': region_qs[0]['push_api']
+            }
+            return response.json(0, res)
+        except Exception as e:
+            return response.json(500, repr(e))

+ 8 - 8
Model/models.py

@@ -2276,18 +2276,18 @@ class DeviceDomainModel(models.Model):
 
 
 class DeviceDomainRegionModel(models.Model):
-    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
-    serial_number = models.CharField(max_length=9, default='', verbose_name='序列号')
+    id = models.AutoField(primary_key=True, verbose_name='主键')
+    serial_number = models.CharField(default='', max_length=9, verbose_name='序列号')
     ip = models.CharField(default='', max_length=32, verbose_name='ip')
-    country_name = models.CharField(max_length=20, default='', verbose_name='国家名')
-    api = models.CharField(max_length=50, default='', verbose_name='使用的域名')
-    region_id = models.SmallIntegerField(default=0, verbose_name='地区id')
-    add_time = models.DateTimeField(blank=True, auto_now_add=True, verbose_name=u'添加时间')
-    update_time = models.DateTimeField(blank=True, auto_now=True, verbose_name=u'更新时间')
+    country_name = models.CharField(default='', max_length=20, verbose_name='国家名')
+    api = models.CharField(default='', max_length=50, verbose_name='使用的域名')
+    region_id = models.SmallIntegerField(default=0, verbose_name='对应tb_region表id')
+    add_time = models.DateTimeField(blank=True, auto_now_add=True, verbose_name='添加时间')
+    update_time = models.DateTimeField(blank=True, auto_now=True, verbose_name='更新时间')
 
     class Meta:
         db_table = 'device_domain_region'
-        verbose_name = u'设备域名地区表'
+        verbose_name = '设备域名地区表'
         verbose_name_plural = verbose_name
 
 

+ 2 - 2
Object/ResponseObject.py

@@ -54,7 +54,7 @@ class ResponseObject(object):
             444: 'Wrong parameters!',
             474: 'System Maintaining!',
             475: 'App Version too low, please upgrade!',
-            500: 'Query Database Error:',
+            500: 'Internal error!',
             700: 'Upload file error',
             701: 'The file does not exist!',
             711: 'Do not downgrade',
@@ -164,7 +164,7 @@ class ResponseObject(object):
             444: '参数错误!',
             474: '系统维护中!',
             475: '版本过低,请升级程序!',
-            500: '查询数据库错误!',
+            500: '内部错误!',
             700: '上传文件错误',
             701: '文件不存在',
             711: '不可降级',

+ 4 - 0
Object/uidManageResponseObject.py

@@ -52,7 +52,9 @@ class uidManageResponseObject(object):
             378: '更新序列号状态失败',
             379: '序列号不存在',
             404: '没有访问权限!',
+            414: '请确认请求url!',
             444: '请确认参数的正确性!',
+            500: '内部错误!',
             1112: '您输入的两次密码不一致!',
             208: '只能预定当天的或者以后的!',
             10041: '已超出序列号剩余可绑定数',
@@ -103,7 +105,9 @@ class uidManageResponseObject(object):
             378: 'Failed to update serial number status',
             379: 'Serial number does not exist',
             404: 'You don not have permission to access this!',
+            414: 'Please confirm the request url!',
             444: 'Please confirm the correctness of the parameters!',
+            500: 'Internal error!',
             1112: 'The two passwords you entered do not match!',
             10041: 'The remaining number of serial numbers that can be bound has exceeded',
             10042: 'Serial number is already occupied',