/** @param param */
  @Transactional
  public void updateOrder(OrderModifyParam param) {
    TradeThirdOrder tradeThirdOrder =
        getThirdOrderBythirdTradeNo(param.getServicePartner(), param.getThirdTradeNo());
    if (tradeThirdOrder == null) {
      throw new TradeException(
          new ReturnCode() {
            @Override
            public String getMessage() {
              return QunarErrorCode.ORDER_NOT_FOUND.name();
            }

            @Override
            public int getCode() {
              return QunarErrorCode.ORDER_NOT_FOUND.code();
            }
          });
    }
    OrderBean orderBean = orderQueryService.getOrderByNo(tradeThirdOrder.getOrderNo());
    if (orderBean == null) {
      log.error(
          "订单不存在。订单号为:" + tradeThirdOrder.getOrderNo() + ",三方订单号是:" + param.getThirdTradeNo());
      throw new TradeException(
          new ReturnCode() {
            @Override
            public String getMessage() {
              return QunarErrorCode.ORDER_NOT_FOUND.name();
            }

            @Override
            public int getCode() {
              return QunarErrorCode.ORDER_NOT_FOUND.code();
            }
          });
    }
    orderBean.setUserName(param.getUserName());
    orderBean.setUserAreaCode1(param.getUserAreaCode1());
    orderBean.setUserMobile1(param.getUserMobile1());
    orderBean.setUserAreaCode2(param.getUserAreaCode2());
    orderBean.setUserMobile2(param.getUserMobile2());
    orderBean.setUserAreaCode3(param.getUserAreaCode3());
    orderBean.setUserMobile3(param.getUserMobile3());
    orderBean.setUserRemark(param.getUserRemark());
    orderBean.setIsArrivalVisa(param.getIsArrivalVisa());
    switch (OrderType.getType(orderBean.getOrderType())) {
      case PICKUPORDER:
        updateOrderService.updatePickUpOrder(orderBean);
        break;
      case TRANSFER:
        updateOrderService.updateTransferOrder(orderBean);
        break;
      default:
        log.error("订单类型不支持。参数:" + JSON.toJSONString(orderBean));
        throw new TradeException(
            new ReturnCode() {
              @Override
              public String getMessage() {
                return QunarErrorCode.ERR_PARAM.name();
              }

              @Override
              public int getCode() {
                return QunarErrorCode.ERR_PARAM.code();
              }
            });
    }
  }