From f2d275055b8e2e3f5972f9531b50b164a81ec1b4 Mon Sep 17 00:00:00 2001 From: GYJ <1157756119@qq.com> Date: Mon, 6 Jan 2025 14:51:46 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=9F=A5=E8=AF=A2=E5=9B=9E?= =?UTF-8?q?=E8=B0=83=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DiscSpinningServiceImpl.java | 3 +- .../com/sqx/modules/job/task/CashOutTask.java | 3 +- .../sqx/modules/job/task/CashOutTask2.java | 3 +- .../sqx/modules/job/task/TempCashOutTask.java | 2 +- .../sqx/modules/job/task/TempOrdersTask.java | 2 +- .../pay/controller/app/WuyouController.java | 46 +++++++++++++++++-- .../pay/service/impl/CashOutServiceImpl.java | 29 +++++++----- .../com/sqx/modules/pay/wuyou/WuyouPay.java | 20 ++++---- 8 files changed, 76 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/sqx/modules/discSpinning/service/impl/DiscSpinningServiceImpl.java b/src/main/java/com/sqx/modules/discSpinning/service/impl/DiscSpinningServiceImpl.java index 7b96f023..9a776de2 100644 --- a/src/main/java/com/sqx/modules/discSpinning/service/impl/DiscSpinningServiceImpl.java +++ b/src/main/java/com/sqx/modules/discSpinning/service/impl/DiscSpinningServiceImpl.java @@ -127,6 +127,7 @@ public class DiscSpinningServiceImpl extends ServiceImpl cashOuts = cashOutDao.selectTemp(); for (CashOut cashOut : cashOuts) { - BaseResp baseResp = wuyouPay.queryExtractOrder(cashOut.getOrderNumber(), cashOut.getMoney()); + BaseResp baseResp = wuyouPay.queryExtractOrder(cashOut.getOrderNumber(), cashOut.getUserId(), cashOut.getUserType() != 2, cashOut.getMoney()); logger.info("baseResp:{} ", JSONUtil.toJsonStr(baseResp)); if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))){ logger.info("success:{} ", cashOut.getOrderNumber()); diff --git a/src/main/java/com/sqx/modules/job/task/TempOrdersTask.java b/src/main/java/com/sqx/modules/job/task/TempOrdersTask.java index 0598e463..a39781e4 100644 --- a/src/main/java/com/sqx/modules/job/task/TempOrdersTask.java +++ b/src/main/java/com/sqx/modules/job/task/TempOrdersTask.java @@ -118,7 +118,7 @@ public class TempOrdersTask { Orders orders = ordersDao.selectOne(new LambdaQueryWrapper() .eq(Orders::getOrdersNo, details.getOrderId())); - BaseResp baseResp = wuyouPay.queryOrder(details.getTradeNo(), details.getMoney().toString(), "Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1 Edg/131.0.0.0"); + BaseResp baseResp = wuyouPay.queryOrder(details.getTradeNo(), details.getUserId(), details.getMoney().toString(), "Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1 Edg/131.0.0.0"); logger.info("baseResp:{} ", JSONUtil.toJsonStr(baseResp)); if (baseResp.getCode() == null || baseResp.getCode() != 200) { logger.info("code错误跳过"); diff --git a/src/main/java/com/sqx/modules/pay/controller/app/WuyouController.java b/src/main/java/com/sqx/modules/pay/controller/app/WuyouController.java index 24853388..5c0b0c41 100644 --- a/src/main/java/com/sqx/modules/pay/controller/app/WuyouController.java +++ b/src/main/java/com/sqx/modules/pay/controller/app/WuyouController.java @@ -124,7 +124,7 @@ public class WuyouController { return Result.success().put("data", data); } - BaseResp baseResp = wuyouPay.payOrder(payDetails.getTradeNo(), order.getPayMoney().toString(), + BaseResp baseResp = wuyouPay.payOrder(payDetails.getTradeNo(), order.getUserId(), order.getPayMoney().toString(), request.getHeader("User-Agent"), String.format("%d-%d", order.getCourseId(), order.getCourseDetailsId()), payType); if (baseResp.getCode() == null) { @@ -154,7 +154,7 @@ public class WuyouController { return Result.success().put("data", 1); } - BaseResp baseResp = wuyouPay.queryOrder(payDetails.getTradeNo(), order.getPayMoney().toString(), request.getHeader("User-Agent")); + BaseResp baseResp = wuyouPay.queryOrder(payDetails.getTradeNo(), order.getUserId(), order.getPayMoney().toString(), request.getHeader("User-Agent")); if (baseResp.getCode() == null || baseResp.getCode() != 200) { return Result.success().put("data", 0); } @@ -205,10 +205,24 @@ public class WuyouController { log.info("无忧支付回调成功, 参数: {}", JSONObject.toJSONString(notifyDto)); + String orderNo = notifyDto.getOut_trade_no(); + long userId = 0L; + String[] split = orderNo.split("-"); + if (split.length != 2) { + log.error("无忧支付回调订单号错误, 参数: {}", JSONObject.toJSONString(notifyDto)); + return "success"; + } + orderNo = split[0]; + userId = Long.parseLong(split[1]); + DateTime offsetMinute = DateUtil.offsetMinute(new Date(), -30); String format = DateUtil.format(offsetMinute, "yyyy-MM-dd HH:mm:ss"); - List details = payDetailsDao.selectList(new LambdaQueryWrapper() - .eq(PayDetails::getTradeNo, notifyDto.getOut_trade_no()).ge(PayDetails::getCreateTime, format)); + LambdaQueryWrapper detailsLambdaQueryWrapper = new LambdaQueryWrapper() + .eq(PayDetails::getTradeNo, orderNo).ge(PayDetails::getCreateTime, format); + if (userId != 0) { + detailsLambdaQueryWrapper.eq(PayDetails::getUserId, userId); + } + List details = payDetailsDao.selectList(detailsLambdaQueryWrapper); if (details.isEmpty()) { log.error("无忧支付回调订单不存在, 参数: {}", JSONObject.toJSONString(notifyDto)); return "success"; @@ -265,7 +279,29 @@ public class WuyouController { log.error("无忧支付提现回调签名错误, 参数: {},签名结果:{}", JSONObject.toJSONString(notifyDto), sign); // return "签名错误"; } - CashOut cashOut = cashOutDao.selectOne(new QueryWrapper().eq("order_number", notifyDto.getOut_trade_no())); + + String orderNo = notifyDto.getOut_trade_no(); + long userId = 0L; + String[] split = orderNo.split("-"); + if (split.length != 2) { + log.error("无忧支付回调订单号错误, 参数: {}", JSONObject.toJSONString(notifyDto)); + return; + } + orderNo = split[0]; + String sub = split[1]; + String[] split1 = sub.split(":"); + if (split1.length != 2) { + log.error("无忧支付回调订单号错误, 参数: {}", JSONObject.toJSONString(notifyDto)); + return; + } + userId = Long.parseLong(split1[0]); + + QueryWrapper orderNumber = new QueryWrapper().eq("order_number", orderNo); + if (userId != 0) { + orderNumber.eq("user_id", userId); + } + + CashOut cashOut = cashOutDao.selectOne(orderNumber); if (cashOut != null) { if ("2".equals(notifyDto.getStatus())) { cashOut.setState(1); diff --git a/src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java b/src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java index 257fbe31..7e39f7d4 100644 --- a/src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java +++ b/src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java @@ -535,11 +535,13 @@ public class CashOutServiceImpl extends ServiceImpl impleme CashOut cashOut = new CashOut(); cashOut.setIsOut(false); cashOut.setMoney(money.toString()); + cashOut.setUserId(userId); if (isSys) { - cashOut.setSysUserId(userId); + cashOut.setUserType(2); } else { - cashOut.setUserId(userId); + cashOut.setUserType(1); } + cashOut.setZhifubao(alipayAccount); cashOut.setZhifubaoName(alipayName); @@ -571,7 +573,7 @@ public class CashOutServiceImpl extends ServiceImpl impleme } if (wuyouPay.checkCanCash(userId, WithdrawTypeEnum.MANUAL, new BigDecimal(money.toString()))) { cashOut.setStatus(4); - BaseResp baseResp = wuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName()); + BaseResp baseResp = wuyouPay.extractOrder(outOrderNo, cashOut.getUserId(), false, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName()); if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))) { sysUserMoneyDetails.setContent("成功提现:" + money); cashOut.setState(1); @@ -607,7 +609,7 @@ public class CashOutServiceImpl extends ServiceImpl impleme } if (wuyouPay.checkCanCash(userId, WithdrawTypeEnum.MANUAL, new BigDecimal(money.toString()))) { cashOut.setStatus(4); - BaseResp baseResp = wuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName()); + BaseResp baseResp = wuyouPay.extractOrder(outOrderNo, cashOut.getUserId(), true, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName()); if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))) { userMoneyDetails.setContent("成功提现:" + money); cashOut.setState(1); @@ -705,18 +707,21 @@ public class CashOutServiceImpl extends ServiceImpl impleme entity.setRefund(cashOut.getRefund()); } - boolean isSysUser = entity.getSysUserId() != null; + boolean isUser = true; + if (entity.getUserType() == 2) { + isUser = false; + } - if (isSysUser) { - SysUserEntity sysUserEntity = sysUserService.getById(entity.getSysUserId()); - if (sysUserEntity == null) { - throw new SqxException("提现代理信息不存在!"); - } - } else { + if (isUser) { UserEntity userEntity = userService.selectUserById(entity.getUserId()); if (userEntity == null) { throw new SqxException("提现用户信息不存在!"); } + } else { + SysUserEntity sysUserEntity = sysUserService.getById(entity.getSysUserId()); + if (sysUserEntity == null) { + throw new SqxException("提现代理信息不存在!"); + } } if (isAgree == 0) { @@ -730,7 +735,7 @@ public class CashOutServiceImpl extends ServiceImpl impleme entity.setOrderNumber(outOrderNo); } // 执行提现操作 - BaseResp baseResp = wuyouPay.extractOrderForAudit(entity.getOrderNumber(), entity.getMoney(), entity.getZhifubao(), entity.getZhifubaoName()); + BaseResp baseResp = wuyouPay.extractOrderForAudit(entity.getOrderNumber(), entity.getUserId(), isUser, entity.getMoney(), entity.getZhifubao(), entity.getZhifubaoName()); if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))) { entity.setState(1); } else if (StringUtils.isNotBlank(baseResp.getErrorMsg())) { diff --git a/src/main/java/com/sqx/modules/pay/wuyou/WuyouPay.java b/src/main/java/com/sqx/modules/pay/wuyou/WuyouPay.java index 355beafc..d6eca136 100644 --- a/src/main/java/com/sqx/modules/pay/wuyou/WuyouPay.java +++ b/src/main/java/com/sqx/modules/pay/wuyou/WuyouPay.java @@ -41,7 +41,7 @@ public class WuyouPay { this.commonInfoService = commonInfoService; } - public BaseResp payOrder(String orderNo, String amount, String userAgent, String allId, String payType) { + public BaseResp payOrder(String orderNo, Long userId, String amount, String userAgent, String allId, String payType) { String payConfig = commonInfoService.findOne(926).getValue(); if (!"1".equals(payConfig)) { BaseResp baseResp = new BaseResp(); @@ -51,7 +51,7 @@ public class WuyouPay { Map params = getBaseParams(); params.put("type", "6001"); params.put("is_code", "1"); - params.put("out_trade_no", orderNo); + params.put("out_trade_no", String.format("%s-%s", orderNo, userId)); params.put("total", amount); params.put("notify_url", notifyUrl); @@ -68,9 +68,9 @@ public class WuyouPay { return JSONObject.parseObject(body, BaseResp.class); } - public BaseResp queryOrder(String orderNo, String amount, String userAgent) { + public BaseResp queryOrder(String orderNo, Long userId, String amount, String userAgent) { Map params = getBaseParams(); - params.put("out_trade_no", orderNo); + params.put("out_trade_no", String.format("%s-%s", orderNo, userId)); params.put("total", amount); String sign = Encrypt.getParamsSign(params); @@ -116,7 +116,7 @@ public class WuyouPay { * @param account 支付宝账号 * @param userName 支付宝名称 */ - public BaseResp extractOrder(String outOrderNo, String amount, String account, String userName) { + public BaseResp extractOrder(String outOrderNo, Long userId, boolean isUser, String amount, String account, String userName) { String payConfig = commonInfoService.findOne(927).getValue(); if (!"1".equals(payConfig)) { BaseResp baseResp = new BaseResp(); @@ -125,7 +125,7 @@ public class WuyouPay { } Map params = getBaseParams(); - params.put("out_trade_no", outOrderNo); + params.put("out_trade_no", String.format("%s-%s:%s", outOrderNo, userId, isUser ? "us" : "dl")); params.put("total", amount); params.put("bank_card", account); params.put("bank_account_name", userName); @@ -151,10 +151,10 @@ public class WuyouPay { * @param account 支付宝账号 * @param userName 支付宝名称 */ - public BaseResp extractOrderForAudit(String outOrderNo, String amount, String account, String userName) { + public BaseResp extractOrderForAudit(String outOrderNo, Long userId, boolean isUser, String amount, String account, String userName) { Map params = getBaseParams(); - params.put("out_trade_no", outOrderNo); + params.put("out_trade_no", String.format("%s-%s:%s", outOrderNo, userId, isUser ? "us" : "dl")); params.put("total", amount); params.put("bank_card", account); params.put("bank_account_name", userName); @@ -174,9 +174,9 @@ public class WuyouPay { return JSONObject.parseObject(body, BaseResp.class); } - public BaseResp queryExtractOrder(String outOrderNo, String amount) { + public BaseResp queryExtractOrder(String outOrderNo, Long userId, boolean isUser, String amount) { Map params = getBaseParams(); - params.put("out_trade_no", outOrderNo); + params.put("out_trade_no", String.format("%s-%s:%s", outOrderNo, userId, isUser ? "us" : "dl")); params.put("total", amount); String sign = Encrypt.getParamsSign(params);