|
@@ -0,0 +1,72 @@
|
|
|
|
+import time
|
|
|
|
+
|
|
|
|
+from django.views import View
|
|
|
|
+
|
|
|
|
+from Model.models import DeviceScheme
|
|
|
|
+from Object.RedisObject import RedisObject
|
|
|
|
+from Service.CommonService import CommonService
|
|
|
|
+from Ansjer.config import LOGGER
|
|
|
|
+
|
|
|
|
+class IncomeProductsView(View):
|
|
|
|
+ def get(self, request, *args, **kwargs):
|
|
|
|
+ request.encoding = 'utf-8'
|
|
|
|
+ operation = kwargs.get('operation')
|
|
|
|
+ return self.validation(request.GET, request, operation)
|
|
|
|
+
|
|
|
|
+ def post(self, request, *args, **kwargs):
|
|
|
|
+ request.encoding = 'utf-8'
|
|
|
|
+ operation = kwargs.get('operation')
|
|
|
|
+ return self.validation(request.POST, request, operation)
|
|
|
|
+
|
|
|
|
+ def validation(self, request_dict, request, operation):
|
|
|
|
+ token_code, user_id, response = CommonService.verify_token_get_user_id(request_dict, request)
|
|
|
|
+ if operation == 'income': # 设备关联产品方案
|
|
|
|
+ return self.income_device_scheme(request_dict, response)
|
|
|
|
+ else:
|
|
|
|
+ return response.json(414)
|
|
|
|
+
|
|
|
|
+ @staticmethod
|
|
|
|
+ def income_device_scheme(request_dict, response):
|
|
|
|
+ """
|
|
|
|
+ 设备关联产品方案
|
|
|
|
+ @param request_dict:
|
|
|
|
+ @param response:
|
|
|
|
+ @return:
|
|
|
|
+ """
|
|
|
|
+ storage_code = request_dict.get("storageCode", None)
|
|
|
|
+ serial_number = request_dict.get("serialNumber", None)
|
|
|
|
+ phone_model = request_dict.get("phoneModel", None)
|
|
|
|
+
|
|
|
|
+ if not all([storage_code, serial_number, phone_model]):
|
|
|
|
+ return response.json(444)
|
|
|
|
+
|
|
|
|
+ serial_number = serial_number[0:9]
|
|
|
|
+ redis = RedisObject()
|
|
|
|
+ lock = redis.get_data(f"income_device_scheme_{storage_code}_{serial_number}")
|
|
|
|
+ if lock:
|
|
|
|
+ return response.json(10, '重复扫码')
|
|
|
|
+ redis.set_data(f"income_device_scheme_{storage_code}_{serial_number}", 1, 60)
|
|
|
|
+
|
|
|
|
+ try:
|
|
|
|
+ LOGGER.info(f"设备关联产品方案, storageCode: {storage_code}, serialNumber: {serial_number}")
|
|
|
|
+ device_scheme_qs = DeviceScheme.objects.filter(serial_number=serial_number)
|
|
|
|
+ if device_scheme_qs.exists():
|
|
|
|
+ storage_code = device_scheme_qs.first().storage_code
|
|
|
|
+ LOGGER.info(f"设备关联产品方案, serialNumber已存在, storageCode: {storage_code}, serialNumber: {serial_number}")
|
|
|
|
+ redis.del_data(f"income_device_scheme_{storage_code}_{serial_number}")
|
|
|
|
+ return response.json(173, f"数据已存在, storage_code为: {storage_code}")
|
|
|
|
+
|
|
|
|
+ now_time = int(time.time())
|
|
|
|
+
|
|
|
|
+ DeviceScheme.objects.create(storage_code=storage_code, serial_number=serial_number,
|
|
|
|
+ phone_model=phone_model, created_time=now_time,
|
|
|
|
+ updated_time=now_time)
|
|
|
|
+
|
|
|
|
+ LOGGER.info(f"设备关联产品方案, serialNumber录入成功, storageCode: {storage_code}, serialNumber: {serial_number}")
|
|
|
|
+
|
|
|
|
+ return response.json(0)
|
|
|
|
+
|
|
|
|
+ except Exception as e:
|
|
|
|
+ redis.del_data(f"income_device_scheme_{storage_code}_{serial_number}")
|
|
|
|
+ print(e)
|
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|