浏览代码

扫码保存国家id,新增返回中东地区uid

locky 11 月之前
父节点
当前提交
3df2be06a6
共有 4 个文件被更改,包括 29 次插入11 次删除
  1. 3 1
      Ansjer/config.py
  2. 17 6
      Controller/SerialNumberController.py
  3. 1 0
      Model/models.py
  4. 8 4
      Service/CommonService.py

+ 3 - 1
Ansjer/config.py

@@ -25,7 +25,9 @@ UNUSED_SERIAL_REDIS_LIST = 'unused_serial_redis_list'
 RESET_REGION_ID_SERIAL_REDIS_LIST = 'reset_region_id_serial_redis_list'
 
 # 地区id列表
-REGION_ID_LIST = [1, 2, 3, 4, 5]
+REGION_ID_LIST = [1, 2, 3, 4, 5, 6]
+# 中东西亚国家id列表
+ME_COUNTRY_ID_LIST = [31, 32, 36, 39, 48]
 
 # 支付类型
 PAY_TYPE_PAYPAL = 1

+ 17 - 6
Controller/SerialNumberController.py

@@ -15,7 +15,7 @@ from Controller.UnicomCombo.UnicomComboController import UnicomComboView
 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, DeviceDomainRegionModel, RegionModel, UidPushModel, AppScannedSerial
+    AiService, DeviceDomainRegionModel, RegionModel, UidPushModel, AppScannedSerial, Device_User
 from Object.AWS.S3Email import S3Email
 from Object.RedisObject import RedisObject
 from Object.TokenObject import TokenObject
@@ -50,7 +50,10 @@ class SerialNumberView(View):
         elif operation == 'detachUID':  # 解绑uid
             return self.do_detach_uid(request, request_dict, response)
         elif operation == 'get-uid':  # app获取uid
-            return self.get_uid(request_dict, response, request)
+            token_code, user_id, response = CommonService.verify_token_get_user_id(request_dict, request)
+            if token_code != 0:
+                return response.json(token_code)
+            return self.get_uid(request_dict, response, request, user_id)
         elif operation == 'create':  # 创建序列号
             return self.do_create(request_dict, response)
         elif operation == 'getUID':  # 根据序列号获取uid
@@ -148,10 +151,11 @@ class SerialNumberView(View):
             elif company_serial.status == 1:  # 绑定uid
 
                 # 查询app是否已扫码,未扫码不能进行绑定
-                app_scanned_serial_qs = AppScannedSerial.objects.filter(serial=serial)
+                app_scanned_serial_qs = AppScannedSerial.objects.filter(serial=serial).values('region_country')
                 if not app_scanned_serial_qs.exists():
                     LOGGER.info(f'{serial}当前序列号未进行APP扫码')
                     return response.json(5)
+                region_country = app_scanned_serial_qs[0]['region_country']
 
                 # redis加锁,防止同一个序列号重复绑定
                 key = serial + 'do_attach_uid'
@@ -161,7 +165,7 @@ class SerialNumberView(View):
                 redisObj.CONN.expire(key, 60)
 
                 # 获取并判断region_id
-                region_id = CommonService.confirm_region_id()
+                region_id = CommonService.confirm_region_id(region_country)
                 if region_id not in REGION_ID_LIST:
                     return response.json(444, {'invalid region_id': region_id})
 
@@ -641,12 +645,13 @@ class SerialNumberView(View):
             LogModel.objects.create(**log)
             return response.json(176, str(e))
 
-    def get_uid(self, request_dict, response, request):
+    def get_uid(self, request_dict, response, request, user_id):
         """
         app获取序列号
         @param request_dict:
         @param response:
         @param request:
+        @param user_id:
         @return:
         """
         token = request_dict.get('token', None)
@@ -673,9 +678,15 @@ class SerialNumberView(View):
         try:
             # 添加或更新扫码记录
             ip = CommonService.get_ip_address(request)
+            # 查询用户国家id
+            region_country = 0
+            device_user_qs = Device_User.objects.filter(userID=user_id).values('region_country')
+            if device_user_qs.exists():
+                region_country = device_user_qs[0]['region_country']
             data = {
                 'ip': ip,
-                'update_time': now_time
+                'update_time': now_time,
+                'region_country': region_country
             }
             app_scanned_serial_qs = AppScannedSerial.objects.filter(serial=serial)
             if app_scanned_serial_qs.exists():

+ 1 - 0
Model/models.py

@@ -3437,6 +3437,7 @@ class DeviceDomainRegionModel(models.Model):
 class AppScannedSerial(models.Model):
     id = models.AutoField(primary_key=True, verbose_name='主键')
     serial = models.CharField(default='', max_length=9, db_index=True, verbose_name='序列号')
+    region_country = models.IntegerField(default=0, verbose_name='关联tb_country表id')
     ip = models.CharField(default='', max_length=32, verbose_name='ip')
     add_time = models.IntegerField(default=0, verbose_name='添加时间')
     update_time = models.IntegerField(default=0, verbose_name='更新时间')

+ 8 - 4
Service/CommonService.py

@@ -19,7 +19,8 @@ from django.utils.crypto import constant_time_compare
 from pyipip import IPIPDatabase
 
 from Ansjer.config import BASE_DIR, SERVER_DOMAIN_SSL, CONFIG_INFO, CONFIG_TEST, CONFIG_CN, SERVER_DOMAIN_TEST, \
-    SERVER_DOMAIN_CN, SERVER_DOMAIN_US, CONFIG_US, CONFIG_EUR, SERVER_DOMAIN_LIST, SERVER_DOMAIN_EUR, ALEXA_DOMAIN
+    SERVER_DOMAIN_CN, SERVER_DOMAIN_US, CONFIG_US, CONFIG_EUR, SERVER_DOMAIN_LIST, SERVER_DOMAIN_EUR, ALEXA_DOMAIN, \
+    ME_COUNTRY_ID_LIST
 from Controller.CheckUserData import RandomStr
 from Model.models import iotdeviceInfoModel, Device_Info, UIDModel, AppDeviceType, UIDCompanySerialModel, GatewayPush, \
     Device_User
@@ -605,14 +606,17 @@ GCqvlyw5dfxNA+EtxNE2wCW/LW7ENJlACgcfgPlBZtpLheWoZB/maw4=
             return thing_name_suffix
 
     @staticmethod
-    def confirm_region_id():
+    def confirm_region_id(region_country=0):
         """
-        根据配置信息确定region_id
+        根据配置信息和国家确定region_id
+        @param region_country: 用户国家id
         @return: region_id
         """
         region_id = 3
         if CONFIG_INFO == CONFIG_US:  # 美洲
-            region_id = 3
+            # '沙特阿拉伯', '‌阿拉伯联合酋长国','格鲁吉亚','土耳其','阿塞拜疆'返回中东地区id
+            if region_country in ME_COUNTRY_ID_LIST:
+                region_id = 6
         elif CONFIG_INFO == CONFIG_EUR:  # 欧洲
             region_id = 4
         elif CONFIG_INFO == CONFIG_CN:  # 中国