# -*- coding: utf-8 -*- # !/usr/bin/env python import logging import simplejson as json from typing import TYPE_CHECKING from apps.web.api.exceptions import ApiParameterError from apps.web.api.models import APIServiceStartRecord from apps.web.api.utils import api_call, api_ok_response, api_exception_response from apps.web.api.views import send_api_order logger = logging.getLogger(__name__) if TYPE_CHECKING: from django.core.handlers.wsgi import WSGIRequest from apilib.utils_json import JsonResponse from apps.web.dealer.models import Dealer @api_call(logger = logger, nil = api_exception_response()) def startDeviceForCy4(request, dealer): # type: (WSGIRequest, Dealer)->JsonResponse payload = json.loads(request.body) if request.body else {} # default_params_list = ['deviceCode', 'price', 'discount', 'port'] # params_list = payload.keys() # # 1. 判断差集 # different_params_list = list(set(default_params_list) - set(params_list)) # if len(different_params_list) != 0: # raise ApiParameterError(errmsg = u'参数内容错误') # # # 2. 判断个数 # if len(params_list) != len(default_params_list): # raise ApiParameterError(errmsg = u'参数错误') # 3. 调用api resultDict = send_api_order(payload = payload, dealer = dealer, func = 'apiStartDeviceForCy4') return api_ok_response(payload = resultDict) @api_call(logger = logger, nil = api_exception_response()) def getDevSettingsFromCy4(request, dealer): # type: (WSGIRequest, Dealer)->JsonResponse payload = json.loads(request.body) if request.body else {} default_params_list = ['deviceCode'] params_list = payload.keys() # 1. 判断差集 different_params_list = list(set(default_params_list) - set(params_list)) if len(different_params_list) != 0: raise ApiParameterError(errmsg = u'参数内容错误') # 2. 判断个数 if len(params_list) != len(default_params_list): raise ApiParameterError(errmsg = u'参数错误') # 3. 调用api resultDict = send_api_order(payload = payload, dealer = dealer, func = 'apiGetDevSettingsFromCy4') return api_ok_response(payload = resultDict) @api_call(logger = logger, nil = api_exception_response()) def setDevSettingsFromCy4(request, dealer): # type: (WSGIRequest, Dealer)->JsonResponse payload = json.loads(request.body) if request.body else {} default_params_list = ['deviceCode', 'time1', 'time2', 'time3', 'time4', 'powerMax1', 'powerMax2', 'powerMax3', 'powerMax4', 'elecCheckMin', 'elecCheckTime', 'voice'] params_list = payload.keys() # 1. 判断差集 different_params_list = list(set(default_params_list) - set(params_list)) if len(different_params_list) != 0: raise ApiParameterError(errmsg = u'参数内容错误') # 2. 判断个数 if len(params_list) != len(default_params_list): raise ApiParameterError(errmsg = u'参数错误') # 3. 调用api resultDict = send_api_order(payload = payload, dealer = dealer, func = 'apiSetDevSettingsFromCy4') return api_ok_response(payload = resultDict) @api_call(logger = logger, nil = api_exception_response()) def stopChargingPortForCy4(request, dealer): # type: (WSGIRequest, Dealer)->JsonResponse payload = json.loads(request.body) if request.body else {} default_params_list = ['deviceCode', 'port'] params_list = payload.keys() # 1. 判断差集 different_params_list = list(set(default_params_list) - set(params_list)) if len(different_params_list) != 0: raise ApiParameterError(errmsg = u'参数内容错误') # 2. 判断个数 if len(params_list) != len(default_params_list): raise ApiParameterError(errmsg = u'参数错误') # 3. 调用api resultDict = send_api_order(payload = payload, dealer = dealer, func = 'apiStopChargingPortForCy4') return api_ok_response(payload = resultDict) @api_call(logger = logger, nil = api_exception_response()) def getPortStatusFromCy4(request, dealer): # type: (WSGIRequest, Dealer)->JsonResponse payload = json.loads(request.body) if request.body else {} default_params_list = ['deviceCode'] params_list = payload.keys() # 1. 判断差集 different_params_list = list(set(default_params_list) - set(params_list)) if len(different_params_list) != 0: raise ApiParameterError(errmsg = u'参数内容错误') # 2. 判断个数 if len(params_list) != len(default_params_list): raise ApiParameterError(errmsg = u'参数错误') # 3. 调用api resultDict = send_api_order(payload = payload, dealer = dealer, func = 'apiGetPortStatusFromCy4') return api_ok_response(payload = resultDict) @api_call(logger = logger, nil = api_exception_response()) def getPortInfoFromCy4(request, dealer): # type: (WSGIRequest, Dealer)->JsonResponse payload = json.loads(request.body) if request.body else {} default_params_list = ['deviceCode', 'port'] params_list = payload.keys() # 1. 判断差集 different_params_list = list(set(default_params_list) - set(params_list)) if len(different_params_list) != 0: raise ApiParameterError(errmsg = u'参数内容错误') # 2. 判断个数 if len(params_list) != len(default_params_list): raise ApiParameterError(errmsg = u'参数错误') # 3. 调用api resultDict = send_api_order(payload = payload, dealer = dealer, func = 'apiGetPortInfoFromCy4') return api_ok_response(payload = resultDict) @api_call(logger = logger, nil = api_exception_response()) def getConsumeRecordsFromCy4ByDeviceCode(request, dealer): # type: (WSGIRequest, Dealer)->JsonResponse payload = json.loads(request.body) if request.body else {} default_params_list = ['deviceCode', 'dataSize', 'reverse'] params_list = payload.keys() # 1. 判断差集 different_params_list = list(set(default_params_list) - set(params_list)) if len(different_params_list) != 0: raise ApiParameterError(errmsg = u'参数内容错误') # 2. 判断个数 if len(params_list) != len(default_params_list): raise ApiParameterError(errmsg = u'参数错误') # 3. 调用api resultDict = { "status": 0, "description": "", "errcode": 0, "result": {}, "errmsg": "SUCCESS", "desc": "" } apis = APIServiceStartRecord.objects(logicalCode = payload['deviceCode']) if apis.count() == 0: dataList = [] else: apis = apis[0:payload['dataSize']] dataList = [{ 'orderNo': _.orderNo, 'logicalCode': _.logicalCode, 'port': _.port, 'money': _.money, 'needTime': _.needTime, 'consumeType': _.consumeType, 'cardNo': _.cardNo, 'status': _.status, 'startTime': _.startTime, 'finishReason': _.finishReason, 'leftTime': _.leftTime, 'duration': _.duration, 'spendElec': _.spendElec, 'endTime': _.endTime } for _ in apis] if payload['reverse'] is True: dataList.sort(key = lambda x: x['startTime'], reverse = True) else: dataList.sort(key = lambda x: x['startTime']) resultDict['result'].update({'dataList': dataList}) return api_ok_response(payload = resultDict) @api_call(logger = logger, nil = api_exception_response()) def getConsumeRecordsFromCy4ByOrderNo(request, dealer): # type: (WSGIRequest, Dealer)->JsonResponse payload = json.loads(request.body) if request.body else {} default_params_list = ['orderNo'] params_list = payload.keys() # 1. 判断差集 different_params_list = list(set(default_params_list) - set(params_list)) if len(different_params_list) != 0: raise ApiParameterError(errmsg = u'参数内容错误') # 2. 判断个数 if len(params_list) != len(default_params_list): raise ApiParameterError(errmsg = u'参数错误') # 3. 调用api resultDict = { "status": 0, "description": "", "errcode": 0, "result": {}, "errmsg": "SUCCESS", "desc": "" } api = APIServiceStartRecord.objects(orderNo = payload['orderNo']).first() if api is None: dataList = [] else: dataList = [{ 'orderNo': api.orderNo, 'logicalCode': api.logicalCode, 'port': api.port, 'money': api.money, 'needTime': api.needTime, 'consumeType': api.consumeType, 'cardNo': api.cardNo, 'status': api.status, 'startTime': api.startTime, 'finishReason': api.finishReason, 'leftTime': api.leftTime, 'duration': api.duration, 'spendElec': api.spendElec, 'endTime': api.endTime }] resultDict['result'].update({'dataList': dataList}) return api_ok_response(payload = resultDict)