Forráskód Böngészése

app下载链接确认地区接口

locky 1 éve
szülő
commit
85186cd3fb
2 módosított fájl, 33 hozzáadás és 1 törlés
  1. 1 1
      Ansjer/urls.py
  2. 32 0
      Controller/DeviceConfirmRegion.py

+ 1 - 1
Ansjer/urls.py

@@ -335,7 +335,7 @@ urlpatterns = [
     url(r'^device/confirmRegion$', DeviceConfirmRegion.ConfirmRegion.as_view()),
     url(r'^device/confirmRegionV2$', DeviceConfirmRegion.ConfirmRegionV2.as_view()),
     url(r'^device/confirmCountry$', DeviceConfirmRegion.confirm_country_with_ip),
-
+    re_path(r'^appDownload/confirmRegion$', DeviceConfirmRegion.confirm_region_with_ip),
     # pc端软件信息
     url(r'^pcInfo/(?P<operation>.*)$', PcInfo.PcInfo.as_view()),
 

+ 32 - 0
Controller/DeviceConfirmRegion.py

@@ -1,5 +1,6 @@
 import time
 
+from django.http import HttpResponse
 from django.utils.decorators import method_decorator
 from django.views import View
 
@@ -251,3 +252,34 @@ def confirm_country_with_ip(request):
     except Exception as e:
         print(e)
         return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
+
+def confirm_region_with_ip(request):
+    """
+    app下载链接确认地区
+    @param request:
+    @return:
+    """
+    try:
+        request.encoding = 'utf-8'
+        ip = CommonService.get_ip_address(request)
+
+        # 获取地区和国家信息
+        ip_addr_qs = IPAddr.objects.filter(ip=ip, is_geoip2=False).values('region', 'country_code')
+        if ip_addr_qs.exists():
+            region = ip_addr_qs[0]['region']
+            country_code = ip_addr_qs[0]['country_code']
+        else:
+            ip_qs = IPQuery(ip)
+            region = ip_qs.region
+            country_code = ip_qs.country_id
+
+        # 海外返回200状态码,国内403
+        if country_code != 'CN':
+            return HttpResponse()
+        elif region in ['香港', '澳门', '台湾']:
+            return HttpResponse()
+        return HttpResponse(status=403)
+    except Exception as e:
+        return HttpResponse(status=500,
+                            content='error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))