瀏覽代碼

提现相关rollback

Evan 2 年之前
父節點
當前提交
abee79ff3a

+ 1 - 5
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/ChannelWithdrawMgrController.java

@@ -108,13 +108,9 @@ public class ChannelWithdrawMgrController extends BaseApiController {
       return error(ErrorCodeEnum.ERROR_CODE_1001);
     }
     ChannelWithdraw channelWithdraw = channelWithdrawService.getById(withdraw.getId());
-    if (channelWithdraw.getStatus() != ChannelWithdrawStatusEnum.WITHDRAWING
-        && channelWithdraw.getStatus() != ChannelWithdrawStatusEnum.YS_WITHDRAW_FAILED) {
+    if (channelWithdraw.getStatus() != ChannelWithdrawStatusEnum.WITHDRAWING) {
       return error("提现申请状态异常,不是提现中");
     }
-    if (ChannelWithdrawStatusEnum.FINISHED.equals(withdraw.getStatus())) {
-      withdraw.setStatus(ChannelWithdrawStatusEnum.WITHDRAW_PROCESS);
-    }
     channelWithdrawService.verify(channelWithdraw, withdraw.getStatus(), withdraw.getVerifyContent());
     return AjaxResult.success("操作成功");
   }

+ 2 - 2
mp-admin/src/main/java/com/qs/mp/web/controller/api/callback/YsPayCallBackController.java

@@ -306,7 +306,7 @@ public class YsPayCallBackController {
      */
     @RequestMapping(value = "/ysWithdrawCallback", method = RequestMethod.POST)
     public void withdrawCallback(HttpServletRequest request, HttpServletResponse response) {
-        Map<String, String[]> reqParams = request.getParameterMap();
+        /*Map<String, String[]> reqParams = request.getParameterMap();
 
         Map<String, String> params = new HashMap<>();
         for (String key : reqParams.keySet()) {
@@ -367,7 +367,7 @@ public class YsPayCallBackController {
 //            .eq(ChannelWithdraw::getStatus, ChannelWithdrawStatusEnum.WITHDRAW_PROCESS));
 //        if (!res) {
 //            logger.error("更新提现记录状态失败,tradeNo:{}", tradeNo);
-//        }
+//        }*/
         responseWrite(response, "success");
     }
 

+ 120 - 124
mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/ChannelWithdrawController.java

@@ -117,135 +117,133 @@ public class ChannelWithdrawController extends BaseApiController {
   @Autowired
   private IYsCallLogService ysCallLogService;
 
-  @ApiOperation(value = "银行卡实名认证绑定")
-  @PostMapping("/withdraw/bankCardAuth")
-  public AjaxResult bankCardAuth(@Validated @RequestBody ChannelBankCardCreateParam param) {
-    Long channelId = SecurityUtils.getLoginUser().getChannelId();
-
-    // 判断是否已经绑定过银行卡
-    int count = channelBankCardService.count(new LambdaQueryWrapper<ChannelBankCard>()
-        .eq(ChannelBankCard::getChannelId, channelId));
-    if (count > 0) {
-      return AjaxResult.error("已经绑定过银行卡");
-    }
-
-
-    OnlineReqDataVo req = new OnlineReqDataVo();
-    //商户在银盛支付平台开设的用户号[商户号],接入时需要替换成自己的
-    req.setPartnerId(partnerId);
-    req.setReqUrl(YsServerApiConstants.OPEN_API);
-    req.setPrivateKeyFilePath(privateKeyPath);
-    req.setPrivateKeyPassword(privateKeyPass);
-    req.setYsPublicKeyFilePath(publicKeyPath);
-    //银行实名认证三要素下单业务参数
-    Map<String, Object> bizContent = new HashMap<>();
-    String tradeNo = DateUtil.getDateNowYmd() + DateUtil.getRandom(14);
-    //商户生成的订单号,生成规则前8位必须为交易日期,如20180525,范围跨度支持包含当天在内的前后一天
-    bizContent.put("out_trade_no", tradeNo);
-    //商户日期(该参数做交易与查询时需要一致)该日期需在当日的前后一天时间范围之内
-    bizContent.put("shopdate", DateUtil.getDateNowYmd());
-    //实名认证姓名--请填写真实信息
-    bizContent.put("bank_account_name", param.getUserName());
-    //银行帐号,支持对公对私
-    bizContent.put("bank_account_no", param.getCardNo());
-    //证件号码,目前只支持身份证
-    bizContent.put("id_card", param.getIdCard());
-    req.setParamData(bizContent);
-    String result = null;
-    try{
-      logger.info("银行实名认证三要素调用sdk接口addScanMerc请求入参为:"+ JSONObject.toJSONString(req));
-      //根据返回结果处理自己的业务逻辑,result内容详见接口文档
-      result = BankAuthorityApi.sendBankAuthThreePrecise(req);
-    }catch (Exception e){
-      logger.info("银行实名认证三要素失败:"+ e.getMessage());
-    }
-    logger.info("银行实名认证三要素result =" + result);
-
-
-
-//    Map<String, String> mapData = new HashMap<>();
-//    mapData.put("partner_id", partnerId);
-//    mapData.put("method", YsPayMethodConstants.BANK_CARD_AUTH_METHOD);
-//    mapData.put("timestamp", DateUtil.getDateNow());
-//    mapData.put("sign_type", "RSA");
-//    mapData.put("charset", "utf-8");
-//    mapData.put("version", "3.0");
+//  @ApiOperation(value = "银行卡实名认证绑定")
+//  @PostMapping("/withdraw/bankCardAuth")
+//  public AjaxResult bankCardAuth(@Validated @RequestBody ChannelBankCardCreateParam param) {
+//    Long channelId = SecurityUtils.getLoginUser().getChannelId();
 //
-//    JSONObject json = new JSONObject();
-//    String tradeNo = DateUtil.getDateNowYmd() + DateUtil.getRandom(14);
-//    json.put("out_trade_no", tradeNo);
-//    json.put("shopdate", DateUtil.getDateNowYmd());
-//    json.put("bank_account_name", param.getUserName());
-//    json.put("bank_account_no", param.getCardNo());
-//    json.put("id_card", param.getIdCard());
-//    mapData.put("biz_content", json.toString());
-//    //参数签名
-//    try {
-//      String sign = YsOnlineSignUtils.sign(mapData, privateKeyPass, privateKeyPath);
-//      mapData.put("sign", sign);
-//      logger.info("认证信息签名成功,sign = " + sign);
-//    } catch (Exception e) {
-//      System.err.println("签名异常" + e);
+//    // 判断是否已经绑定过银行卡
+//    int count = channelBankCardService.count(new LambdaQueryWrapper<ChannelBankCard>()
+//        .eq(ChannelBankCard::getChannelId, channelId));
+//    if (count > 0) {
+//      return AjaxResult.error("已经绑定过银行卡");
 //    }
 //
+//
+//    OnlineReqDataVo req = new OnlineReqDataVo();
+//    //商户在银盛支付平台开设的用户号[商户号],接入时需要替换成自己的
+//    req.setPartnerId(partnerId);
+//    req.setReqUrl(YsServerApiConstants.OPEN_API);
+//    req.setPrivateKeyFilePath(privateKeyPath);
+//    req.setPrivateKeyPassword(privateKeyPass);
+//    req.setYsPublicKeyFilePath(publicKeyPath);
+//    //银行实名认证三要素下单业务参数
+//    Map<String, Object> bizContent = new HashMap<>();
+//    String tradeNo = DateUtil.getDateNowYmd() + DateUtil.getRandom(14);
+//    //商户生成的订单号,生成规则前8位必须为交易日期,如20180525,范围跨度支持包含当天在内的前后一天
+//    bizContent.put("out_trade_no", tradeNo);
+//    //商户日期(该参数做交易与查询时需要一致)该日期需在当日的前后一天时间范围之内
+//    bizContent.put("shopdate", DateUtil.getDateNowYmd());
+//    //实名认证姓名--请填写真实信息
+//    bizContent.put("bank_account_name", param.getUserName());
+//    //银行帐号,支持对公对私
+//    bizContent.put("bank_account_no", param.getCardNo());
+//    //证件号码,目前只支持身份证
+//    bizContent.put("id_card", param.getIdCard());
+//    req.setParamData(bizContent);
 //    String result = null;
-//    try {
-//      logger.info("银行实名认证三要素调用sdk接口addScanMerc请求入参为:"+ JSONObject.toJSONString(mapData));
-//      result = OkHttpUtil.post("https://openapi.ysepay.com/gateway.do", mapData);
-//    } catch (Exception e) {
+//    try{
+//      logger.info("银行实名认证三要素调用sdk接口addScanMerc请求入参为:"+ JSONObject.toJSONString(req));
+//      //根据返回结果处理自己的业务逻辑,result内容详见接口文档
+//      result = BankAuthorityApi.sendBankAuthThreePrecise(req);
+//    }catch (Exception e){
 //      logger.info("银行实名认证三要素失败:"+ e.getMessage());
+//    }
+//    logger.info("银行实名认证三要素result =" + result);
+//
+////    Map<String, String> mapData = new HashMap<>();
+////    mapData.put("partner_id", partnerId);
+////    mapData.put("method", YsPayMethodConstants.BANK_CARD_AUTH_METHOD);
+////    mapData.put("timestamp", DateUtil.getDateNow());
+////    mapData.put("sign_type", "RSA");
+////    mapData.put("charset", "utf-8");
+////    mapData.put("version", "3.0");
+////
+////    JSONObject json = new JSONObject();
+////    String tradeNo = DateUtil.getDateNowYmd() + DateUtil.getRandom(14);
+////    json.put("out_trade_no", tradeNo);
+////    json.put("shopdate", DateUtil.getDateNowYmd());
+////    json.put("bank_account_name", param.getUserName());
+////    json.put("bank_account_no", param.getCardNo());
+////    json.put("id_card", param.getIdCard());
+////    mapData.put("biz_content", json.toString());
+////    //参数签名
+////    try {
+////      String sign = YsOnlineSignUtils.sign(mapData, privateKeyPass, privateKeyPath);
+////      mapData.put("sign", sign);
+////      logger.info("认证信息签名成功,sign = " + sign);
+////    } catch (Exception e) {
+////      System.err.println("签名异常" + e);
+////    }
+////
+////    String result = null;
+////    try {
+////      logger.info("银行实名认证三要素调用sdk接口addScanMerc请求入参为:"+ JSONObject.toJSONString(mapData));
+////      result = OkHttpUtil.post("https://openapi.ysepay.com/gateway.do", mapData);
+////    } catch (Exception e) {
+////      logger.info("银行实名认证三要素失败:"+ e.getMessage());
+////
+////    }
+//
+//    // 解析结果
+////    JSONObject jsonObject = JSON.parseObject(result, Feature.OrderedField);
+////    // 加签内容
+////    String content = JSONObject.toJSONString(
+////        jsonObject.get("ysepay_authenticate_three_key_element_precise_response"),
+////        SerializerFeature.WriteMapNullValue);
+////    JSONObject contentJsonObject = JSON.parseObject(content);
+////
+////    // 校验结果
+////    String orderStatus = (String) contentJsonObject.get("order_status");
+////    if (StringUtils.isBlank(orderStatus) || !"SUCCESS".equals(orderStatus)) {
+////      return AjaxResult.error("绑卡认证失败,请核实信息正确性");
+////    }
 //
+//
+//    // 保存银行认证的请求记录
+//    YsCallLog ysCallLog = new YsCallLog();
+//    ysCallLog.setBizId(tradeNo);
+//    ysCallLog.setBizType(YsCallBizTypeEnum.BANK_CARD_AUTH);
+//    ysCallLog.setInterfaceId(YsPayMethodConstants.BANK_CARD_AUTH_METHOD);
+//    ysCallLog.setReqJson(JSONObject.toJSONString(bizContent));
+//    ysCallLog.setResJson(result);
+//    ysCallLogService.save(ysCallLog);
+//
+//    if (StringUtils.isBlank(result)) {
+//      logger.error("银行实名认证三要素失败,res为空,req =" + JSONObject.toJSONString(bizContent));
+//      return AjaxResult.error("认证失败");
 //    }
-
-    // 解析结果
-//    JSONObject jsonObject = JSON.parseObject(result, Feature.OrderedField);
-//    // 加签内容
-//    String content = JSONObject.toJSONString(
-//        jsonObject.get("ysepay_authenticate_three_key_element_precise_response"),
-//        SerializerFeature.WriteMapNullValue);
-//    JSONObject contentJsonObject = JSON.parseObject(content);
 //
 //    // 校验结果
-//    String orderStatus = (String) contentJsonObject.get("order_status");
+//    JSONObject response = JSONObject.parseObject(result);
+//    String orderStatus = (String) response.get("order_status");
 //    if (StringUtils.isBlank(orderStatus) || !"SUCCESS".equals(orderStatus)) {
 //      return AjaxResult.error("绑卡认证失败,请核实信息正确性");
 //    }
-
-
-    // 保存银行认证的请求记录
-    YsCallLog ysCallLog = new YsCallLog();
-    ysCallLog.setBizId(tradeNo);
-    ysCallLog.setBizType(YsCallBizTypeEnum.BANK_CARD_AUTH);
-    ysCallLog.setInterfaceId(YsPayMethodConstants.BANK_CARD_AUTH_METHOD);
-    ysCallLog.setReqJson(JSONObject.toJSONString(bizContent));
-    ysCallLog.setResJson(result);
-    ysCallLogService.save(ysCallLog);
-
-    if (StringUtils.isBlank(result)) {
-      logger.error("银行实名认证三要素失败,res为空,req =" + JSONObject.toJSONString(bizContent));
-      return AjaxResult.error("认证失败");
-    }
-
-    // 校验结果
-    JSONObject response = JSONObject.parseObject(result);
-    String orderStatus = (String) response.get("order_status");
-    if (StringUtils.isBlank(orderStatus) || !"SUCCESS".equals(orderStatus)) {
-      return AjaxResult.error("绑卡认证失败,请核实信息正确性");
-    }
-
-    // 进行绑卡
-    ChannelBankCard channelBankCard = new ChannelBankCard();
-    channelBankCard.setChannelId(channelId);
-    channelBankCard.setBankName(param.getBankName());
-    channelBankCard.setIdCard(param.getIdCard());
-    channelBankCard.setCardNo(param.getCardNo());
-    channelBankCard.setUserName(param.getUserName());
-    boolean res = channelBankCardService.save(channelBankCard);
-    if (!res) {
-      return AjaxResult.error("绑卡失败");
-    }
-    return AjaxResult.success();
-  }
+//
+//    // 进行绑卡
+//    ChannelBankCard channelBankCard = new ChannelBankCard();
+//    channelBankCard.setChannelId(channelId);
+//    channelBankCard.setBankName(param.getBankName());
+////    channelBankCard.setIdCard(param.getIdCard());
+//    channelBankCard.setCardNo(param.getCardNo());
+//    channelBankCard.setUserName(param.getUserName());
+//    boolean res = channelBankCardService.save(channelBankCard);
+//    if (!res) {
+//      return AjaxResult.error("绑卡失败");
+//    }
+//    return AjaxResult.success();
+//  }
 
 
   /**
@@ -265,13 +263,11 @@ public class ChannelWithdrawController extends BaseApiController {
     if (param.getMoney() > channel.getMoney() ) {
       return AjaxResult.error("提现金额超出了余额");
     }
-    if (param.getMoney() < 500) {
-      return AjaxResult.error("提现金额不能小于5元");
-    }
-    // 固定1元手续费
-    int fixedFee = 100;
+//    if (param.getMoney() < 500) {
+//      return AjaxResult.error("提现金额不能小于5元");
+//    }
     int feeAmt = new BigDecimal(param.getMoney()).multiply(feeRate)
-        .divide(new BigDecimal(100), 0, RoundingMode.HALF_UP).intValue() + fixedFee;
+        .divide(new BigDecimal(100), 0, RoundingMode.HALF_UP).intValue();
     ChannelWithdraw channelWithdraw = new ChannelWithdraw();
     if (param.getMoney() + feeAmt > channel.getMoney()) {
       channelWithdraw.setMoney(new BigDecimal(channel.getMoney()).divide(new BigDecimal(1).add(feeRate.divide(new BigDecimal(100), 4, RoundingMode.HALF_UP)), 0, RoundingMode.HALF_UP).intValue());
@@ -283,7 +279,7 @@ public class ChannelWithdrawController extends BaseApiController {
     channelWithdraw.setUserName(param.getUserName());
     channelWithdraw.setCardNo(param.getCardNo());
     channelWithdraw.setBankName(param.getBankName());
-//    channelWithdraw.setBranchName(param.getBranchName());
+    channelWithdraw.setBranchName(param.getBranchName());
 
     // 缓存订单结算对象
     redisCache.setCacheObject(CHANNEL_WITHDRAW_CACHE_KEY + channelId, channelWithdraw, 1, TimeUnit.MINUTES);

+ 7 - 7
mp-service/src/main/java/com/qs/mp/channel/domain/ChannelBankCard.java

@@ -41,9 +41,9 @@ public class ChannelBankCard implements Serializable {
   @TableField("user_name")
   private String userName;
 
-  @ApiModelProperty("身份证号")
-  @TableField("id_card")
-  private String idCard;
+//  @ApiModelProperty("身份证号")
+//  @TableField("id_card")
+//  private String idCard;
 
   /**
    * 卡号
@@ -94,10 +94,10 @@ public class ChannelBankCard implements Serializable {
   @TableField("update_time")
   private Date updateTime;
 
-  @ApiModelProperty("逻辑删除")
-  @TableLogic
-  @TableField("is_deleted")
-  private Integer isDeleted;
+//  @ApiModelProperty("逻辑删除")
+//  @TableLogic
+//  @TableField("is_deleted")
+//  private Integer isDeleted;
 
 
 }

+ 3 - 3
mp-service/src/main/java/com/qs/mp/channel/domain/ChannelWithdraw.java

@@ -38,9 +38,9 @@ public class ChannelWithdraw implements Serializable {
   @TableField("channel_id")
   private Long channelId;
 
-  @ApiModelProperty("提现交易单号")
-  @TableField("trade_no")
-  private String tradeNo;
+//  @ApiModelProperty("提现交易单号")
+//  @TableField("trade_no")
+//  private String tradeNo;
 
   /**
    * 提现金额

+ 22 - 18
mp-service/src/main/java/com/qs/mp/channel/service/impl/ChannelWithdrawServiceImpl.java

@@ -95,22 +95,22 @@ public class ChannelWithdrawServiceImpl extends ServiceImpl<ChannelWithdrawMappe
     ChannelBankCard bankCard = channelBankCardService.getOne(new LambdaQueryWrapper<ChannelBankCard>()
         .eq(ChannelBankCard::getChannelId, channel.getChannelId()));
     if (null == bankCard) {
-      throw new RuntimeException("请先绑定银行卡");
-    }
-//      bankCard = new ChannelBankCard();
-//      bankCard.setChannelId(channel.getChannelId());
-//      bankCard.setCardNo(channelWithdraw.getCardNo());
-//      bankCard.setBankName(channelWithdraw.getBankName());
-//      bankCard.setBranchName(channelWithdraw.getBranchName());
-//      bankCard.setUserName(channelWithdraw.getUserName());
-//      channelBankCardService.save(bankCard);
-//    } else {
-//      bankCard.setCardNo(channelWithdraw.getCardNo());
-//      bankCard.setBankName(channelWithdraw.getBankName());
-//      bankCard.setBranchName(channelWithdraw.getBranchName());
-//      bankCard.setUserName(channelWithdraw.getUserName());
-//      channelBankCardService.updateById(bankCard);
+//      throw new RuntimeException("请先绑定银行卡");
 //    }
+      bankCard = new ChannelBankCard();
+      bankCard.setChannelId(channel.getChannelId());
+      bankCard.setCardNo(channelWithdraw.getCardNo());
+      bankCard.setBankName(channelWithdraw.getBankName());
+      bankCard.setBranchName(channelWithdraw.getBranchName());
+      bankCard.setUserName(channelWithdraw.getUserName());
+      channelBankCardService.save(bankCard);
+    } else {
+      bankCard.setCardNo(channelWithdraw.getCardNo());
+      bankCard.setBankName(channelWithdraw.getBankName());
+      bankCard.setBranchName(channelWithdraw.getBranchName());
+      bankCard.setUserName(channelWithdraw.getUserName());
+      channelBankCardService.updateById(bankCard);
+    }
     boolean rst = save(channelWithdraw);
 
     ChannelMoneyLog moneyLog = new ChannelMoneyLog();
@@ -154,7 +154,7 @@ public class ChannelWithdrawServiceImpl extends ServiceImpl<ChannelWithdrawMappe
           .set(ChannelWithdraw::getStatus, status)
           .set(ChannelWithdraw::getTransferTime, new Date())
           .eq(ChannelWithdraw::getId, withdraw.getId())
-          .eq(ChannelWithdraw::getStatus, ChannelWithdrawStatusEnum.WITHDRAW_PROCESS));
+          .eq(ChannelWithdraw::getStatus, ChannelWithdrawStatusEnum.WITHDRAWING));
       Assert.isTrue(rtn, "提现申请审核通过,更新提现申请状态失败。id:" + withdraw.getId());
 
       // 更新冻结金额
@@ -167,7 +167,10 @@ public class ChannelWithdrawServiceImpl extends ServiceImpl<ChannelWithdrawMappe
           .eq(Channel::getChannelId, withdraw.getChannelId())
           .eq(Channel::getFrozenMoney, channel.getFrozenMoney()));
       Assert.isTrue(updateRtn, "提现申请审核通过,更新账号冻结金额。channelId:" + channel.getChannelId());
-    } else if (status == ChannelWithdrawStatusEnum.WITHDRAW_PROCESS) {
+    }
+    // 银盛提现接口调用
+    /*
+    else if (status == ChannelWithdrawStatusEnum.WITHDRAW_PROCESS) {
       String tradeNo = DateUtil.getDateNowYmd() + DateUtil.getRandom(14);;
 
       // 更新状态为提现处理中
@@ -230,8 +233,9 @@ public class ChannelWithdrawServiceImpl extends ServiceImpl<ChannelWithdrawMappe
       ysCallLog.setInterfaceId(YsPayMethodConstants.GENERAL_ACCOUNT_WITHDRAW_METHOD);
       ysCallLog.setReqJson(JSONObject.toJSONString(bizContent));
       ysCallLogService.save(ysCallLog);
+      */
 
-    } else if (status == ChannelWithdrawStatusEnum.FAILED) {
+     else if (status == ChannelWithdrawStatusEnum.FAILED) {
       boolean rtn = update(new LambdaUpdateWrapper<ChannelWithdraw>()
           .set(ChannelWithdraw::getStatus, status)
           .set(ChannelWithdraw::getVerifyContent, verifyContent)

+ 2 - 2
mp-service/src/main/java/com/qs/mp/pay/service/impl/WalletServiceImpl.java

@@ -466,7 +466,7 @@ public class WalletServiceImpl implements IWalletService {
   @Override
   @Transactional(rollbackFor = Exception.class)
   public boolean withdrawal(String bizId) {
-    ChannelWithdraw channelWithdraw = channelWithdrawService.getById(bizId);
+    /*ChannelWithdraw channelWithdraw = channelWithdrawService.getById(bizId);
 
     if (!ChannelWithdrawStatusEnum.WITHDRAWING.equals(channelWithdraw.getStatus())) {
         throw new ServiceException("提现状态不正确");
@@ -539,7 +539,7 @@ public class WalletServiceImpl implements IWalletService {
         (!"TRADE_ACCEPT_SUCCESS".equals(tradeStatus) || !"TRADE_SUCCESS".equals(tradeStatus))) {
       logger.error("提现交易处理失败,result = " + result);
         throw new ServiceException("提现交易处理失败");
-    }
+    }*/
     return true;
   }