/**
  * 根据商户key获取已生效的支付配置
  *
  * @param payKey
  * @return
  */
 public RpUserPayConfig getByPayKey(String payKey) {
   Map<String, Object> paramMap = new HashMap<String, Object>();
   paramMap.put("payKey", payKey);
   paramMap.put("status", PublicStatusEnum.ACTIVE.name());
   paramMap.put("auditStatus", PublicEnum.YES.name());
   return rpUserPayConfigDao.getBy(paramMap);
 }
 /** 根据支付产品获取数据 */
 @Override
 public List<RpUserPayConfig> listByProductCode(String productCode, String auditStatus) {
   Map<String, Object> paramMap = new HashMap<String, Object>();
   paramMap.put("productCode", productCode);
   paramMap.put("status", PublicStatusEnum.ACTIVE.name());
   paramMap.put("auditStatus", auditStatus);
   return rpUserPayConfigDao.listBy(paramMap);
 }
 @Override
 public PageBean listPage(PageParam pageParam, RpUserPayConfig rpUserPayConfig) {
   Map<String, Object> paramMap = new HashMap<String, Object>();
   paramMap.put("productCode", rpUserPayConfig.getProductCode());
   paramMap.put("userNo", rpUserPayConfig.getUserNo());
   paramMap.put("userName", rpUserPayConfig.getUserName());
   paramMap.put("productName", rpUserPayConfig.getProductName());
   paramMap.put("status", PublicStatusEnum.ACTIVE.name());
   return rpUserPayConfigDao.listPage(pageParam, paramMap);
 }
  /**
   * 删除支付产品
   *
   * @param userNo
   */
  @Override
  public void deleteUserPayConfig(String userNo) throws PayBizException {

    RpUserPayConfig rpUserPayConfig = rpUserPayConfigDao.getByUserNo(userNo, null);
    if (rpUserPayConfig == null) {
      throw new PayBizException(PayBizException.USER_PAY_CONFIG_IS_NOT_EXIST, "用户支付配置不存在");
    }

    rpUserPayConfig.setStatus(PublicStatusEnum.UNACTIVE.name());
    rpUserPayConfig.setEditTime(new Date());
    updateData(rpUserPayConfig);
  }
 /**
  * 根据商户编号获取支付配置
  *
  * @param userNo
  * @param auditStatus
  * @return
  */
 @Override
 public RpUserPayConfig getByUserNo(String userNo, String auditStatus) {
   return rpUserPayConfigDao.getByUserNo(userNo, auditStatus);
 }
 /**
  * 根据商户编号获取已生效的支付配置
  *
  * @param userNo
  * @return
  */
 @Override
 public RpUserPayConfig getByUserNo(String userNo) {
   return rpUserPayConfigDao.getByUserNo(userNo, PublicEnum.YES.name());
 }
 @Override
 public RpUserPayConfig getDataById(String id) {
   return rpUserPayConfigDao.getById(id);
 }
 @Override
 public void updateData(RpUserPayConfig rpUserPayConfig) {
   rpUserPayConfigDao.update(rpUserPayConfig);
 }
 @Override
 public void saveData(RpUserPayConfig rpUserPayConfig) {
   rpUserPayConfigDao.insert(rpUserPayConfig);
 }
  /** 修改用户支付配置 */
  @Override
  public void updateUserPayConfig(
      String userNo,
      String productCode,
      String productName,
      Integer riskDay,
      String fundIntoType,
      String isAutoSett,
      String appId,
      String merchantId,
      String partnerKey,
      String ali_partner,
      String ali_sellerId,
      String ali_key,
      String ali_appid,
      String ali_rsaPrivateKey,
      String ali_rsaPublicKey)
      throws PayBizException {
    RpUserPayConfig rpUserPayConfig = rpUserPayConfigDao.getByUserNo(userNo, null);
    if (rpUserPayConfig == null) {
      throw new PayBizException(PayBizException.USER_PAY_CONFIG_IS_NOT_EXIST, "用户支付配置不存在");
    }

    rpUserPayConfig.setProductCode(productCode);
    rpUserPayConfig.setProductName(productName);
    rpUserPayConfig.setRiskDay(riskDay);
    rpUserPayConfig.setFundIntoType(fundIntoType);
    rpUserPayConfig.setIsAutoSett(isAutoSett);
    rpUserPayConfig.setEditTime(new Date());
    updateData(rpUserPayConfig);

    // 查询支付产品下有哪些支付方式
    List<RpPayWay> payWayList = rpPayWayService.listByProductCode(productCode);
    Map<String, String> map = new HashMap<String, String>();
    // 过滤重复数据
    for (RpPayWay payWay : payWayList) {
      map.put(payWay.getPayWayCode(), payWay.getPayWayName());
    }

    for (String key : map.keySet()) {
      if (key.equals(PayWayEnum.WEIXIN.name())) {
        // 创建用户第三方支付信息
        RpUserPayInfo rpUserPayInfo =
            rpUserPayInfoService.getByUserNo(userNo, PayWayEnum.WEIXIN.name());
        if (rpUserPayInfo == null) {
          rpUserPayInfo = new RpUserPayInfo();
          rpUserPayInfo.setId(StringUtil.get32UUID());
          rpUserPayInfo.setCreateTime(new Date());
          rpUserPayInfo.setAppId(appId);
          rpUserPayInfo.setMerchantId(merchantId);
          rpUserPayInfo.setPartnerKey(partnerKey);
          rpUserPayInfo.setPayWayCode(PayWayEnum.WEIXIN.name());
          rpUserPayInfo.setPayWayName(PayWayEnum.WEIXIN.getDesc());
          rpUserPayInfo.setUserNo(userNo);
          rpUserPayInfo.setUserName(rpUserPayConfig.getUserName());
          rpUserPayInfo.setStatus(PublicStatusEnum.ACTIVE.name());
          rpUserPayInfoService.saveData(rpUserPayInfo);
        } else {
          rpUserPayInfo.setEditTime(new Date());
          rpUserPayInfo.setAppId(appId);
          rpUserPayInfo.setMerchantId(merchantId);
          rpUserPayInfo.setPartnerKey(partnerKey);
          rpUserPayInfo.setPayWayCode(PayWayEnum.WEIXIN.name());
          rpUserPayInfo.setPayWayName(PayWayEnum.WEIXIN.getDesc());
          rpUserPayInfoService.updateData(rpUserPayInfo);
        }

      } else if (key.equals(PayWayEnum.ALIPAY.name())) {
        // 创建用户第三方支付信息
        RpUserPayInfo rpUserPayInfo =
            rpUserPayInfoService.getByUserNo(userNo, PayWayEnum.ALIPAY.name());
        if (rpUserPayInfo == null) {
          rpUserPayInfo = new RpUserPayInfo();
          rpUserPayInfo.setId(StringUtil.get32UUID());
          rpUserPayInfo.setCreateTime(new Date());
          rpUserPayInfo.setAppId(ali_partner);
          rpUserPayInfo.setMerchantId(ali_sellerId);
          rpUserPayInfo.setPartnerKey(ali_key);
          rpUserPayInfo.setPayWayCode(PayWayEnum.ALIPAY.name());
          rpUserPayInfo.setPayWayName(PayWayEnum.ALIPAY.getDesc());
          rpUserPayInfo.setUserNo(userNo);
          rpUserPayInfo.setUserName(rpUserPayConfig.getUserName());
          rpUserPayInfo.setStatus(PublicStatusEnum.ACTIVE.name());
          rpUserPayInfo.setOfflineAppId(ali_appid);
          rpUserPayInfo.setRsaPrivateKey(ali_rsaPrivateKey);
          rpUserPayInfo.setRsaPublicKey(ali_rsaPublicKey);
          rpUserPayInfoService.saveData(rpUserPayInfo);
        } else {
          rpUserPayInfo.setEditTime(new Date());
          rpUserPayInfo.setAppId(ali_partner);
          rpUserPayInfo.setMerchantId(ali_sellerId);
          rpUserPayInfo.setPartnerKey(ali_key);
          rpUserPayInfo.setPayWayCode(PayWayEnum.ALIPAY.name());
          rpUserPayInfo.setPayWayName(PayWayEnum.ALIPAY.getDesc());
          rpUserPayInfo.setOfflineAppId(ali_appid);
          rpUserPayInfo.setRsaPrivateKey(ali_rsaPrivateKey);
          rpUserPayInfo.setRsaPublicKey(ali_rsaPublicKey);
          rpUserPayInfoService.updateData(rpUserPayInfo);
        }
      }
    }
  }