IncomeProductsController.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. import time
  2. from django.views import View
  3. from Ansjer.config import LOGGER
  4. from Model.models import DeviceScheme, ProductsScheme
  5. from Service.CommonService import CommonService
  6. class IncomeProductsView(View):
  7. def get(self, request, *args, **kwargs):
  8. request.encoding = 'utf-8'
  9. operation = kwargs.get('operation')
  10. return self.validation(request.GET, request, operation)
  11. def post(self, request, *args, **kwargs):
  12. request.encoding = 'utf-8'
  13. operation = kwargs.get('operation')
  14. return self.validation(request.POST, request, operation)
  15. def validation(self, request_dict, request, operation):
  16. token_code, user_id, response = CommonService.verify_token_get_user_id(request_dict, request)
  17. if operation == 'income': # 设备关联产品方案
  18. return self.income_device_scheme(request_dict, response)
  19. elif operation == 'statistics':
  20. return self.statistics_device_scheme(request_dict, response)
  21. elif operation == 'getProductSchemeList':
  22. return self.get_product_scheme_list(request_dict, response)
  23. else:
  24. return response.json(414)
  25. @staticmethod
  26. def income_device_scheme(request_dict, response):
  27. """
  28. 设备关联产品方案
  29. @param request_dict:
  30. @param response:
  31. @return:
  32. """
  33. storage_code = request_dict.get("storageCode", None)
  34. serial_number = request_dict.get("serialNumber", None)
  35. device_type = request_dict.get("deviceType", None)
  36. phone_model = request_dict.get("phoneModel", None)
  37. if not all([storage_code, serial_number, phone_model, device_type]):
  38. return response.json(444)
  39. full_serial_number = serial_number
  40. # device_type = 0 时表示传的是uid
  41. if device_type != "0":
  42. serial_number = serial_number[0:9]
  43. try:
  44. LOGGER.info(f"设备关联产品方案, storageCode: {storage_code}, serialNumber: {serial_number}")
  45. device_scheme_qs = DeviceScheme.objects.filter(serial_number=serial_number)
  46. if device_scheme_qs.exists():
  47. storage_code = device_scheme_qs.first().storage_code
  48. LOGGER.info(
  49. f"设备关联产品方案, serialNumber已存在, storageCode: {storage_code}, serialNumber: {serial_number}")
  50. return response.json(174, f"数据已存在, storage_code为: {storage_code}")
  51. now_time = int(time.time())
  52. DeviceScheme.objects.create(storage_code=storage_code, serial_number=serial_number,
  53. full_serial_number=full_serial_number, device_type=device_type,
  54. phone_model=phone_model, created_time=now_time,
  55. updated_time=now_time)
  56. LOGGER.info(
  57. f"设备关联产品方案, serialNumber录入成功, storageCode: {storage_code}, serialNumber: {serial_number}")
  58. return response.json(0)
  59. except Exception as e:
  60. print(e)
  61. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
  62. @staticmethod
  63. def statistics_device_scheme(request_dict, response):
  64. """
  65. 统计设备关联产品方案
  66. @param request_dict:
  67. @param response:
  68. @return:
  69. """
  70. try:
  71. storage_code = request_dict.get("storageCode", None)
  72. if not storage_code:
  73. return response.json(444)
  74. device_num = DeviceScheme.objects.filter(storage_code=storage_code).count()
  75. return response.json(0, {"storageCode": storage_code, "deviceNum": device_num})
  76. except Exception as e:
  77. print(e)
  78. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
  79. @staticmethod
  80. def get_product_scheme_list(request_dict, response):
  81. order_number = request_dict.get('orderNumber', None)
  82. if not order_number:
  83. # 缺少订单号,返回错误码
  84. return response.json(444)
  85. # 查询符合条件的方案,仅获取指定字段
  86. scheme_qs = ProductsScheme.objects.filter(order_number=order_number).values(
  87. 'storage_code', 'sku', 'hw_version', 'product_model', 'order_quantity', 'remark'
  88. )
  89. if not scheme_qs.exists():
  90. # 没有查询到数据,返回对应错误码
  91. return response.json(173)
  92. # 将QuerySet转换为列表(数组格式),便于前端解析
  93. scheme_list = list(scheme_qs)
  94. # 返回成功状态码(0)和数据数组
  95. return response.json(0, scheme_list)