views.py 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  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.models import APIServiceStartRecord
  8. from apps.web.api.utils import api_call, api_ok_response, api_exception_response
  9. from apps.web.api.views import send_api_order
  10. logger = logging.getLogger(__name__)
  11. if TYPE_CHECKING:
  12. from django.core.handlers.wsgi import WSGIRequest
  13. from apilib.utils_json import JsonResponse
  14. from apps.web.dealer.models import Dealer
  15. @api_call(logger = logger, nil = api_exception_response())
  16. def startDeviceForCy4(request, dealer):
  17. # type: (WSGIRequest, Dealer)->JsonResponse
  18. payload = json.loads(request.body) if request.body else {}
  19. # default_params_list = ['deviceCode', 'price', 'discount', 'port']
  20. # params_list = payload.keys()
  21. # # 1. 判断差集
  22. # different_params_list = list(set(default_params_list) - set(params_list))
  23. # if len(different_params_list) != 0:
  24. # raise ApiParameterError(errmsg = u'参数内容错误')
  25. #
  26. # # 2. 判断个数
  27. # if len(params_list) != len(default_params_list):
  28. # raise ApiParameterError(errmsg = u'参数错误')
  29. # 3. 调用api
  30. resultDict = send_api_order(payload = payload, dealer = dealer, func = 'apiStartDeviceForCy4')
  31. return api_ok_response(payload = resultDict)
  32. @api_call(logger = logger, nil = api_exception_response())
  33. def getDevSettingsFromCy4(request, dealer):
  34. # type: (WSGIRequest, Dealer)->JsonResponse
  35. payload = json.loads(request.body) if request.body else {}
  36. default_params_list = ['deviceCode']
  37. params_list = payload.keys()
  38. # 1. 判断差集
  39. different_params_list = list(set(default_params_list) - set(params_list))
  40. if len(different_params_list) != 0:
  41. raise ApiParameterError(errmsg = u'参数内容错误')
  42. # 2. 判断个数
  43. if len(params_list) != len(default_params_list):
  44. raise ApiParameterError(errmsg = u'参数错误')
  45. # 3. 调用api
  46. resultDict = send_api_order(payload = payload, dealer = dealer, func = 'apiGetDevSettingsFromCy4')
  47. return api_ok_response(payload = resultDict)
  48. @api_call(logger = logger, nil = api_exception_response())
  49. def setDevSettingsFromCy4(request, dealer):
  50. # type: (WSGIRequest, Dealer)->JsonResponse
  51. payload = json.loads(request.body) if request.body else {}
  52. default_params_list = ['deviceCode', 'time1', 'time2', 'time3', 'time4', 'powerMax1', 'powerMax2', 'powerMax3',
  53. 'powerMax4', 'elecCheckMin', 'elecCheckTime', 'voice']
  54. params_list = payload.keys()
  55. # 1. 判断差集
  56. different_params_list = list(set(default_params_list) - set(params_list))
  57. if len(different_params_list) != 0:
  58. raise ApiParameterError(errmsg = u'参数内容错误')
  59. # 2. 判断个数
  60. if len(params_list) != len(default_params_list):
  61. raise ApiParameterError(errmsg = u'参数错误')
  62. # 3. 调用api
  63. resultDict = send_api_order(payload = payload, dealer = dealer, func = 'apiSetDevSettingsFromCy4')
  64. return api_ok_response(payload = resultDict)
  65. @api_call(logger = logger, nil = api_exception_response())
  66. def stopChargingPortForCy4(request, dealer):
  67. # type: (WSGIRequest, Dealer)->JsonResponse
  68. payload = json.loads(request.body) if request.body else {}
  69. default_params_list = ['deviceCode', 'port']
  70. params_list = payload.keys()
  71. # 1. 判断差集
  72. different_params_list = list(set(default_params_list) - set(params_list))
  73. if len(different_params_list) != 0:
  74. raise ApiParameterError(errmsg = u'参数内容错误')
  75. # 2. 判断个数
  76. if len(params_list) != len(default_params_list):
  77. raise ApiParameterError(errmsg = u'参数错误')
  78. # 3. 调用api
  79. resultDict = send_api_order(payload = payload, dealer = dealer, func = 'apiStopChargingPortForCy4')
  80. return api_ok_response(payload = resultDict)
  81. @api_call(logger = logger, nil = api_exception_response())
  82. def getPortStatusFromCy4(request, dealer):
  83. # type: (WSGIRequest, Dealer)->JsonResponse
  84. payload = json.loads(request.body) if request.body else {}
  85. default_params_list = ['deviceCode']
  86. params_list = payload.keys()
  87. # 1. 判断差集
  88. different_params_list = list(set(default_params_list) - set(params_list))
  89. if len(different_params_list) != 0:
  90. raise ApiParameterError(errmsg = u'参数内容错误')
  91. # 2. 判断个数
  92. if len(params_list) != len(default_params_list):
  93. raise ApiParameterError(errmsg = u'参数错误')
  94. # 3. 调用api
  95. resultDict = send_api_order(payload = payload, dealer = dealer, func = 'apiGetPortStatusFromCy4')
  96. return api_ok_response(payload = resultDict)
  97. @api_call(logger = logger, nil = api_exception_response())
  98. def getPortInfoFromCy4(request, dealer):
  99. # type: (WSGIRequest, Dealer)->JsonResponse
  100. payload = json.loads(request.body) if request.body else {}
  101. default_params_list = ['deviceCode', 'port']
  102. params_list = payload.keys()
  103. # 1. 判断差集
  104. different_params_list = list(set(default_params_list) - set(params_list))
  105. if len(different_params_list) != 0:
  106. raise ApiParameterError(errmsg = u'参数内容错误')
  107. # 2. 判断个数
  108. if len(params_list) != len(default_params_list):
  109. raise ApiParameterError(errmsg = u'参数错误')
  110. # 3. 调用api
  111. resultDict = send_api_order(payload = payload, dealer = dealer, func = 'apiGetPortInfoFromCy4')
  112. return api_ok_response(payload = resultDict)
  113. @api_call(logger = logger, nil = api_exception_response())
  114. def getConsumeRecordsFromCy4ByDeviceCode(request, dealer):
  115. # type: (WSGIRequest, Dealer)->JsonResponse
  116. payload = json.loads(request.body) if request.body else {}
  117. default_params_list = ['deviceCode', 'dataSize', 'reverse']
  118. params_list = payload.keys()
  119. # 1. 判断差集
  120. different_params_list = list(set(default_params_list) - set(params_list))
  121. if len(different_params_list) != 0:
  122. raise ApiParameterError(errmsg = u'参数内容错误')
  123. # 2. 判断个数
  124. if len(params_list) != len(default_params_list):
  125. raise ApiParameterError(errmsg = u'参数错误')
  126. # 3. 调用api
  127. resultDict = {
  128. "status": 0,
  129. "description": "",
  130. "errcode": 0,
  131. "result": {},
  132. "errmsg": "SUCCESS",
  133. "desc": ""
  134. }
  135. apis = APIServiceStartRecord.objects(logicalCode = payload['deviceCode'])
  136. if apis.count() == 0:
  137. dataList = []
  138. else:
  139. apis = apis[0:payload['dataSize']]
  140. dataList = [{
  141. 'orderNo': _.orderNo,
  142. 'logicalCode': _.logicalCode,
  143. 'port': _.port,
  144. 'money': _.money,
  145. 'needTime': _.needTime,
  146. 'consumeType': _.consumeType,
  147. 'cardNo': _.cardNo,
  148. 'status': _.status,
  149. 'startTime': _.startTime,
  150. 'finishReason': _.finishReason,
  151. 'leftTime': _.leftTime,
  152. 'duration': _.duration,
  153. 'spendElec': _.spendElec,
  154. 'endTime': _.endTime
  155. } for _ in apis]
  156. if payload['reverse'] is True:
  157. dataList.sort(key = lambda x: x['startTime'], reverse = True)
  158. else:
  159. dataList.sort(key = lambda x: x['startTime'])
  160. resultDict['result'].update({'dataList': dataList})
  161. return api_ok_response(payload = resultDict)
  162. @api_call(logger = logger, nil = api_exception_response())
  163. def getConsumeRecordsFromCy4ByOrderNo(request, dealer):
  164. # type: (WSGIRequest, Dealer)->JsonResponse
  165. payload = json.loads(request.body) if request.body else {}
  166. default_params_list = ['orderNo']
  167. params_list = payload.keys()
  168. # 1. 判断差集
  169. different_params_list = list(set(default_params_list) - set(params_list))
  170. if len(different_params_list) != 0:
  171. raise ApiParameterError(errmsg = u'参数内容错误')
  172. # 2. 判断个数
  173. if len(params_list) != len(default_params_list):
  174. raise ApiParameterError(errmsg = u'参数错误')
  175. # 3. 调用api
  176. resultDict = {
  177. "status": 0,
  178. "description": "",
  179. "errcode": 0,
  180. "result": {},
  181. "errmsg": "SUCCESS",
  182. "desc": ""
  183. }
  184. api = APIServiceStartRecord.objects(orderNo = payload['orderNo']).first()
  185. if api is None:
  186. dataList = []
  187. else:
  188. dataList = [{
  189. 'orderNo': api.orderNo,
  190. 'logicalCode': api.logicalCode,
  191. 'port': api.port,
  192. 'money': api.money,
  193. 'needTime': api.needTime,
  194. 'consumeType': api.consumeType,
  195. 'cardNo': api.cardNo,
  196. 'status': api.status,
  197. 'startTime': api.startTime,
  198. 'finishReason': api.finishReason,
  199. 'leftTime': api.leftTime,
  200. 'duration': api.duration,
  201. 'spendElec': api.spendElec,
  202. 'endTime': api.endTime
  203. }]
  204. resultDict['result'].update({'dataList': dataList})
  205. return api_ok_response(payload = resultDict)