/**
  * @description 获取商户列表
  * @param classId 分类ID,如果不传此条件,请保留节点为空,传-1,为获取所有的商户
  * @param parentId 选填,用于连锁商铺,有父级与子级商铺存在
  * @param shopName 商户名称,如果不传此条件,请保留节点为空
  * @param isCommend 如果不传此条件,请保留节点为空1-热门或推荐商户 0-普通商户
  * @param bgnRowNum 起始行,必填
  * @param endRowNum 截止行,必填
  * @param callBackListener
  */
 public void getShopList(
     int classId,
     int parentId,
     String shopName,
     int isCommend,
     int bgnRowNum,
     int endRowNum,
     CallBackListener<ContainerModel<ShopInfo>> callBackListener) {
   HashMap<String, Object> map = createMap();
   try {
     HashMap<String, Object> inputBodyMap = new HashMap<String, Object>();
     inputBodyMap.put("ClassId", classId == -1 ? "" : classId);
     inputBodyMap.put("ShopName", TextUtils.isEmpty(shopName) ? "" : shopName);
     inputBodyMap.put("IsCommend", isCommend == -1 ? "" : isCommend);
     inputBodyMap.put("ParentId", parentId == -1 ? "" : parentId);
     inputBodyMap.put("BgnRowNum", bgnRowNum);
     inputBodyMap.put("EndRowNum", endRowNum);
     String inputBody = createInputBody(inputBodyMap);
     finishMap(map, inputBody);
   } catch (Exception e) {
     e.printStackTrace();
   }
   InvokeRequest request = new InvokeRequest(map, FunctionCode.GET_SHOP_LIST, callBackListener);
   request.invoke();
 }
 /**
  * 获取站内信
  *
  * @param UserId 必填
  * @param IsRead 选填,如果为空,则查询所有未读取和读取的消息。0-未读取,1-已读取
  * @param StartDate 选填,用于时间段检索
  * @param EndDate 选填,用于时间段检索
  * @param BgnRowNum 必填
  * @param EndRowNum 必填
  * @param callBackListener
  */
 public void getMessage(
     String UserId,
     int IsRead,
     String StartDate,
     String EndDate,
     int BgnRowNum,
     int EndRowNum,
     CallBackListener<ContainerModel<StationMessage>> callBackListener) {
   HashMap<String, Object> map = createMap();
   try {
     HashMap<String, Object> inputBodyMap = new HashMap<String, Object>();
     inputBodyMap.put("UserId", UserId);
     inputBodyMap.put("IsRead", IsRead == -1 ? "" : IsRead);
     inputBodyMap.put("StartDate", StartDate + "");
     inputBodyMap.put("EndDate", EndDate + "");
     inputBodyMap.put("BgnRowNum", BgnRowNum);
     inputBodyMap.put("EndRowNum", EndRowNum);
     String inputBody = createInputBody(inputBodyMap);
     finishMap(map, inputBody);
   } catch (Exception e) {
     e.printStackTrace();
   }
   InvokeRequest request = new InvokeRequest(map, FunctionCode.STATE_MESSAGE, callBackListener);
   request.invoke();
 }
 /**
  * 获取充值记录列表
  *
  * @param UserId 必填
  * @param InCardNO 冲值卡号 选填
  * @param StartDate 冲值开始日期 选填
  * @param EndDate 冲值截止日期 选填
  * @param BgnRowNum 必填
  * @param EndRowNum 必填
  * @param callBackListener
  */
 public void getRechargeRecord(
     String UserId,
     String InCardNO,
     String StartDate,
     String EndDate,
     int BgnRowNum,
     int EndRowNum,
     CallBackListener<ContainerModel<RechargeRecord>> callBackListener) {
   HashMap<String, Object> map = createMap();
   try {
     HashMap<String, Object> inputBodyMap = new HashMap<String, Object>();
     inputBodyMap.put("UserId", UserId);
     inputBodyMap.put("InCardNO", InCardNO);
     inputBodyMap.put("StartDate", StartDate + "");
     inputBodyMap.put("EndDate", EndDate + "");
     inputBodyMap.put("BgnRowNum", BgnRowNum);
     inputBodyMap.put("EndRowNum", EndRowNum);
     String inputBody = createInputBody(inputBodyMap);
     finishMap(map, inputBody);
   } catch (Exception e) {
     e.printStackTrace();
   }
   InvokeRequest request =
       new InvokeRequest(map, FunctionCode.GET_RECHARGE_RECORD, callBackListener);
   request.invoke();
 }
 /**
  * @param AdvType 必填,AdvType为1时查询出首页滚动 1-查询出首页滚动广告图片; 2-查询出APP/微信端首页商铺分类导航图片; 3-查询出PC端商铺分类导航图片;
  * @param callBackListener
  */
 public void getHomeBanner(int AdvType, CallBackListener<List<HomeBanner>> callBackListener) {
   HashMap<String, Object> map = createMap();
   try {
     HashMap<String, Integer> inputBodyMap = new HashMap<String, Integer>();
     inputBodyMap.put("AdvType", AdvType);
     String inputBody = createInputBody(inputBodyMap);
     finishMap(map, inputBody);
   } catch (Exception e) {
     e.printStackTrace();
   }
   InvokeRequest request = new InvokeRequest(map, FunctionCode.HOME_BANNER, callBackListener);
   request.invoke();
 }
 /**
  * @description 通过id获取商户详情
  * @param shopId
  * @param callBackListener
  */
 public void getShopDetailById(int shopId, CallBackListener<ShopInfo> callBackListener) {
   HashMap<String, Object> map = createMap();
   try {
     HashMap<String, Integer> inputBodyMap = new HashMap<String, Integer>();
     inputBodyMap.put("ShopId", shopId);
     String inputBody = createInputBody(inputBodyMap);
     finishMap(map, inputBody);
   } catch (Exception e) {
     e.printStackTrace();
   }
   InvokeRequest request = new InvokeRequest(map, FunctionCode.GET_SHOP_DETAIL, callBackListener);
   request.invoke();
 }
 /**
  * @description 获取商户分类
  * @param parentId 分类继承ID,如果查询所有分类,此节点请为空。如查询一级分类此节点为0
  * @param backListener
  */
 public void getShopCategory(int parentId, CallBackListener<List<ShopCategory>> backListener) {
   HashMap<String, Object> map = createMap();
   try {
     HashMap<String, Object> inputBodyMap = new HashMap<String, Object>();
     inputBodyMap.put("ParentId", parentId == -1 ? "" : parentId); // 如果查询所有分类,此节点请为空。如查询一级分类此节点为0
     String inputBody = createInputBody(inputBodyMap);
     finishMap(map, inputBody);
   } catch (Exception e) {
     e.printStackTrace();
   }
   InvokeRequest request = new InvokeRequest(map, FunctionCode.GET_SHOP_CATEGORY, backListener);
   request.invoke();
 }
 /**
  * 获取验证码
  *
  * @param phoneNum
  * @param callBackListener
  */
 public void getVerification(String phoneNum, CallBackListener callBackListener) {
   HashMap<String, Object> map = createMap();
   try {
     HashMap<String, String> inputBodyMap = new HashMap<String, String>();
     inputBodyMap.put("Mobile", phoneNum);
     String inputBody = createInputBody(inputBodyMap);
     finishMap(map, inputBody);
   } catch (Exception e) {
     e.printStackTrace();
   }
   InvokeRequest request = new InvokeRequest(map, FunctionCode.GET_VERIFICATION, callBackListener);
   request.invoke();
 }
  /**
   * @descript 客户端签到获取密钥
   * @param listener
   */
  public void getDes(CallBackListener<AuthenticateInfo> listener) {

    HashMap<String, Object> map = new HashMap<String, Object>();
    map.put("ClientCode", FunctionCode.DESKEY_CLIENTCODE);
    try {
      map.put("UserId", Des3Utils.des3EncodeECB(FunctionCode.DEFAULTKEY, FunctionCode.UID));
      map.put("UserPwd", Des3Utils.des3EncodeECB(FunctionCode.DEFAULTKEY, FunctionCode.PWD));
    } catch (Exception e1) {
      e1.printStackTrace();
    }
    InvokeRequest request = new InvokeRequest(map, FunctionCode.DESKEY, listener);
    request.invoke();
  }
 /**
  * 获取支付码
  *
  * @param UserId
  * @param CardNO
  * @param callBackListener
  */
 public void getPayBarCode(String UserId, String CardNO, CallBackListener callBackListener) {
   HashMap<String, Object> map = createMap();
   try {
     HashMap<String, String> inputBodyMap = new HashMap<String, String>();
     inputBodyMap.put("UserId", UserId);
     inputBodyMap.put("CardNO", CardNO);
     String inputBody = createInputBody(inputBodyMap);
     finishMap(map, inputBody);
   } catch (Exception e) {
     e.printStackTrace();
   }
   InvokeRequest request = new InvokeRequest(map, FunctionCode.GET_PAY_BARCODE, callBackListener);
   request.invoke();
 }
 /**
  * @description 登录操作
  * @param userId
  * @param password
  * @param callBackListener
  */
 public void login(String userId, String password, final CallBackListener callBackListener) {
   HashMap<String, Object> map = createMap();
   try {
     HashMap<String, String> inputBodyMap = new HashMap<String, String>();
     inputBodyMap.put("UserId", userId);
     inputBodyMap.put("UserPwd", password);
     String inputBody = createInputBody(inputBodyMap);
     finishMap(map, inputBody);
   } catch (Exception e) {
     e.printStackTrace();
   }
   InvokeRequest request = new InvokeRequest(map, FunctionCode.LOGIN_ACTIVE, callBackListener);
   request.invoke();
 }
 /**
  * 获取会员信息
  *
  * @param userId
  * @param idType
  * @param callBackListener
  */
 @SuppressWarnings({"unchecked", "rawtypes"})
 public void getUserInfo(String userId, int idType, CallBackListener callBackListener) {
   HashMap<String, Object> map = createMap();
   try {
     HashMap inputBodyMap = new HashMap();
     inputBodyMap.put("UserId", userId);
     inputBodyMap.put("IdType", idType);
     String inputBody = createInputBody(inputBodyMap);
     finishMap(map, inputBody);
   } catch (Exception e) {
     e.printStackTrace();
   }
   InvokeRequest request = new InvokeRequest(map, FunctionCode.USER_INFO, callBackListener);
   request.invoke();
 }
 /**
  * 更新密码
  *
  * @param uid
  * @param oldpwd
  * @param newpwd
  * @param callBackListener
  */
 public void updatePassword(
     String uid, String oldpwd, String newpwd, CallBackListener callBackListener) {
   HashMap<String, Object> map = createMap();
   try {
     HashMap<String, String> inputBodyMap = new HashMap<String, String>();
     inputBodyMap.put("UserId", uid);
     inputBodyMap.put("OldPwd", oldpwd);
     inputBodyMap.put("NewPwd", newpwd);
     String inputBody = createInputBody(inputBodyMap);
     finishMap(map, inputBody);
   } catch (Exception e) {
     e.printStackTrace();
   }
   InvokeRequest request = new InvokeRequest(map, FunctionCode.PASSWORD_EDIT, callBackListener);
   request.invoke();
 }
 /**
  * 绑定卡
  *
  * @param mobile
  * @param smsCode
  * @param certNo
  * @param callBackListener
  */
 public void bindCard(
     String mobile, String smsCode, String certNo, CallBackListener callBackListener) {
   HashMap<String, Object> map = createMap();
   try {
     HashMap<String, String> inputBodyMap = new HashMap<String, String>();
     inputBodyMap.put("Mobile", mobile);
     inputBodyMap.put("SMSCode", smsCode);
     inputBodyMap.put("CertNO", certNo);
     String inputBody = createInputBody(inputBodyMap);
     finishMap(map, inputBody);
   } catch (Exception e) {
     e.printStackTrace();
   }
   InvokeRequest request = new InvokeRequest(map, FunctionCode.BIND_CARD, callBackListener);
   request.invoke();
 }
 /**
  * 3.12 充值状态更改
  *
  * @param BillNO
  * @param PayMode 充值支付方式 1-微信支付;2-支付宝支付;
  * @param callBackListener
  */
 public void changeChargeState(
     String BillNO, int PayMode, CallBackListener<RtnMessage> callBackListener) {
   HashMap<String, Object> map = createMap();
   try {
     HashMap<String, Object> inputBodyMap = new HashMap<String, Object>();
     inputBodyMap.put("BillNO", BillNO);
     inputBodyMap.put("PayMode", PayMode);
     String inputBody = createInputBody(inputBodyMap);
     finishMap(map, inputBody);
   } catch (Exception e) {
     e.printStackTrace();
   }
   InvokeRequest request =
       new InvokeRequest(map, FunctionCode.CHANGE_CHARGE_STATE, callBackListener);
   request.invoke();
 }
 /**
  * @description 注册操作
  * @param mobile
  * @param password
  * @param msgCode
  * @param callBackListener
  */
 public void register(
     String mobile,
     String password,
     String msgCode,
     CallBackListener<LoginOrRegisterResult> callBackListener) {
   HashMap<String, Object> map = createMap();
   try {
     HashMap<String, String> inputBodyMap = new HashMap<String, String>();
     inputBodyMap.put("Mobile", mobile);
     inputBodyMap.put("UserPwd", password);
     inputBodyMap.put("SMSCode", msgCode);
     String inputBody = createInputBody(inputBodyMap);
     finishMap(map, inputBody);
   } catch (Exception e) {
     e.printStackTrace();
   }
   InvokeRequest request = new InvokeRequest(map, FunctionCode.REGISTER_ACTIVE, callBackListener);
   request.invoke();
 }
 /**
  * 找回密码
  *
  * @param phoneNum
  * @param smsCode
  * @param newPwd
  * @param callBackListener
  */
 public void findPassword(
     String phoneNum,
     String smsCode,
     String newPwd,
     CallBackListener<RtnMessage> callBackListener) {
   HashMap<String, Object> map = createMap();
   try {
     HashMap<String, String> inputBodyMap = new HashMap<String, String>();
     inputBodyMap.put("Mobile", phoneNum);
     inputBodyMap.put("SMSCode", smsCode);
     inputBodyMap.put("NewPwd", newPwd);
     String inputBody = createInputBody(inputBodyMap);
     finishMap(map, inputBody);
   } catch (Exception e) {
     e.printStackTrace();
   }
   InvokeRequest request = new InvokeRequest(map, FunctionCode.FIND_PASSWORD, callBackListener);
   request.invoke();
 }
 /**
  * @description 修改会员信息
  * @param info
  * @param backListener
  */
 public void updateUserInfo(UserInfo info, CallBackListener backListener) {
   HashMap<String, Object> map = createMap();
   try {
     HashMap<String, String> inputBodyMap = new HashMap<String, String>();
     inputBodyMap.put("UserId", info.getUid());
     inputBodyMap.put("Name", info.getName());
     inputBodyMap.put("Sex", info.getSex());
     inputBodyMap.put(
         "NickName",
         new String(Base64.encode(info.getNickName().getBytes(), Base64.NO_WRAP), "UTF-8"));
     inputBodyMap.put("CertNO", info.getCertNO());
     inputBodyMap.put("Email", info.getEmail());
     String inputBody = createInputBody(inputBodyMap);
     finishMap(map, inputBody);
   } catch (Exception e) {
     e.printStackTrace();
   }
   InvokeRequest request = new InvokeRequest(map, FunctionCode.USER_INFO_UPDATE, backListener);
   request.invoke();
 }
 /**
  * 生成充值订单
  *
  * @param UserId
  * @param InCardNO
  * @param InMoney
  * @param PayMode 1-微信支付2-支付宝支付3-银联支付4-卡卡冲值
  * @param callBackListener
  */
 public void getChargeOrder(
     String UserId,
     String InCardNO,
     float InMoney,
     int PayMode,
     CallBackListener<RtnMessage> callBackListener) {
   HashMap<String, Object> map = createMap();
   try {
     HashMap<String, Object> inputBodyMap = new HashMap<String, Object>();
     inputBodyMap.put("UserId", UserId);
     inputBodyMap.put("InCardNO", InCardNO);
     inputBodyMap.put("InMoney", InMoney);
     inputBodyMap.put("PayMode", PayMode);
     String inputBody = createInputBody(inputBodyMap);
     finishMap(map, inputBody);
   } catch (Exception e) {
     e.printStackTrace();
   }
   InvokeRequest request = new InvokeRequest(map, FunctionCode.GET_CHARGE_ORDER, callBackListener);
   request.invoke();
 }
 /**
  * 获取某个时间段内充值总数和返利总数
  *
  * @param UserId
  * @param InCardNO
  * @param StartDate
  * @param EndDate
  * @param callBackListener
  */
 public void getChargeTotal(
     String UserId,
     String InCardNO,
     String StartDate,
     String EndDate,
     CallBackListener<RtnMessage> callBackListener) {
   HashMap<String, Object> map = createMap();
   try {
     HashMap<String, Object> inputBodyMap = new HashMap<String, Object>();
     inputBodyMap.put("UserId", UserId);
     inputBodyMap.put("InCardNO", InCardNO);
     inputBodyMap.put("StartDate", StartDate + "");
     inputBodyMap.put("EndDate", EndDate + "");
     String inputBody = createInputBody(inputBodyMap);
     finishMap(map, inputBody);
   } catch (Exception e) {
     e.printStackTrace();
   }
   InvokeRequest request =
       new InvokeRequest(map, FunctionCode.GET_RECHARGE_TOTAL, callBackListener);
   request.invoke();
 }
 /**
  * 卡卡转账
  *
  * @param UserId
  * @param InCardNO 冲值卡号
  * @param OutCardNO 被下帐卡号
  * @param OutCardPwd 被下帐卡密码
  * @param InMoney
  * @param callBackListener
  */
 public void cardChargeCard(
     String UserId,
     String InCardNO,
     String OutCardNO,
     String OutCardPwd,
     String InMoney,
     CallBackListener callBackListener) {
   HashMap<String, Object> map = createMap();
   try {
     HashMap<String, Object> inputBodyMap = new HashMap<String, Object>();
     inputBodyMap.put("UserId", UserId);
     inputBodyMap.put("InCardNO", InCardNO);
     inputBodyMap.put("OutCardNO", OutCardNO);
     inputBodyMap.put("OutCardPwd", OutCardPwd);
     inputBodyMap.put("InMoney", InMoney);
     String inputBody = createInputBody(inputBodyMap);
     finishMap(map, inputBody);
   } catch (Exception e) {
     e.printStackTrace();
   }
   InvokeRequest request = new InvokeRequest(map, FunctionCode.CARD_CHARGE_CARD, callBackListener);
   request.invoke();
 }