AgentDeviceController.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. # -*- encoding: utf-8 -*-
  2. """
  3. @File : AgentDeviceController.py
  4. @Time : 2024/3/8 13:55
  5. @Author : stephen
  6. @Email : zhangdongming@asj6.wecom.work
  7. @Software: PyCharm
  8. """
  9. from datetime import datetime
  10. from dateutil.relativedelta import relativedelta
  11. from collections import defaultdict
  12. from decimal import Decimal
  13. import traceback
  14. from django.http import QueryDict
  15. from django.views import View
  16. from AgentModel.models import AgentCustomerInfo, AgentDeviceOrder, AgentDevice, AgentCloudServicePackage
  17. from Model.models import DeviceTypeModel
  18. from Object.ResponseObject import ResponseObject
  19. from Object.TokenObject import TokenObject
  20. class AgentDeviceView(View):
  21. def get(self, request, *args, **kwargs):
  22. request.encoding = 'utf-8'
  23. operation = kwargs.get('operation')
  24. return self.validation(request.GET, request, operation)
  25. def post(self, request, *args, **kwargs):
  26. request.encoding = 'utf-8'
  27. operation = kwargs.get('operation')
  28. return self.validation(request.POST, request, operation)
  29. def delete(self, request, *args, **kwargs):
  30. request.encoding = 'utf-8'
  31. operation = kwargs.get('operation')
  32. delete = QueryDict(request.body)
  33. if not delete:
  34. delete = request.GET
  35. return self.validation(delete, request, operation)
  36. def put(self, request, *args, **kwargs):
  37. request.encoding = 'utf-8'
  38. operation = kwargs.get('operation')
  39. put = QueryDict(request.body)
  40. return self.validation(put, request, operation)
  41. def validation(self, request_dict, request, operation):
  42. pass
  43. language = request_dict.get('language', 'en')
  44. response = ResponseObject(language, 'pc')
  45. # 订单结算界面
  46. if operation == 'XXXXX':
  47. pass
  48. else:
  49. tko = TokenObject(
  50. request.META.get('HTTP_AUTHORIZATION'),
  51. returntpye='pc')
  52. if tko.code != 0:
  53. return response.json(tko.code)
  54. response.lang = tko.lang
  55. userID = tko.userID
  56. if operation == 'getAgentDevice':
  57. return self.get_agent_device(userID, request_dict, response)
  58. else:
  59. return response.json(444, 'operation')
  60. def get_agent_device(self, userID, request_dict, response):
  61. """
  62. 查询设备明细
  63. @param userID: userID
  64. @param request_dict: 请求参数
  65. @param request_dict ac_id: 代理商id
  66. @param request_dict device_name: 设备名字
  67. @param request_dict status: 设备类型
  68. @param request_dict serial_number: 设备9位序列号
  69. @param response: 响应对象
  70. @return:
  71. """
  72. device_name = request_dict.get('device_name', None)
  73. status = request_dict.get('status', None)
  74. serial_number = request_dict.get('serial_number', None)
  75. agent_customer_info = AgentCustomerInfo.objects.filter(user_id=userID).first()
  76. if agent_customer_info is None:
  77. return response.json(104, 'Agent customer not found')
  78. ac_id = agent_customer_info.id
  79. try:
  80. agent_device_qs = AgentDevice.objects.filter(ac_id=ac_id)
  81. if device_name:
  82. # 根据device_name查询对应的type值
  83. device_types = DeviceTypeModel.objects.filter(name=device_name).values_list('type', flat=True)
  84. agent_device_qs = agent_device_qs.filter(type__in=device_types)
  85. if status:
  86. agent_device_qs = agent_device_qs.filter(status=status)
  87. if serial_number:
  88. agent_device_qs = agent_device_qs.filter(serial_number=serial_number)
  89. # 构造返回列表
  90. device_list = []
  91. for device in agent_device_qs:
  92. device_type = DeviceTypeModel.objects.filter(type=device.type).first()
  93. device_name = device_type.name if device_type else device.type
  94. device_list.append({
  95. 'id': device.id,
  96. 'ac_id': device.ac_id,
  97. 'status': device.status,
  98. 'serial_number': device.serial_number,
  99. 'device_name': device_name,
  100. 'at_time': device.at_time,
  101. })
  102. return response.json(0, {'list': device_list})
  103. except Exception as e:
  104. print(e)
  105. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))