Răsfoiți Sursa

新增CONFIG_INFO配置信息,修改设备注册到iot及序列号绑定uid相关代码

locky 3 ani în urmă
părinte
comite
3224dbb526

+ 3 - 0
Ansjer/cn_config/config_formal.py

@@ -13,6 +13,9 @@
 """
 import os
 
+# 配置信息
+CONFIG_INFO = 'cn'
+
 NGINX_RTMP_STAT = 'http://www.zositechc.cn/stat'
 SERVER_DOMAIN_SSL = 'https://www.zositechc.cn/'
 SERVER_DOMAIN = 'http://www.zositechc.cn/'

+ 3 - 0
Ansjer/cn_config/config_test.py

@@ -13,6 +13,9 @@
 """
 import os
 
+# 配置信息
+CONFIG_INFO = 'test'
+
 NGINX_RTMP_STAT = 'http://test.zositechc.cn/stat/'
 SERVER_DOMAIN = 'http://test.zositechc.cn/'
 SERVER_DOMAIN_SSL = 'https://test.zositechc.cn/'

+ 8 - 1
Ansjer/config.py

@@ -12,7 +12,14 @@
 @Contact: chanjunkai@163.com
 """
 # 主要静态变量配置文件
-import datetime, os
+import os
+import datetime
+
+# 配置信息
+CONFIG_TEST = 'test'
+CONFIG_CN = 'cn'
+CONFIG_US = 'us'
+CONFIG_EUR = 'eur'
 
 SERVER_TYPE = os.environ.get('DJANGO_SETTINGS_MODULE')
 print(SERVER_TYPE)

+ 3 - 0
Ansjer/eur_config/config_formal.py

@@ -13,6 +13,9 @@
 """
 import os
 
+# 配置信息
+CONFIG_INFO = 'eur'
+
 NGINX_RTMP_STAT = 'http://www.dvema.com/stat'
 SERVER_DOMAIN_SSL = 'https://www.dvema.com/'
 SERVER_DOMAIN = 'http://www.dvema.com/'

+ 3 - 0
Ansjer/us_config/config_formal.py

@@ -13,6 +13,9 @@
 """
 import os
 
+# 配置信息
+CONFIG_INFO = 'us'
+
 NGINX_RTMP_STAT = 'http://www.dvema.com/stat'
 SERVER_DOMAIN_SSL = 'https://www.dvema.com/'
 SERVER_DOMAIN = 'http://www.dvema.com/'

+ 3 - 8
Controller/IotCoreController.py

@@ -12,7 +12,7 @@ from django.views import View
 from Ansjer.config import AWS_IOT_GETS3_PULL_CHINA_ID, AWS_IOT_GETS3_PULL_CHINA_SECRET, \
     AWS_IOT_GETS3_PULL_FOREIGN_ID, AWS_IOT_GETS3_PULL_FOREIGN_SECRET, AWS_ARN, AWS_IOT_SES_ACCESS_CHINA_REGION, \
     AWS_IOT_SES_ACCESS_FOREIGN_REGION_ASIA, AWS_IOT_SES_ACCESS_FOREIGN_REGION_EUROPE, \
-    AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA
+    AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA, CONFIG_INFO, CONFIG_TEST, CONFIG_CN
 from Controller.DeviceConfirmRegion import Device_Region
 from Model.models import Device_Info, iotdeviceInfoModel, SerialNumberModel, UidSetModel
 from Object.IOTCore.IotObject import IOTClient
@@ -129,13 +129,8 @@ class IotCoreView(View):
                 }
                 return response.json(0, {'res': res})
             else:
-                # 根据地区id确定使用的boto3 client
-                region_id = request_dict.get('region_id', None)
-                if region_id:
-                    region_id = int(region_id)
-                else:
-                    ip = CommonService.get_ip_address(request)
-                    region_id = Device_Region().get_device_region(ip)
+                # 根据配置信息确定region_id
+                region_id = CommonService.confirm_region_id(request)
                 iotClient = IOTClient(region_id)
 
                 # 拼接物品名

+ 23 - 33
Controller/SerialNumberController.py

@@ -2,27 +2,23 @@
 # -*- coding: utf-8 -*-
 import json
 import logging
-import random
-import requests
 import time
 
+import requests
 from django.db import transaction
 from django.views import View
 
-from Controller.DetectController import DetectControllerView
-from Controller.DeviceConfirmRegion import Device_Region
-from Model.models import SerialNumberModel, CompanySerialModel, UIDCompanySerialModel, CompanyModel, RegionModel, \
-    CountryModel, UIDModel, Device_Info, iotdeviceInfoModel, UidPushModel, LogModel, MacModel, UidSetModel, UID_Bucket, \
-    Unused_Uid_Meal, Order_Model, StsCrdModel, VodHlsModel, ExperienceContextModel, Equipment_Info, UidUserModel
+from Ansjer.config import CRCKey, SERVER_DOMAIN_US, SERVER_DOMAIN_CN, CONFIG_INFO, CONFIG_TEST, CONFIG_US, \
+    CONFIG_CN
+from Model.models import SerialNumberModel, CompanySerialModel, UIDCompanySerialModel, UIDModel, Device_Info, \
+    iotdeviceInfoModel, LogModel, UidSetModel, UID_Bucket, \
+    Unused_Uid_Meal, Order_Model, StsCrdModel, VodHlsModel, ExperienceContextModel, UidUserModel
 from Object.RedisObject import RedisObject
-from Object.uidManageResponseObject import uidManageResponseObject
 from Object.TokenObject import TokenObject
+from Object.uidManageResponseObject import uidManageResponseObject
 from Service.AlgorithmService import AlgorithmBaseOn35
 from Service.CommonService import CommonService
-from Ansjer.config import CRCKey, SERVER_TYPE, SERVER_DOMAIN_US, SERVER_DOMAIN_CN
 from Service.EquipmentInfoService import EquipmentInfoService
-from Service.ModelService import ModelService
-from Object.AWS.S3Email import S3Email
 
 
 class SerialNumberView(View):
@@ -45,9 +41,9 @@ class SerialNumberView(View):
 
         if operation == 'getUID':
             return self.do_get_uid(request_dict, response)
-        elif operation == 'attachUID':      # 绑定uid
+        elif operation == 'attachUID':  # 绑定uid
             return self.do_attach_uid(request_dict, response, request)
-        elif operation == 'detachUID':      # 解绑uid
+        elif operation == 'detachUID':  # 解绑uid
             return self.do_detach_uid(request, request_dict, response)
         elif operation == 'create':
             return self.do_create(request_dict, response)
@@ -155,14 +151,8 @@ class SerialNumberView(View):
 
         try:
             if not country_id:
-                # 设备模拟国外环境测试
-                # if SERVER_TYPE == 'Ansjer.us_config.formal_settings':   # 国外正式配置使用固定ip进行测试
-                #     ip = '67.220.90.13'
-                # else:
-                #     ip = CommonService.get_ip_address(request)
-
-                ip = CommonService.get_ip_address(request)
-                country_id = Device_Region().get_device_region(ip)
+                # 根据配置信息确定region_id
+                country_id = CommonService.confirm_region_id(request)
 
             # 判断序列号是否已和企业关联
             company_serial_qs = CompanySerialModel.objects.filter(company__secret=company_id, serial_number=serial)
@@ -174,7 +164,7 @@ class SerialNumberView(View):
 
             if company_serial.status == 0:  # 该序列号未绑定企业
                 return response.json(173)
-            elif company_serial.status == 1:    # 绑定uid
+            elif company_serial.status == 1:  # 绑定uid
                 # redis加锁,防止同一个序列号重复绑定
                 key = serial + 'do_attach_uid'
                 redisObj = RedisObject()
@@ -188,7 +178,7 @@ class SerialNumberView(View):
                         # 查询是否存在未绑定序列号的uid
                         uid_qs = UIDModel.objects.filter(vpg__company_id=company_serial.company.id,
                                                          vpg__region_id=country_id, status=0, p2p_type=p2p_type). \
-                                                         order_by('id')
+                            order_by('id')
                         if not uid_qs.exists():
                             return response.json(375)
 
@@ -199,7 +189,7 @@ class SerialNumberView(View):
                             return response.json(377)
 
                         result = UIDModel.objects.filter(id=uid.id, status=0).update(status=2, update_time=now_time)
-                        if int(result) <= 0:    # 更新失败
+                        if int(result) <= 0:  # 更新失败
                             count += 1
                             continue
 
@@ -216,7 +206,7 @@ class SerialNumberView(View):
 
                         full_uid_code = uid.full_uid_code
                         if uid.platform in CRCKey.keys():
-                            full_uid_code += ':'+CRCKey[uid.platform]
+                            full_uid_code += ':' + CRCKey[uid.platform]
 
                         res = {
                             'full_uid_code': CommonService.encode_data(full_uid_code),
@@ -249,7 +239,7 @@ class SerialNumberView(View):
                         redisObj.del_data(key=key)
                         return response.json(0, res)
                     return response.json(5)
-            elif company_serial.status == 2:   # 返回uid
+            elif company_serial.status == 2:  # 返回uid
                 uid_qs = UIDCompanySerialModel.objects.filter(company_serial_id=company_serial.id)
                 if not uid_qs.exists():
                     return response.json(173)
@@ -257,7 +247,7 @@ class SerialNumberView(View):
                                     'uid__platform', 'uid__init_string', 'uid__init_string_app')[0]
                 full_uid_code = uid['uid__full_uid_code']
                 if uid['uid__platform'] in CRCKey.keys():
-                    full_uid_code += ':'+CRCKey[uid['uid__platform']]
+                    full_uid_code += ':' + CRCKey[uid['uid__platform']]
                 res = {
                     'full_uid_code': CommonService.encode_data(full_uid_code),
                     'uid': CommonService.encode_data(uid['uid__uid']),
@@ -333,7 +323,7 @@ class SerialNumberView(View):
         try:
             with transaction.atomic():
                 uid = uid_serial.uid.uid
-                company_serial_qs.update(status=1)      # 更新序列号状态
+                company_serial_qs.update(status=1)  # 更新序列号状态
                 # 删除设备相关数据,参考后台的设备重置删除的数据
                 Device_Info.objects.filter(UID=uid).delete()
                 UidSetModel.objects.filter(uid=uid).delete()
@@ -358,7 +348,7 @@ class SerialNumberView(View):
                 except AssertionError:
                     return response.json(378)
 
-                UIDModel.objects.filter(uid=uid).update(status=0, mac='')    # 重置uid的使用状态为未使用
+                UIDModel.objects.filter(uid=uid).update(status=0, mac='')  # 重置uid的使用状态为未使用
                 uid_serial.delete()
 
                 # 记录操作日志
@@ -382,11 +372,12 @@ class SerialNumberView(View):
 
     @staticmethod
     def update_serial_status(serial, status):
-        if SERVER_TYPE == 'Ansjer.cn_config.test_settings':   # 测试服不处理
+        if CONFIG_INFO == CONFIG_TEST:  # 测试服不处理
             return True
-        if SERVER_TYPE == 'Ansjer.us_config.formal_settings':
+        server_domain = SERVER_DOMAIN_CN
+        if CONFIG_INFO == CONFIG_US:
             server_domain = SERVER_DOMAIN_CN
-        elif SERVER_TYPE == 'Ansjer.cn_config.formal_settings':
+        elif CONFIG_INFO == CONFIG_CN:
             server_domain = SERVER_DOMAIN_US
         url = server_domain + 'serialNumber/changeSerialNumberStatus'
         data = {'serial': serial, 'status': status}
@@ -434,4 +425,3 @@ class SerialNumberView(View):
             djangoLogger = logging.getLogger('django')
             djangoLogger.exception(repr(e))
             return response.json(500, str(e))
-

+ 28 - 17
Service/CommonService.py

@@ -3,21 +3,22 @@
 import base64
 import datetime
 import time
+from base64 import encodebytes
 from pathlib import Path
 from random import Random
+
+import OpenSSL.crypto as ct
 import ipdb
 import requests
 import simplejson as json
 from django.core import serializers
-from django.http import HttpResponseRedirect
 from django.utils import timezone
 from pyipip import IPIPDatabase
-from Ansjer.config import BASE_DIR, UNICODE_ASCII_CHARACTER_SET, SERVER_DOMAIN_SSL
-import OpenSSL.crypto as ct
-from base64 import encodebytes
+
+from Ansjer.config import BASE_DIR, SERVER_DOMAIN_SSL, CONFIG_INFO, CONFIG_TEST, CONFIG_CN
 from Controller.CheckUserData import RandomStr
+from Controller.DeviceConfirmRegion import Device_Region
 from Model.models import iotdeviceInfoModel, Device_Info
-from Service.ModelService import ModelService
 
 
 class CommonService:
@@ -46,7 +47,7 @@ class CommonService:
         key_list = []
         value_list = []
         for k, v in request_dict.items():
-            key_list.append(k[k.index('[')+1:k.index(']')] if 'meta' in k else k)
+            key_list.append(k[k.index('[') + 1:k.index(']')] if 'meta' in k else k)
             if v == 'true':
                 v = True
             elif v == 'false':
@@ -286,17 +287,17 @@ class CommonService:
             return ''
         for i in range(start, end):
             if i == 1:
-                content = RandomStr(3, False)+content+RandomStr(3, False)
+                content = RandomStr(3, False) + content + RandomStr(3, False)
                 content = base64.b64encode(str(content).encode("utf-8")).decode('utf8')
             if i == 2:
-                content = RandomStr(2, False)+str(content)+RandomStr(2, False)
+                content = RandomStr(2, False) + str(content) + RandomStr(2, False)
                 content = base64.b64encode(str(content).encode("utf-8")).decode('utf8')
             if i == 3:
-                content = RandomStr(1, False)+str(content)+RandomStr(1, False)
+                content = RandomStr(1, False) + str(content) + RandomStr(1, False)
                 content = base64.b64encode(str(content).encode("utf-8")).decode('utf8')
         return content
 
-    #把格式化时间转换成时间戳
+    # 把格式化时间转换成时间戳
     @staticmethod
     def str_to_timestamp(str_time=None, format='%Y-%m-%d %H:%M:%S'):
         if str_time:
@@ -305,9 +306,6 @@ class CommonService:
             return int(result)
         return int(time.time())
 
-
-
-
     # 把时间戳转换成格式化
     @staticmethod
     def timestamp_to_str(timestamp=None, format='%Y-%m-%d %H:%M:%S'):
@@ -318,8 +316,7 @@ class CommonService:
         else:
             return time.strptime(format)
 
-
-    #计算N个月后的时间戳
+    # 计算N个月后的时间戳
     @staticmethod
     def calcMonthLater(addMonth, unix_timestamp=None):
         if unix_timestamp:
@@ -346,8 +343,8 @@ class CommonService:
         for is_format in range(4):
             try:
                 date_format = '{now_year}-{now_month}-{now_day} {now_hour}:{now_min}:{now_second}' \
-                    .format(now_year=now_year,now_month=now_month,now_day=now_day,now_hour=now_hour,
-                            now_min=now_min,now_second=now_second)
+                    .format(now_year=now_year, now_month=now_month, now_day=now_day, now_hour=now_hour,
+                            now_min=now_min, now_second=now_second)
                 timestamps = CommonService.str_to_timestamp(date_format)
             except Exception as e:
                 if str(e) == 'day is out of range for month':
@@ -597,3 +594,17 @@ GCqvlyw5dfxNA+EtxNE2wCW/LW7ENJlACgcfgPlBZtpLheWoZB/maw4=
             return 'Loocam_Device_' + thing_name_suffix
         else:
             return thing_name_suffix
+
+    @staticmethod
+    def confirm_region_id(request):
+        """
+        根据配置信息确定region_id
+        @param request: 请求体
+        @return region_id: 地区id
+        """
+        if CONFIG_INFO == CONFIG_TEST or CONFIG_INFO == CONFIG_CN:
+            region_id = 1
+        else:  # 国外配置暂时通过ip确认
+            ip = CommonService.get_ip_address(request)
+            region_id = Device_Region().get_device_region(ip)
+        return region_id