@Override
 public ProcessResult process(
     RequestInfo requestInfo, Map<String, String> handler, Map<String, Object> extParameters)
     throws Exception {
   RequestInfo newRequestInfo = BssServiceUtils.copyRequestInfo(requestInfo);
   newRequestInfo.getRequestHeader().setBizCode("xchangePromotion");
   return SoapCallUtils.process(
       this,
       newRequestInfo,
       newRequestInfo.getRequestBody().getServiceNumber(),
       newRequestInfo.getRequestBody().getExtParameters(),
       handler,
       "ws.cbs.query.timeout");
 }
  @Override
  public ProcessResult process(
      RequestInfo requestInfo, Map<String, String> handler, Map<String, Object> extParameters)
      throws Exception {
    if (StringUtils.isEmpty(requestInfo.getRequestBody().getServiceNumber())) {
      throw new Exception("serviceNumber is null");
    }
    BizHandler appHandler =
        (BizHandler) ServiceUtils.getBeanByTenantId(handler.get("appHandlerName"));
    ProcessResult processResult = appHandler.process(requestInfo, handler, extParameters);
    if (!UnieapConstants.C0.equals(processResult.getResultCode())) {
      return processResult;
    }
    QueryPaymentLogsVO queryPaymentLogsVO = (QueryPaymentLogsVO) processResult.getVo();
    List<MshopPaymentVO> payments = getPaymentLogList(queryPaymentLogsVO);

    if (handler != null) {
      String custHandlerName = handler.get("custHandlerName");
      if (!StringUtils.isEmpty(custHandlerName)) {
        CustomizeBizHanlder custHandler =
            (CustomizeBizHanlder) ServiceUtils.getBean(custHandlerName);
        List<Object> originalVOs = new ArrayList<Object>();
        originalVOs.add(queryPaymentLogsVO);
        custHandler.process(requestInfo, handler, extParameters, payments, originalVOs);
      }
    }

    JSONObject jsonResult = new JSONObject();
    processResult.setResultCode(UnieapConstants.C0);
    processResult.setResultDesc(UnieapConstants.getMessage(UnieapConstants.C0));
    jsonResult.put("paymentList", JSONUtils.collectionToJson(payments));
    processResult.setExtParameters(jsonResult.toString());
    return processResult;
  }
  @Override
  public SOAPMessage getRequestSOAPMessage(String serviceNumber, RequestInfo requestInfo)
      throws Exception {
    String xChangeType = "";
    String applierNumber = "";
    String receiverNumber = "";
    String exchangeAmount = "";
    if (!StringUtils.isEmpty(requestInfo.getRequestBody().getExtParameters())) {
      JSONObject extParametersJson =
          new JSONObject(requestInfo.getRequestBody().getExtParameters());
      if (extParametersJson.has("xChangeType")) {
        xChangeType = extParametersJson.getString("xChangeType");
      } else {
        throw new Exception("xChangeType is null");
      }
      if (extParametersJson.has("applierNumber")) {
        applierNumber = extParametersJson.getString("applierNumber");
      } else {
        throw new Exception("applierNumber is null");
      }
      if (extParametersJson.has("receiverNumber")) {
        receiverNumber = extParametersJson.getString("receiverNumber");
      } else {
        throw new Exception("applierNumber is null");
      }
      if (extParametersJson.has("exchangeAmount")) {
        exchangeAmount = extParametersJson.getString("exchangeAmount");
      } else {
        throw new Exception("exchangeAmount is null");
      }
    }

    SOAPMessage message = SoapCallUtils.getMessageFactory().createMessage();
    this.getCBSArsHeader("XchangePromotionRequestMsg", message);
    SOAPBodyElement bodyElement = (SOAPBodyElement) message.getSOAPBody().getChildElements().next();
    SOAPElement reqestElement = bodyElement.addChildElement("XchangePromotionRequest");
    reqestElement.addChildElement("XchangeType", "arc").addTextNode(xChangeType);
    reqestElement.addChildElement("applierNumber", "arc").addTextNode(applierNumber);
    ;
    reqestElement.addChildElement("receiverNumber", "arc").addTextNode(receiverNumber);
    ;
    reqestElement.addChildElement("exchangeAmount", "arc").addTextNode(exchangeAmount);
    ;
    return message;
  }
 @Override
 public ProcessResult process(
     RequestInfo requestInfo, Map<String, String> handler, Map<String, Object> extParameters)
     throws Exception {
   if (StringUtils.isEmpty(requestInfo.getRequestBody().getServiceNumber())) {
     throw new Exception("serviceNumber is null");
   }
   BizHandler appHandler =
       (BizHandler) ServiceUtils.getBeanByTenantId(handler.get("appHandlerName"));
   ProcessResult processResult = appHandler.process(requestInfo, handler, extParameters);
   if (handler != null) {
     String custHandlerName = handler.get("custHandlerName");
     if (!StringUtils.isEmpty(custHandlerName)) {
       CustomizeBizHanlder custHandler =
           (CustomizeBizHanlder) ServiceUtils.getBean(custHandlerName);
       List<Object> originalVOs = new ArrayList<Object>();
       originalVOs.add(processResult.getVo());
       custHandler.process(
           requestInfo, handler, extParameters, processResult.getVo(), originalVOs);
     }
   }
   return processResult;
 }