1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- # @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, '服务器内部错误')
-
|