views.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. import logging
  4. import simplejson as json
  5. from typing import TYPE_CHECKING
  6. from apps.web.api.exceptions import ApiParameterError
  7. from apps.web.api.utils import api_call, api_ok_response, api_exception_response
  8. from apps.web.api.views import send_api_order
  9. logger = logging.getLogger(__name__)
  10. if TYPE_CHECKING:
  11. from django.core.handlers.wsgi import WSGIRequest
  12. from apps.web.dealer.models import Dealer
  13. from apilib.utils_json import JsonResponse
  14. @api_call(logger = logger, nil = api_exception_response())
  15. def getPortStatusFromJn(request, dealer):
  16. # type: (WSGIRequest, Dealer)->JsonResponse
  17. payload = json.loads(request.body) if request.body else {}
  18. default_params_list = ['deviceCode', 'port']
  19. params_list = payload.keys()
  20. # 1. 判断差集
  21. different_params_list = list(set(default_params_list) - set(params_list))
  22. if len(different_params_list) != 0:
  23. raise ApiParameterError(errmsg = u'参数内容错误')
  24. # 2. 判断个数
  25. if len(params_list) != len(default_params_list):
  26. raise ApiParameterError(errmsg = u'参数错误')
  27. # 3. 调用api
  28. resultDict = send_api_order(payload = payload, dealer = dealer, func = 'apiGetPortStatusFromJn')
  29. return api_ok_response(payload = resultDict)