InitController.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. # @Author : Rocky
  2. # @File : InitController.py
  3. # @Time : 2023/4/11 17:26
  4. import json
  5. import logging
  6. import time
  7. from django.http import HttpResponse
  8. from django.views import View
  9. from Model.models import Device_Info, SceneLog, EquipmentInfo1
  10. from Object.RedisObject import RedisObject
  11. from Object.ResponseObject import ResponseObject
  12. ERROR_INFO_LOGGER = logging.getLogger('error_info')
  13. class InitView(View):
  14. def get(self, request, *args, **kwargs):
  15. request.encoding = 'utf-8'
  16. operation = kwargs.get('operation')
  17. return self.validation(request.GET, operation)
  18. def post(self, request, *args, **kwargs):
  19. request.encoding = 'utf-8'
  20. operation = kwargs.get('operation')
  21. return self.validation(request.POST, operation)
  22. def validation(self, request_dict, operation):
  23. if operation == 'health-check': # 负载均衡器健康检测接口
  24. return self.health_check(request_dict)
  25. elif operation == 'oci_redis_test':
  26. return self.oci_redis_test(request_dict)
  27. elif operation == 'oci_redis_test_2':
  28. return self.oci_redis_test_2(request_dict)
  29. @staticmethod
  30. def health_check(request_dict):
  31. try:
  32. redis_obj = RedisObject()
  33. redis_obj.set_data('health_check', 1)
  34. response = ResponseObject()
  35. Device_Info.objects.filter().values('id').first()
  36. SceneLog.objects.filter().values('id').first()
  37. SceneLog.objects.create(scene_name='test')
  38. SceneLog.objects.filter(scene_name='test').update(scene_id=1)
  39. return response.json(0)
  40. except Exception as e:
  41. ERROR_INFO_LOGGER.info(
  42. '健康检查接口异常,error_line:{},error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
  43. return HttpResponse(repr(e), status=500)
  44. @staticmethod
  45. def oci_redis_test(request_dict):
  46. try:
  47. key = request_dict.get('key', None)
  48. value = request_dict.get('value', None)
  49. response = ResponseObject()
  50. redis_obj = RedisObject()
  51. redis_obj.set_data(key, value, 60)
  52. redis_value = redis_obj.get_data(key)
  53. res = {
  54. 'redis_value': redis_value
  55. }
  56. return response.json(0, res)
  57. except Exception as e:
  58. return HttpResponse(repr(e), status=500)
  59. @staticmethod
  60. def oci_redis_test_2(request_dict):
  61. try:
  62. redis_obj = RedisObject()
  63. pipe = redis_obj.CONN.pipeline()
  64. response = ResponseObject()
  65. equipment_info_kwargs = {
  66. 'device_user_id': '163417566733313800138000',
  67. 'event_time': int(time.time()),
  68. 'event_type': 0,
  69. 'device_uid': 'H47UZJ7PHY2NXKNW111A',
  70. 'device_nick_name': 'redis_test',
  71. 'channel': 1,
  72. 'alarm': 'Motion',
  73. 'is_st': 0,
  74. 'add_time': int(time.time()),
  75. 'storage_location': 1,
  76. 'event_tag': '',
  77. 'answer_status': 0
  78. }
  79. # 保存到redis列表
  80. equipment_info_value = json.dumps(equipment_info_kwargs)
  81. equipment_info_key = 'equipment_info'
  82. pipe.rpush(equipment_info_key, equipment_info_value)
  83. pipe.rpush(equipment_info_key, equipment_info_value)
  84. pipe.execute()
  85. equipment_info_redis_list = redis_obj.lrange(equipment_info_key, 0, 99)
  86. redis_obj.ltrim(equipment_info_key, 100, -1)
  87. equipment_info_list = []
  88. for equipment_info in equipment_info_redis_list:
  89. equipment_info_data = eval(equipment_info)
  90. # 设备昵称存在表情,解码utf-8
  91. if equipment_info_data.get('device_nick_name') is not None:
  92. equipment_info_data['device_nick_name'] = equipment_info_data['device_nick_name']. \
  93. encode('UTF-8', 'ignore').decode('UTF-8')
  94. equipment_info_list.append(EquipmentInfo1(**equipment_info_data))
  95. EquipmentInfo1.objects.bulk_create(equipment_info_list)
  96. return response.json(0)
  97. except Exception as e:
  98. return HttpResponse(repr(e), status=500)