IncomeProductsController.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import time
  2. from django.views import View
  3. from Model.models import DeviceScheme
  4. from Object.RedisObject import RedisObject
  5. from Service.CommonService import CommonService
  6. from Ansjer.config import LOGGER
  7. class IncomeProductsView(View):
  8. def get(self, request, *args, **kwargs):
  9. request.encoding = 'utf-8'
  10. operation = kwargs.get('operation')
  11. return self.validation(request.GET, request, operation)
  12. def post(self, request, *args, **kwargs):
  13. request.encoding = 'utf-8'
  14. operation = kwargs.get('operation')
  15. return self.validation(request.POST, request, operation)
  16. def validation(self, request_dict, request, operation):
  17. token_code, user_id, response = CommonService.verify_token_get_user_id(request_dict, request)
  18. if operation == 'income': # 设备关联产品方案
  19. return self.income_device_scheme(request_dict, response)
  20. elif operation == 'statistics':
  21. return self.statistics_device_scheme(request_dict, response)
  22. else:
  23. return response.json(414)
  24. @staticmethod
  25. def income_device_scheme(request_dict, response):
  26. """
  27. 设备关联产品方案
  28. @param request_dict:
  29. @param response:
  30. @return:
  31. """
  32. storage_code = request_dict.get("storageCode", None)
  33. serial_number = request_dict.get("serialNumber", None)
  34. device_type = request_dict.get("deviceType", None)
  35. phone_model = request_dict.get("phoneModel", None)
  36. if not all([storage_code, serial_number, phone_model, device_type]):
  37. return response.json(444)
  38. full_serial_number = serial_number
  39. # device_type = 0 时表示传的是uid
  40. if device_type != "0":
  41. serial_number = serial_number[0:9]
  42. try:
  43. LOGGER.info(f"设备关联产品方案, storageCode: {storage_code}, serialNumber: {serial_number}")
  44. device_scheme_qs = DeviceScheme.objects.filter(serial_number=serial_number)
  45. if device_scheme_qs.exists():
  46. storage_code = device_scheme_qs.first().storage_code
  47. LOGGER.info(f"设备关联产品方案, serialNumber已存在, storageCode: {storage_code}, serialNumber: {serial_number}")
  48. return response.json(174, f"数据已存在, storage_code为: {storage_code}")
  49. now_time = int(time.time())
  50. DeviceScheme.objects.create(storage_code=storage_code, serial_number=serial_number,
  51. full_serial_number=full_serial_number, device_type=device_type,
  52. phone_model=phone_model, created_time=now_time,
  53. updated_time=now_time)
  54. LOGGER.info(f"设备关联产品方案, serialNumber录入成功, storageCode: {storage_code}, serialNumber: {serial_number}")
  55. return response.json(0)
  56. except Exception as e:
  57. print(e)
  58. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
  59. @staticmethod
  60. def statistics_device_scheme(request_dict, response):
  61. """
  62. 统计设备关联产品方案
  63. @param request_dict:
  64. @param response:
  65. @return:
  66. """
  67. try:
  68. storage_code = request_dict.get("storageCode", None)
  69. if not storage_code:
  70. return response.json(444)
  71. device_num = DeviceScheme.objects.filter(storage_code=storage_code).count()
  72. return response.json(0, {"storageCode": storage_code,"deviceNum": device_num})
  73. except Exception as e:
  74. print(e)
  75. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))