locky vor 2 Jahren
Ursprung
Commit
803aa275de
1 geänderte Dateien mit 58 neuen und 13 gelöschten Zeilen
  1. 58 13
      Controller/RegionController.py

+ 58 - 13
Controller/RegionController.py

@@ -1,15 +1,13 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
 import json
 import time
 
+from django.db.models import F
 from django.views import View
 
-from Model.models import RegionModel, CountryModel, LanguageModel, CountryLanguageModel
-from Object.uidManageResponseObject import uidManageResponseObject
+from Model.models import RegionModel, CountryModel, LanguageModel, CountryLanguageModel, App_Info
 from Object.TokenObject import TokenObject
+from Object.uidManageResponseObject import uidManageResponseObject
 from Service.CommonService import CommonService
-from Service.ModelService import ModelService
 
 
 class RegionView(View):
@@ -27,13 +25,13 @@ class RegionView(View):
         return self.validate(request_dict, operation)
 
     def validate(self, request_dict, operation):
-        token = TokenObject(request_dict.get('token', None))
-
         response = uidManageResponseObject()
-
         if operation == 'getCountry':
             return self.get_country(request_dict, response)
+        elif operation == 'getCountryAndDomainName':
+            return self.get_country_and_domain_name(request_dict, response)
         else:
+            token = TokenObject(request_dict.get('token', None))
             if token.code != 0:
                 return response.json(token.code)
 
@@ -71,7 +69,7 @@ class RegionView(View):
         else:
             return response.json(444)
 
-    def do_update(self,  userID, request_dict, response):
+    def do_update(self, userID, request_dict, response):
         # perm = ModelService.check_perm_uid_manage(userID, 0)
         # if not perm:
         #     return response.json(309)
@@ -155,9 +153,10 @@ class RegionView(View):
             now_time = int(time.time())
             # countries = json.loads(countries)
 
-            country_qs =CountryModel.objects.filter(number=number)
+            country_qs = CountryModel.objects.filter(number=number)
             if not country_qs.exists():
-                country = CountryModel(number=number, region_id=region_id, add_time=now_time, update_time=now_time, country_name=countries)
+                country = CountryModel(number=number, region_id=region_id, add_time=now_time, update_time=now_time,
+                                       country_name=countries)
                 country.save()
             else:
                 country = country_qs[0]
@@ -166,7 +165,8 @@ class RegionView(View):
                 country_language_qs = CountryLanguageModel.objects.filter(language_id=item, country_id=country.id)
                 if not country_language_qs.exists():
                     countryLanguage = CountryLanguageModel(
-                        country_name=res[item], language_id=item, country_id=country.id, add_time=now_time, update_time=now_time)
+                        country_name=res[item], language_id=item, country_id=country.id, add_time=now_time,
+                        update_time=now_time)
                     countryLanguage.save()
             return response.json(0)
         else:
@@ -242,7 +242,8 @@ class RegionView(View):
             count = region_qs.count()
 
             if region_qs.exists():
-                region_qs = region_qs[start: end].values('country_id', 'country_name', 'country__number', 'country__region__name', 'add_time', 'update_time')
+                region_qs = region_qs[start: end].values('country_id', 'country_name', 'country__number',
+                                                         'country__region__name', 'add_time', 'update_time')
             else:
                 region_qs = []
             res = {
@@ -281,6 +282,50 @@ class RegionView(View):
         else:
             return response.json(444)
 
+    @staticmethod
+    def get_country_and_domain_name(request_dict, response):
+        lang = request_dict.get('lang', None)
+        app_bundle_id = request_dict.get('app_bundle_id', None)
+        time_stamp = request_dict.get('time_stamp', None)
+        time_stamp_token = request_dict.get('time_stamp_token', None)
+
+        if not all([lang, app_bundle_id, time_stamp, time_stamp_token]):
+            return response.json(444)
+
+        try:
+            # 校验时间戳token
+            time_stamp_token = int(CommonService.decode_data(time_stamp_token))
+            time_stamp = int(time_stamp)
+            now_time = int(time.time())
+            distance = now_time - time_stamp
+            if time_stamp_token != time_stamp or distance > 60000 or distance < -60000:  # 为了全球化时间控制在一天内
+                return response.json(404)
+
+            # 查询app名
+            app_inf_qs = App_Info.objects.filter(appBundleId=app_bundle_id).values('appName')
+            if not app_inf_qs.exists():
+                return response.json(173)
+
+            lang_qs = LanguageModel.objects.filter(lang=lang)
+            if not lang_qs.exists():
+                lang_qs = LanguageModel.objects.filter(lang='en')
+            lang = lang_qs[0]
+
+            # 根据app名返回相应域名
+            app_name = app_inf_qs[0]['appName']
+            country_qs = CountryLanguageModel.objects.filter(language_id=lang.id).annotate(
+                country_number=F('country__number'), push_api=F('country__region__push_api'))
+            if 'Zosi' in app_name:
+                country_qs = country_qs.annotate(api=F('country__region__zosi_api'))
+            elif 'Loocam' in app_name:
+                country_qs = country_qs.annotate(api=F('country__region__loocam_api'))
+            else:
+                country_qs = country_qs.annotate(api=F('country__region__api'))
+            country_qs = country_qs.values('country_name', 'country_number', 'api', 'push_api')
+            return response.json(0, list(country_qs))
+        except Exception as e:
+            return response.json(500, repr(e))
+
     def get_country_info(self, userID, request_dict, response):
         # perm = ModelService.check_perm_uid_manage(userID, 0)
         # if not perm: