Browse Source

新增设备域名V2接口

locky 3 years ago
parent
commit
14e1fda313
3 changed files with 67 additions and 4 deletions
  1. 1 0
      Ansjer/urls.py
  2. 51 4
      Controller/DeviceConfirmRegion.py
  3. 15 0
      Model/models.py

+ 1 - 0
Ansjer/urls.py

@@ -346,6 +346,7 @@ urlpatterns = [
 
     #设备确定分配地区
     url(r'^device/confirmRegion$', DeviceConfirmRegion.ConfirmRegion.as_view()),
+    url(r'^device/ConfirmRegionV2$', DeviceConfirmRegion.ConfirmRegionV2.as_view()),
 
     # pc端软件信息
     url(r'^pcInfo/(?P<operation>.*)$', PcInfo.PcInfo.as_view()),

+ 51 - 4
Controller/DeviceConfirmRegion.py

@@ -26,7 +26,7 @@ from ratelimit.decorators import ratelimit
 from Ansjer.config import AuthCode_Expire, SERVER_DOMAIN, APNS_CONFIG, JPUSH_CONFIG, FCM_CONFIG, TUTK_PUSH_DOMAIN
 from Controller.CheckUserData import DataValid, date_handler, RandomStr
 from Model.models import Device_User, Role, UidPushModel, UserOauth2Model, UserExModel, Device_Info, UidSetModel, \
-    UserAppFrequencyModel, CountryIPModel, CountryModel, RegionModel, P2PIpModel
+    UserAppFrequencyModel, CountryIPModel, CountryModel, RegionModel, P2PIpModel, DeviceDomainModel
 from Object.AWS.SesClassObject import SesClassObject
 from Object.AliSmsObject import AliSmsObject
 from Object.RedisObject import RedisObject
@@ -62,15 +62,62 @@ class ConfirmRegion(TemplateView):
         # serial_number = request.POST.get('serial_number', None)
         ip = CommonService.get_ip_address(request)
         # ip = '14.102.176.0'
-        ipInfo = CommonService.getIpIpInfo(ip,"CN")
+        ipInfo = CommonService.getIpIpInfo(ip, "CN")
         if ipInfo['country_code']:
             device_request_url = CountryModel.objects.filter(country_code=ipInfo['country_code']).values("region__api")
             if device_request_url.exists():
-                return response.json(0,{"request_api_url":device_request_url[0]['region__api']})
+                return response.json(0, {"request_api_url":device_request_url[0]['region__api']})
 
         # 不存在默认返回美洲地区api。
         api = RegionModel.objects.filter(continent_code='NA').values("api")
-        return response.json(0,{"request_api_url":api[0]['api']})
+        return response.json(0,{"request_api_url": api[0]['api']})
+
+
+# 根据设备的ip返回域名
+class ConfirmRegionV2(TemplateView):
+    @method_decorator(csrf_exempt)
+    def dispatch(self, *args, **kwargs):
+        return super(ConfirmRegionV2, self).dispatch(*args, **kwargs)
+
+    def get(self, request, *args, **kwargs):
+        try:
+            response = ResponseObject()
+            uid = request.GET.get('uid', None)
+            serial_number = request.GET.get('serial_number', None)
+            if not uid and not serial_number:
+                return response.json(444)
+            if uid:
+                data_dict = {'uid': uid}
+                device_domain_qs = DeviceDomainModel.objects.filter(uid=uid)
+            else:
+                data_dict = {'serial_number': serial_number}
+                device_domain_qs = DeviceDomainModel.objects.filter(serial_number=serial_number)
+            request.encoding = 'utf-8'
+            ip = CommonService.get_ip_address(request)
+            data_dict['ip'] = ip
+            ipInfo = CommonService.getIpIpInfo(ip, 'CN')
+            country_code = ipInfo['country_code']
+            if country_code:
+                data_dict['country_name'] = ipInfo['country_name']
+                device_request_url = CountryModel.objects.filter(country_code=country_code).values('region__api')
+                if device_request_url.exists():
+                    api = device_request_url[0]['region__api']
+                else:   # 默认返回美洲地区api
+                    api = RegionModel.objects.filter(continent_code='NA').values('api')[0]['api']
+            else:
+                # 默认返回美洲地区api
+                api = RegionModel.objects.filter(continent_code='NA').values('api')[0]['api']
+
+            # 更新或创建设备域名数据
+            if device_domain_qs.exists():
+                device_domain_qs.update(**data_dict)
+            else:
+                device_domain_qs.create(**data_dict)
+            return response.json(0, {"request_api_url": api})
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))
+
 
 #确认设备所在地区
 class Device_Region(object):

+ 15 - 0
Model/models.py

@@ -1897,6 +1897,21 @@ class P2PIpModel(models.Model):
         verbose_name_plural = verbose_name
 
 
+class DeviceDomainModel(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
+    uid = models.CharField(max_length=20, default='', unique=True, db_index=True, verbose_name='uid')
+    serial_number = models.CharField(max_length=9, default='', unique=True, db_index=True, verbose_name='序列号')
+    ip = models.CharField(default='', max_length=32, verbose_name='ip')
+    country_name = models.CharField(max_length=20, default='', verbose_name='国家名')
+    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'更新时间')
+
+    class Meta:
+        db_table = 'device_domain'
+        verbose_name = u'设备域名表'
+        verbose_name_plural = verbose_name
+
+
 class RequestRecordModel(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增ID')
     method = models.CharField(max_length=10, default='', verbose_name='请求类型')