|
@@ -0,0 +1,95 @@
|
|
|
+# @Author : Rocky
|
|
|
+# @File : DeviceController.py
|
|
|
+# @Time : 2025/5/16 14:56
|
|
|
+
|
|
|
+import logging
|
|
|
+from datetime import datetime
|
|
|
+
|
|
|
+from django.views import View
|
|
|
+
|
|
|
+from model.models import iotdeviceInfoModel
|
|
|
+from object.ResponseObject import ResponseObject
|
|
|
+
|
|
|
+
|
|
|
+class DeviceView(View):
|
|
|
+ def get(self, request, *args, **kwargs):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ operation = kwargs.get('operation')
|
|
|
+ return self.validation(request.GET, request, operation)
|
|
|
+
|
|
|
+ def post(self, request, *args, **kwargs):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ operation = kwargs.get('operation')
|
|
|
+ return self.validation(request.POST, request, operation)
|
|
|
+
|
|
|
+ def validation(self, request_dict, request, operation):
|
|
|
+ response = ResponseObject()
|
|
|
+ if operation == 'creatOrUpdateIotInfo':
|
|
|
+ return self.creatOrUpdateIotInfo(request_dict, response)
|
|
|
+ else:
|
|
|
+ return response.json(414)
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def creatOrUpdateIotInfo(request_dict, response):
|
|
|
+ logger = logging.getLogger('django')
|
|
|
+
|
|
|
+ # 获取必要参数
|
|
|
+ serial_number = request_dict.get('serial_number', '')
|
|
|
+ uid = request_dict.get('uid', '')
|
|
|
+ certificate_id = request_dict.get('certificate_id', '')
|
|
|
+ certificate_pem = request_dict.get('certificate_pem', '')
|
|
|
+ public_key = request_dict.get('public_key', '')
|
|
|
+ private_key = request_dict.get('private_key', '')
|
|
|
+ thing_name = request_dict.get('thing_name', '')
|
|
|
+ thing_groups = request_dict.get('thing_groups', '')
|
|
|
+ endpoint = request_dict.get('endpoint', '')
|
|
|
+ token_iot_number = request_dict.get('token_iot_number', '')
|
|
|
+
|
|
|
+ # 检查参数有效性
|
|
|
+ if not (serial_number or uid):
|
|
|
+ return response.json(444, 'serial_number或uid必须有一个不为空')
|
|
|
+
|
|
|
+ try:
|
|
|
+ # 查询设备是否已存在
|
|
|
+ if serial_number:
|
|
|
+ device_name = serial_number
|
|
|
+ device = iotdeviceInfoModel.objects.filter(serial_number=serial_number).first()
|
|
|
+ else:
|
|
|
+ device_name = uid
|
|
|
+ device = iotdeviceInfoModel.objects.filter(uid=uid).first()
|
|
|
+
|
|
|
+ logger.info('--------{}创建/更新IoT设备信息--------'.format(device_name))
|
|
|
+ if not device:
|
|
|
+ # 创建新设备
|
|
|
+ iotdeviceInfoModel.objects.create(
|
|
|
+ serial_number=serial_number,
|
|
|
+ uid=uid,
|
|
|
+ certificate_id=certificate_id,
|
|
|
+ certificate_pem=certificate_pem,
|
|
|
+ public_key=public_key,
|
|
|
+ private_key=private_key,
|
|
|
+ thing_name=thing_name,
|
|
|
+ thing_groups=thing_groups,
|
|
|
+ endpoint=endpoint,
|
|
|
+ token_iot_number=token_iot_number
|
|
|
+ )
|
|
|
+ else:
|
|
|
+ # 更新现有设备
|
|
|
+ if device.certificate_id != certificate_id:
|
|
|
+ device.certificate_id = certificate_id
|
|
|
+ device.certificate_pem = certificate_pem
|
|
|
+ device.public_key = public_key
|
|
|
+ device.private_key = private_key
|
|
|
+ device.thing_name = thing_name
|
|
|
+ device.thing_groups = thing_groups
|
|
|
+ device.endpoint = endpoint
|
|
|
+ device.token_iot_number = token_iot_number
|
|
|
+ device.update_time = datetime.now()
|
|
|
+ device.save()
|
|
|
+
|
|
|
+ return response.json(0)
|
|
|
+
|
|
|
+ except Exception as e:
|
|
|
+ logger.error('创建/更新IoT设备信息异常: %s', str(e))
|
|
|
+ return response.json(500, '服务器内部错误')
|
|
|
+
|