IncomeProductsController.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. else:
  21. return response.json(414)
  22. @staticmethod
  23. def income_device_scheme(request_dict, response):
  24. """
  25. 设备关联产品方案
  26. @param request_dict:
  27. @param response:
  28. @return:
  29. """
  30. storage_code = request_dict.get("storageCode", None)
  31. serial_number = request_dict.get("serialNumber", None)
  32. phone_model = request_dict.get("phoneModel", None)
  33. if not all([storage_code, serial_number, phone_model]):
  34. return response.json(444)
  35. serial_number = serial_number[0:9]
  36. redis = RedisObject()
  37. lock = redis.get_data(f"income_device_scheme_{storage_code}_{serial_number}")
  38. if lock:
  39. return response.json(10, '重复扫码')
  40. redis.set_data(f"income_device_scheme_{storage_code}_{serial_number}", 1, 60)
  41. try:
  42. LOGGER.info(f"设备关联产品方案, storageCode: {storage_code}, serialNumber: {serial_number}")
  43. device_scheme_qs = DeviceScheme.objects.filter(serial_number=serial_number)
  44. if device_scheme_qs.exists():
  45. storage_code = device_scheme_qs.first().storage_code
  46. LOGGER.info(f"设备关联产品方案, serialNumber已存在, storageCode: {storage_code}, serialNumber: {serial_number}")
  47. redis.del_data(f"income_device_scheme_{storage_code}_{serial_number}")
  48. return response.json(173, f"数据已存在, storage_code为: {storage_code}")
  49. now_time = int(time.time())
  50. DeviceScheme.objects.create(storage_code=storage_code, serial_number=serial_number,
  51. phone_model=phone_model, created_time=now_time,
  52. updated_time=now_time)
  53. LOGGER.info(f"设备关联产品方案, serialNumber录入成功, storageCode: {storage_code}, serialNumber: {serial_number}")
  54. return response.json(0)
  55. except Exception as e:
  56. redis.del_data(f"income_device_scheme_{storage_code}_{serial_number}")
  57. print(e)
  58. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))