소스 검색

Merge branch 'dev' into lang

lang 4 년 전
부모
커밋
ec74f9b00d
4개의 변경된 파일79개의 추가작업 그리고 52개의 파일을 삭제
  1. 7 1
      Controller/EquipmentManagerV3.py
  2. 9 5
      Controller/IotCoreController.py
  3. 32 17
      Controller/SerialNumberController.py
  4. 31 29
      Controller/UserController.py

+ 7 - 1
Controller/EquipmentManagerV3.py

@@ -9,6 +9,7 @@ from Controller.CheckUserData import RandomStr
 import oss2, base64
 from django.db.models import Q
 from django.views.generic.base import View
+from Controller.DeviceConfirmRegion import Device_Region
 from Object.RedisObject import RedisObject
 from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY, BASE_DIR
 from Model.models import Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidPushModel, UidChannelSetModel, \
@@ -162,6 +163,9 @@ class EquipmentManagerV3(View):
                 us_qs.update(nickname=NickName)
                 UidSet_id = us_qs.first().id
             else:
+                ip = CommonService.get_ip_address(request)
+                region_id = Device_Region().get_device_region(ip)
+                region_alexa = 'CN' if region_id == 1 else 'ALL'
                 uid_set_create_dict = {
                     'uid': UID,
                     'addTime': nowTime,
@@ -170,6 +174,7 @@ class EquipmentManagerV3(View):
                     'channel': ChannelIndex,
                     'nickname': NickName,
                     'version': version,
+                    'region_alexa': region_alexa,
                 }
                 UidSet = UidSetModel.objects.create(**uid_set_create_dict)
                 UidSet_id = UidSet.id
@@ -727,7 +732,8 @@ class EquipmentManagerV3(View):
         dvq = dvq.filter(~Q(vodPrimaryUserID='')).values('vodPrimaryUserID')
         qs = {}
         if dvq.exists():
-            qs = Device_User.objects.filter(userID=dvq[0]['vodPrimaryUserID']).values('userID', 'NickName', 'username', 'userEmail', 'phone')
+            qs = Device_User.objects.filter(userID=dvq[0]['vodPrimaryUserID']).values('userID', 'NickName', 'username',
+                                                                                      'userEmail', 'phone')
             NickName = qs[0]['username']
             userEmail = qs[0]['userEmail']
             phone = qs[0]['phone']

+ 9 - 5
Controller/IotCoreController.py

@@ -252,7 +252,7 @@ class IotCoreView(View):
                                                                                             'token_iot_number')
             if not iot.exists():
                 return response.json(10043)
-            thing_name = iot[0]['thing_name']  # IoT core上的物品名: Ansjer_Device_+序列号+企业编码
+            thing_name = iot[0]['thing_name'][14:]  # IoT core上的物品名: Ansjer_Device_ + 序列号+企业编码/uid
             endpoint = iot[0]['endpoint']
             Token = iot[0]['token_iot_number']
             # Token = '297a601b3925e04daab5a60280650e09'
@@ -261,15 +261,19 @@ class IotCoreView(View):
             # rtsp://rtsp.zositech.org:8554/ZFdqWldXRFpMTkVaYVZEaEJXRXhUV0RFeE1VRT1B
             # api doc: https://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/http.html
             # https://IoT_data_endpoint/topics/url_encoded_topic_name?qos=1
-            # 请求url来发布MQTT消息
-            url = 'https://{}/topics/{}?rtsp_command={}'.format(endpoint, topic_name, MSG)
+            # post请求url来发布MQTT消息
+            url = 'https://{}/topics/{}'.format(endpoint, topic_name)
             authorizer_name = 'Ansjer_Iot_Auth'
             signature = self.rsa_sign(Token)  # Token签名
             headers = {'x-amz-customauthorizer-name': authorizer_name, 'Token': Token,
                        'x-amz-customauthorizer-signature': signature}
-            r = requests.get(url=url, headers=headers, timeout=2)
+            params = {'rtsp_command': MSG}
+            r = requests.post(url=url, headers=headers, json=params, timeout=2)
             if r.status_code == 200:
-                return response.json(0)
+                res = r.json()
+                if res['message'] == 'OK':
+                    return response.json(0)
+                return response.json(10044)
             else:
                 # print('发布失败')
                 return response.json(10044)

+ 32 - 17
Controller/SerialNumberController.py

@@ -7,9 +7,10 @@ import time
 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
+    CountryModel, UIDModel, Device_Info, iotdeviceInfoModel, UidPushModel
 from Object.RedisObject import RedisObject
 from Object.uidManageResponseObject import uidManageResponseObject
 from Object.TokenObject import TokenObject
@@ -188,16 +189,16 @@ class SerialNumberView(View):
 
         if serial_number and len(serial_number) == 9  and company_id:
 
-            # token = int(CommonService.decode_data(token))
-            # time_stamp = int(time_stamp)
-            #
-            # now_time = int(time.time())
-            # distance = now_time - time_stamp
-            #
-            # if token != time_stamp or distance > 60000 or distance < -60000: #为了全球化时间控制在一天内
-            #     return response.json(404)
-            #
-            # mark = serial_number[6:9]
+            token = int(CommonService.decode_data(token))
+            time_stamp = int(time_stamp)
+
+            now_time = int(time.time())
+            distance = now_time - time_stamp
+
+            if token != time_stamp or distance > 60000 or distance < -60000: #为了全球化时间控制在一天内
+                return response.json(404)
+
+            mark = serial_number[6:9]
             serial = serial_number[0:6]
 
             savePoint = transaction.savepoint()
@@ -350,8 +351,8 @@ class SerialNumberView(View):
             if uid_serial_qs.exists():
                 uid_serial = uid_serial_qs[0]
 
-                #iot = iotdeviceInfoModel.objects.filter(serial_number__serial_number=serial)
-                iot = iotdeviceInfoModel.objects.filter(thing_name="Ansjer_Device_" + serial_number)
+                iot = iotdeviceInfoModel.objects.filter(serial_number=serial)
+                #iot = iotdeviceInfoModel.objects.filter(thing_name="Ansjer_Device_" + serial_number)
                 if iot.exists():
                     iot.delete()
 
@@ -360,6 +361,23 @@ class SerialNumberView(View):
                     company_serial = company_serial_qs[0]
                     company_serial.status = 1
                     company_serial.save()
+                    mark = company_serial.company.mark
+                    dv_qs = Device_Info.objects.filter(serial_number=serial_number + mark)
+                    if dv_qs.exists():
+                        # a.主用户删除设备
+                        uid = dv_qs[0].UID
+                        dv_qs.delete()
+                        # 删除设备影子信息uid_set   外键关联删除设备推送配置信息 uid_push
+                        up_qs = UidPushModel.objects.filter(uid_set__uid=uid)
+                        DetectControllerView().do_delete_redis(uid)
+                        if up_qs.count() > 1:
+                            UidPushModel.objects.filter(uid_set__uid=uid).delete()
+                            redisObj = RedisObject(db=6, SERVER_HOST='push.dvema.com')
+                            ykey = '{uid}_redis_qs'.format(uid=uid)
+                            if ykey:
+                                redisObj.del_data(key=ykey)
+                        else:
+                            up_qs.delete()
 
                 uid_qs = UIDModel.objects.filter(uid=uid_serial.uid.uid)
                 if uid_qs.exists():
@@ -368,10 +386,7 @@ class SerialNumberView(View):
                     uid.save()
                 uid_serial.delete()
 
-                dev = Device_Info.objects.filter(serial_number=serial_number)
-                if dev.exists():
-                    dev.update(serial_number='')
-                return response.json(0)
+
             else:
                 return response.json(173)
         else:

+ 31 - 29
Controller/UserController.py

@@ -2729,39 +2729,41 @@ class alexaUidView(TemplateView):
             return response.json(107)
 
     def validates(self, request_dict, response):
-        userID = request_dict.get('alexa_user_id')
         sid = request_dict.get('sid')
         sst = request_dict.get('sst')
+        userID = request_dict.get('alexa_user_id')
 
-        if sid == 'admin' and sst == 'admin':
-            uid_qs = Device_Info.objects.filter(userID_id=userID, isExist=1).values('UID', 'NickName', 'View_Password')
-            uid_dict = {}
-            uid_list = []
-            for uid_q in uid_qs:
-                # 追加
-                uid_list.append(uid_q['UID'])
-                # 给uid_q['UID']赋值
-                uid_dict[uid_q['UID']] = {'nick': uid_q['NickName'], 'password': uid_q['View_Password']}
-            us_qs = UidSetModel.objects.filter(uid__in=uid_list, is_alexa=1).values('uid', 'region_alexa')
-
-            # uid,password,region的列表
-            uid_arr = []
-            for us in us_qs:
-                uid = us['uid']
-                # 设备alexa区域
-                region_alexa = us['region_alexa']
-                if region_alexa == '':
-                    region_alexa = "en"
-                # uid_arr.append({'uid': uid, 'nick': uid_dict[uid]['nick'], 'password': uid_dict['uid']['password']})
-                uid_arr.append({'uid': uid, 'nick': uid_dict[uid]['nick'], 'password': uid_dict[uid]['password'],
-                                'region': region_alexa})
-            res = {
-                'uid_arr': uid_arr
-
-            }
-            return response.json(0, res)
-        else:
+        if sid != 'admin' or sst != 'admin':
             return response.json(107)
+        uid_qs = Device_Info.objects.filter(userID_id=userID, isExist=1).values('UID', 'NickName', 'View_Password')
+        if not uid_qs.exists():
+            return response.json(107)
+
+        uid_dict = {}
+        uid_list = []
+        for uid_q in uid_qs:
+            # 追加
+            uid_list.append(uid_q['UID'])
+            # 给uid_q['UID']赋值
+            uid_dict[uid_q['UID']] = {'nick': uid_q['NickName'], 'password': uid_q['View_Password']}
+
+        us_qs = UidSetModel.objects.filter(uid__in=uid_list, is_alexa=1).values('uid', 'region_alexa')
+        if not us_qs.exists():
+            return response.json(173)
+        # uid,password,region的列表
+        uid_arr = []
+        for us in us_qs:
+            uid = us['uid']
+            # 设备alexa区域
+            region_alexa = us['region_alexa']
+            if region_alexa == '':
+                region_alexa = 'EN'
+            uid_arr.append({'uid': uid, 'nick': uid_dict[uid]['nick'], 'password': uid_dict[uid]['password'],
+                            'region': region_alexa})
+        res = {
+            'uid_arr': uid_arr
+        }
+        return response.json(0, res)
 
 
 # 登出