CompanyController.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import logging
  4. import time
  5. from django.db import transaction
  6. from django.views import View
  7. from Model.models import CompanyModel, UserModel, SerialNumberModel, CompanySerialModel
  8. from Object.ResponseObject import ResponseObject
  9. from Object.TokenObject import TokenObject
  10. from Service.CommonService import CommonService
  11. from Service.ModelService import ModelService
  12. class CompanyView(View):
  13. def get(self, request, *arg, **kwargs):
  14. request.encoding = 'utf-8'
  15. request_dict = request.GET
  16. operation = kwargs.get('operation', None)
  17. return self.validate(request_dict, operation)
  18. def post(self, request, *arg, **kwargs):
  19. request.encoding = 'utf-8'
  20. request_dict = request.POST
  21. operation = kwargs.get('operation', None)
  22. return self.validate(request_dict, operation)
  23. def validate(self, request_dict, operation):
  24. response = ResponseObject()
  25. if operation == 'createSerial':
  26. return self.do_create_serial(request_dict, response)
  27. def do_create_serial(self, request_dict, response):
  28. # perm = ModelService.check_perm_uid_manage(userID, 0)
  29. # if not perm:
  30. # return response.json(309)
  31. id = request_dict.get('id', None)
  32. quantity = request_dict.get('quantity', None)
  33. if not all([id, quantity]):
  34. return response.json(444)
  35. company_qs = CompanyModel.objects.filter(id=id)
  36. if not company_qs.exists():
  37. return response.json(444)
  38. sum_Serial = SerialNumberModel.objects.filter().count()
  39. sum_Serial_company = CompanySerialModel.objects.filter().count()
  40. sum_bind = sum_Serial - sum_Serial_company # 剩余可绑定的序列号
  41. if int(quantity) > int(sum_bind):
  42. return response.json(10041)
  43. try:
  44. company = company_qs[0]
  45. start_1 = sum_Serial_company
  46. end_1 = int(start_1) + int(quantity)
  47. serial_qs = SerialNumberModel.objects.filter()[start_1:end_1]
  48. if serial_qs.exists():
  49. company_serial_bulk = []
  50. now_time = int(time.time())
  51. for item in serial_qs:
  52. company_serial_bulk.append(CompanySerialModel(
  53. status=1,
  54. add_time=now_time,
  55. update_time=now_time,
  56. company_id=company.id,
  57. serial_number=item.serial_number,
  58. ))
  59. with transaction.atomic():
  60. CompanySerialModel.objects.bulk_create(company_serial_bulk)
  61. company.quantity = CompanySerialModel.objects.filter(company_id=id).count()
  62. company.save()
  63. return response.json(0)
  64. else:
  65. return response.json(173)
  66. except Exception as e:
  67. djangoLogger = logging.getLogger('django')
  68. djangoLogger.exception(repr(e))
  69. return response.json(176, str(e))