Bladeren bron

完善保存设备地区信息接口

locky 2 jaren geleden
bovenliggende
commit
98b74fcd4d
1 gewijzigde bestanden met toevoegingen van 26 en 15 verwijderingen
  1. 26 15
      Controller/SerialNumberController.py

+ 26 - 15
Controller/SerialNumberController.py

@@ -13,6 +13,7 @@ from Model.models import SerialNumberModel, CompanySerialModel, UIDCompanySerial
     Unused_Uid_Meal, Order_Model, StsCrdModel, VodHlsModel, ExperienceContextModel, UidUserModel, ExperienceAiModel, \
     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
@@ -46,7 +47,7 @@ class SerialNumberView(View):
             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使用)
+        elif operation == 'saveRegion':  # 保存设备地区信息(app使用)
             return self.save_region(request, request_dict, response)
         elif operation == 'getDomain':  # 获取域名(设备使用)
             return self.get_domain(request_dict, response)
@@ -361,25 +362,25 @@ class SerialNumberView(View):
     @staticmethod
     def save_region(request, request_dict, response):
         """
-        保存序列号地区信息
+        保存设备地区信息
         @param request: 请求体
         @param request_dict: 请求参数
         @param response: 响应对象
-        @request_dict serial_number: 序列号
-        @request_dict time_stamp_token: 时间戳token
+        @request_dict token: 令牌
         @request_dict time_stamp: 时间戳
         @return: response
         """
+        token = request_dict.get('token', None)
         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]):
+        if not all([serial_number, token]):
             return response(444)
-        # 时间戳token校验
-        if not CommonService.check_time_stamp_token(time_stamp_token, time_stamp):
-            return response.json(13)
 
         try:
+            token_obj = TokenObject(token)
+            if token_obj.code != 0:
+                return response.json(token_obj.code)
+            response.lang = token_obj.lang
+
             serial_number = serial_number[:9]
 
             # 不是美洲服,请求美洲域名保存数据
@@ -397,18 +398,28 @@ class SerialNumberView(View):
                     return response.json(5)
             else:
                 data = {}
+
                 # 处理其他服务器发起请求的情况
                 region_id = request_dict.get('region_id', None)
                 if region_id is not None:
+                    region_id = int(region_id)
+                    data['region_id'] = region_id
                     data['ip'] = request_dict.get('ip', '')
-                    data['region_id'] = int(region_id)
-                # 更新或写入数据
-                device_domain_region_qs = DeviceDomainRegionModel.objects.filter(serial_number=serial_number)
-                if device_domain_region_qs.exists():
-                    device_domain_region_qs.update(**data)
                 else:
+                    region_id = CommonService.confirm_region_id()
+                    data['region_id'] = region_id
+                    data['ip'] = CommonService.get_ip_address(request)
+
+                # 写入数据
+                device_domain_region_qs = DeviceDomainRegionModel.objects.filter(serial_number=serial_number).\
+                    values('region_id')
+                if not device_domain_region_qs.exists():
                     data['serial_number'] = serial_number
                     DeviceDomainRegionModel.objects.create(**data)
+                else:
+                    # 设备解绑过uid,更新region_id
+                    if device_domain_region_qs[0]['region_id'] == 0:
+                        device_domain_region_qs.update(**data)
             return response.json(0)
         except Exception as e:
             return response.json(500, repr(e))