From f69463ba6fd8b6672fe58aaaa811a5bc7e5ae8c0 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期二, 19 八月 2025 09:00:29 +0800 Subject: [PATCH] bug修改 --- ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java | 97 ++++++++++++++++++++++++++---------------------- 1 files changed, 53 insertions(+), 44 deletions(-) diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java index e98cf90..d9e25c6 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java @@ -1,14 +1,12 @@ package com.ruoyi.other.controller; -import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.account.api.feignClient.AppUserClient; -import com.ruoyi.account.api.model.AppUser; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; @@ -21,12 +19,12 @@ import com.ruoyi.other.service.ShopBalanceStatementService; import com.ruoyi.other.service.ShopService; import com.ruoyi.other.service.ShopWithdrawService; -import com.ruoyi.other.util.payment.TransferUtil; -import com.ruoyi.other.util.payment.model.AccountBalanceQueryResult; -import com.ruoyi.other.util.payment.model.SinglePay; -import com.ruoyi.other.util.payment.model.SinglePayCallbackResult; -import com.ruoyi.other.util.payment.model.SinglePayResult; +import com.ruoyi.other.util.BankCode; +import com.ruoyi.other.util.withdraw.HttpUtilWithdraw; +import com.ruoyi.other.util.pay.HttpRequester; +import com.ruoyi.other.util.pay.HttpRespons; import com.ruoyi.other.util.payment.wx.WechatPayService; +import com.ruoyi.other.util.withdraw.WithdrawCallBackDTO; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.model.LoginUser; @@ -42,10 +40,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; /** @@ -265,7 +260,7 @@ */ @PostMapping("/audit") @ApiOperation("提现审核") - public R<Void> audit(@RequestBody ShopWithdraw shopWithdraw) { + public R<Void> audit(@RequestBody ShopWithdraw shopWithdraw) throws IOException { LoginUser loginUser = tokenService.getLoginUser(); ShopWithdraw shopWithdraw1 = shopWithdrawService.getById(shopWithdraw.getId()); @@ -275,21 +270,25 @@ Shop shop = shopService.getById(shopWithdraw1.getShopId()); BigDecimal money = shopWithdraw1.getMoney(); if(1 == shopWithdraw.getAuditStatus()){ - //取消商户转账,线下转账 - /* - try { - Map<String, String> map = wechatPayService.payToBankCard(shopWithdraw1.getId().toString(), - shopWithdraw1.getReceiverAccountNoEnc(),shopWithdraw1.getReceiverNameEnc(),shopWithdraw1.getReceiverBankChannelNo(),shopWithdraw1.getMoney(),shopWithdraw.getRemark()); - if (map.get("return_code").equals("SUCCESS")) { - System.out.println("转账申请成功"); - shopWithdraw1.setStatus(1); - }else { - return R.fail("转账申请失败"); - } - } catch (Exception e) { - throw new RuntimeException(e); - }*/ - //到账 + // 打款 + String url = "https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&" + + "cardNo="+shopWithdraw1.getReceiverAccountNoEnc()+"&cardBinCheck=true"; + HashMap<String, String> hashMap = new HashMap<>(); + HttpRequester hr = new HttpRequester(); + HttpRespons HP = hr.sendPost(url, hashMap); + System.out.println("接收返回参数:" + HP.getContent()); + com.alibaba.fastjson.JSONObject resPay = com.alibaba.fastjson.JSONObject.parseObject(HP.getContent()); + System.err.println(resPay); + if (resPay.getString("validated")==null){ + System.err.println("不合法的银行卡号"); + } + String bankCode = resPay.getString("bank"); + String bankName = BankCode.getBankNameByCode(bankCode); // 返回ABC枚举实例 + System.err.println(bankName); + String withdraw = HttpUtilWithdraw.withdraw(shopWithdraw1, bankName); + if (!withdraw.equals("success")){ + return R.fail("打款失败,原因:"+withdraw); + } shopWithdraw1.setStatus(2); shopWithdraw1.setArrivalTime(LocalDateTime.now()); @@ -334,21 +333,34 @@ } + /** * 提现审核通过后转账回调通知 * @param singlePayCallbackResult */ @ResponseBody @PostMapping("/withdrawalCallback") - public Object withdrawalCallback(@RequestBody SinglePayCallbackResult singlePayCallbackResult){ + public Object withdrawalCallback(@RequestBody WithdrawCallBackDTO singlePayCallbackResult){ + String sign = singlePayCallbackResult.getSign(); + String orderCode = singlePayCallbackResult.getOrderCode(); + String tradeNo = singlePayCallbackResult.getTradeNo(); + BigDecimal money = singlePayCallbackResult.getMoney(); Integer status = singlePayCallbackResult.getStatus(); - String merchantOrderNo = singlePayCallbackResult.getMerchantOrderNo(); - ShopWithdraw shopWithdraw = shopWithdrawService.getById(merchantOrderNo); - if(203 == status || 205 == status){ + LocalDateTime time = singlePayCallbackResult.getTime(); + String message = singlePayCallbackResult.getMessage(); + ShopWithdraw shopWithdraw = shopWithdrawService.lambdaQuery().eq(ShopWithdraw::getCode, orderCode).one(); + if (shopWithdraw == null){ + return R.ok(); + } + if (shopWithdraw.getStatus()==2 || 3 == shopWithdraw.getStatus()){ + return R.ok(); + } + if(1 == status && Objects.equals(money, shopWithdraw.getMoney())){ //到账 if(1 == shopWithdraw.getStatus()){ shopWithdraw.setStatus(2); shopWithdraw.setArrivalTime(LocalDateTime.now()); + shopWithdraw.setOrderNumber(tradeNo); shopWithdrawService.updateById(shopWithdraw); } //更新店铺审核中的金额,和提现金额 @@ -357,27 +369,25 @@ shop.setWithdrawMoney(shop.getWithdrawMoney().add(shopWithdraw.getMoney()));//提现金额 shopService.updateById(shop); - JSONObject jsonObject = new JSONObject(); - jsonObject.put("statusCode", 2001); - return jsonObject; - }else{ + return R.ok(); + }else if (4 == status){ //回退金额和添加变动明细 - BigDecimal money = shopWithdraw.getMoney().setScale(2, RoundingMode.HALF_EVEN); + BigDecimal withdrawMoney = shopWithdraw.getMoney().setScale(2, RoundingMode.HALF_EVEN); Shop shop = shopService.getById(shopWithdraw.getShopId()); BigDecimal balance = shop.getBalance(); BigDecimal canWithdrawMoney = shop.getCanWithdrawMoney(); BigDecimal withdrawAuditMoney = shop.getWithdrawAuditMoney(); - shop.setBalance(balance.add(money).setScale(2, RoundingMode.HALF_EVEN)); - shop.setCanWithdrawMoney(canWithdrawMoney.add(money).setScale(2, RoundingMode.HALF_EVEN)); + shop.setBalance(balance.add(withdrawMoney).setScale(2, RoundingMode.HALF_EVEN)); + shop.setCanWithdrawMoney(canWithdrawMoney.add(withdrawMoney).setScale(2, RoundingMode.HALF_EVEN)); //审核中的金额减少 - shop.setWithdrawAuditMoney(withdrawAuditMoney.subtract(money).setScale(2, RoundingMode.HALF_EVEN)); + shop.setWithdrawAuditMoney(withdrawAuditMoney.subtract(withdrawMoney).setScale(2, RoundingMode.HALF_EVEN)); shopService.updateById(shop); //添加门店变动明细 ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement(); shopBalanceStatement.setShopId(shop.getId()); shopBalanceStatement.setType(7); shopBalanceStatement.setHistoricalBalance(balance); - shopBalanceStatement.setVariableAmount(money); + shopBalanceStatement.setVariableAmount(withdrawMoney); shopBalanceStatement.setBalance(shop.getBalance()); shopBalanceStatement.setCreateUserId(shopWithdraw.getAuditUserId()); shopBalanceStatement.setCreateTime(LocalDateTime.now()); @@ -386,13 +396,12 @@ shopWithdraw.setStatus(3); - shopWithdraw.setRemark(singlePayCallbackResult.getErrorCodeDesc()); + shopWithdraw.setRemark(singlePayCallbackResult.getMessage()); shopWithdrawService.updateById(shopWithdraw); - JSONObject jsonObject = new JSONObject(); - jsonObject.put("statusCode", 2001); - return jsonObject; + return R.ok(); } + return R.ok(); } } -- Gitblit v1.7.1