瀏覽代碼

同步序列号数据接口2

locky 1 年之前
父節點
當前提交
64ae144ec3
共有 1 個文件被更改,包括 66 次插入4 次删除
  1. 66 4
      AdminController/SerialManageController.py

+ 66 - 4
AdminController/SerialManageController.py

@@ -60,7 +60,7 @@ class SerialView(View):
                 return self.vpg_page(request_dict, response)
             if operation == 'uid-info/page':
                 return self.uid_page(request_dict, response)
-            return response.json(0)
+            return response.json(414)
 
     @classmethod
     def uploadUid(cls, request, request_dict, response):
@@ -202,6 +202,11 @@ class SerialView(View):
         if not all([serial, sync_region]):
             return response.json(444)
 
+        # 判断序列号是否已绑定uid
+        uid_company_serial_qs = UIDCompanySerialModel.objects.filter(company_serial__serial_number=serial)
+        if uid_company_serial_qs.exists():
+            return response.json(174)
+
         url = ''
         if sync_region == 'test':
             url = SERVER_DOMAIN_TEST
@@ -223,6 +228,63 @@ class SerialView(View):
             if req['result_code'] != 0:
                 return response.json(173)
             res_data = req['result']['res_data']
+
+            # 查询是否存在该uid,存在修改状态为已使用,否则写入数据
+            uid = res_data['uid']
+            uid_qs = UIDModel.objects.filter(uid=uid).values('id')
+            with transaction.atomic():
+                if uid_qs.exists():
+                    uid_qs.update(status=2)
+                    uid_id = uid_qs['id']
+                else:
+                    uid_data = {
+                        'uid': uid,
+                        'mac': res_data['mac'],
+                        'uid_extra': res_data['uid_extra'],
+                        'status': res_data['status'],
+                        'add_time': res_data['add_time'],
+                        'update_time': res_data['update_time'],
+                        'area': res_data['area'],
+                        'vpg_id': res_data['vpg_id'],
+                        'p2p_type': res_data['p2p_type'],
+                        'full_uid_code': res_data['full_uid_code'],
+                        'platform': res_data['platform'],
+                        'init_string': res_data['init_string'],
+                        'init_string_app': res_data['init_string_app']
+                    }
+                    uid_obj = UIDModel.objects.create(**uid_data)
+                    uid_id = uid_obj.id
+
+                # 查询tb_company_serial表id
+                company_serial_qs = CompanySerialModel.objects.filter(serial_number=serial).values('id')
+                company_serial_id = company_serial_qs[0]['id']
+                # 序列号绑定uid
+                now_time = int(time.time())
+                UIDCompanySerialModel.objects.create(add_time=now_time, update_time=now_time,
+                                                     uid_id=uid_id, company_serial_id=company_serial_id)
+                # 修改序列号状态为绑定uid
+                company_serial_qs.update(status=2)
+
+                # 同步iot数据
+                if res_data['certificate_id']:
+                    iot_device_info_qs = iotdeviceInfoModel.objects.filter(serial_number=serial).\
+                        values('certificate_id')
+                    iot_data = {
+                        'certificate_id': res_data['certificate_id'],
+                        'certificate_pem': res_data['certificate_pem'],
+                        'public_key': res_data['public_key'],
+                        'private_key': res_data['private_key'],
+                        'thing_name': res_data['thing_name'],
+                        'thing_groups': res_data['thing_groups'],
+                        'endpoint': res_data['endpoint'],
+                        'token_iot_number': res_data['token_iot_number']
+                    }
+                    if iot_device_info_qs.exists():
+                        if iot_device_info_qs[0]['certificate_id'] != res_data['certificate_id']:
+                            iot_device_info_qs.update(**iot_data)
+                    else:
+                        iot_data['serial_number'] = serial
+                        iotdeviceInfoModel.objects.create(**iot_data)
             return response.json(0)
         except Exception as e:
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
@@ -237,8 +299,8 @@ class SerialView(View):
             # 查询绑定的uid数据
             uid_company_serial_qs = UIDCompanySerialModel.objects.filter(company_serial__serial_number=serial).\
                 values('uid__uid', 'uid__mac', 'uid__uid_extra', 'uid__status', 'uid__add_time', 'uid__update_time',
-                       'uid__area', 'uid__vpg', 'uid__p2p_type', 'uid__full_uid_code', 'uid__platform', 'uid__init_string',
-                       'uid__init_string_app')
+                       'uid__area', 'uid__vpg_id', 'uid__p2p_type', 'uid__full_uid_code', 'uid__platform',
+                       'uid__init_string', 'uid__init_string_app')
             if not uid_company_serial_qs.exists():
                 return response.json(173)
 
@@ -250,7 +312,7 @@ class SerialView(View):
                 'add_time': uid_company_serial_qs[0]['uid__add_time'],
                 'update_time': uid_company_serial_qs[0]['uid__update_time'],
                 'area': uid_company_serial_qs[0]['uid__area'],
-                'vpg': uid_company_serial_qs[0]['uid__vpg'],
+                'vpg_id': uid_company_serial_qs[0]['uid__vpg_id'],
                 'p2p_type': uid_company_serial_qs[0]['uid__p2p_type'],
                 'full_uid_code': uid_company_serial_qs[0]['uid__full_uid_code'],
                 'platform': uid_company_serial_qs[0]['uid__platform'],