订单查询回调优化

This commit is contained in:
GYJ
2025-01-06 14:51:46 +08:00
parent 07aa1e07cf
commit f2d275055b
8 changed files with 76 additions and 32 deletions

View File

@@ -127,6 +127,7 @@ public class DiscSpinningServiceImpl extends ServiceImpl<DiscSpinningDao, DiscSp
cashOut.setRate(0.00); cashOut.setRate(0.00);
cashOut.setUserType(1); cashOut.setUserType(1);
cashOut.setCreateAt(DateUtil.now()); cashOut.setCreateAt(DateUtil.now());
cashOut.setUserType(1);
cashOut.setWithdrawType(WithdrawTypeEnum.RED_ENVELOPE.getValue()); cashOut.setWithdrawType(WithdrawTypeEnum.RED_ENVELOPE.getValue());
//最高提现金额 //最高提现金额
@@ -136,7 +137,7 @@ public class DiscSpinningServiceImpl extends ServiceImpl<DiscSpinningDao, DiscSp
cashOut.setStatus(4); cashOut.setStatus(4);
String outOrderNo = AliPayOrderUtil.createOrderId(); String outOrderNo = AliPayOrderUtil.createOrderId();
cashOut.setOrderNumber(outOrderNo); cashOut.setOrderNumber(outOrderNo);
BaseResp baseResp = wuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName()); BaseResp baseResp = wuyouPay.extractOrder(outOrderNo, userInfo.getUserId(), true, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName());
if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))) { if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))) {
UserMoneyDetails userMoneyDetails = new UserMoneyDetails( UserMoneyDetails userMoneyDetails = new UserMoneyDetails(
userInfo.getUserId(), null, null, title, 4, 2, 1, userInfo.getUserId(), null, null, title, 4, 2, 1,

View File

@@ -41,7 +41,8 @@ public class CashOutTask{
String outOrderNo = AliPayOrderUtil.createOrderId(); String outOrderNo = AliPayOrderUtil.createOrderId();
cashOut.setOrderNumber(outOrderNo); cashOut.setOrderNumber(outOrderNo);
BaseResp baseResp = wuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName()); boolean isUser = cashOut.getUserType() != 2;
BaseResp baseResp = wuyouPay.extractOrder(outOrderNo, cashOut.getUserId(), isUser, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName());
if (baseResp.getStatus() != null && baseResp.getStatus().equals(2)) { if (baseResp.getStatus() != null && baseResp.getStatus().equals(2)) {
cashOut.setState(1); cashOut.setState(1);
} else { } else {

View File

@@ -53,7 +53,8 @@ public class CashOutTask2{
cashOut.setState(4); cashOut.setState(4);
String outOrderNo = AliPayOrderUtil.createOrderId(); String outOrderNo = AliPayOrderUtil.createOrderId();
cashOut.setOrderNumber(outOrderNo); cashOut.setOrderNumber(outOrderNo);
BaseResp baseResp = wuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName()); boolean isUser = cashOut.getUserType() != 2;
BaseResp baseResp = wuyouPay.extractOrder(outOrderNo, cashOut.getUserId(), isUser, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName());
if (baseResp.getStatus() != null && baseResp.getStatus().equals(2)) { if (baseResp.getStatus() != null && baseResp.getStatus().equals(2)) {
cashOut.setState(1); cashOut.setState(1);
} else { } else {

View File

@@ -27,7 +27,7 @@ public class TempCashOutTask{
logger.info("提现开始"); logger.info("提现开始");
List<CashOut> cashOuts = cashOutDao.selectTemp(); List<CashOut> cashOuts = cashOutDao.selectTemp();
for (CashOut cashOut : cashOuts) { 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)); logger.info("baseResp{} ", JSONUtil.toJsonStr(baseResp));
if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))){ if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))){
logger.info("success{} ", cashOut.getOrderNumber()); logger.info("success{} ", cashOut.getOrderNumber());

View File

@@ -118,7 +118,7 @@ public class TempOrdersTask {
Orders orders = ordersDao.selectOne(new LambdaQueryWrapper<Orders>() Orders orders = ordersDao.selectOne(new LambdaQueryWrapper<Orders>()
.eq(Orders::getOrdersNo, details.getOrderId())); .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)); logger.info("baseResp{} ", JSONUtil.toJsonStr(baseResp));
if (baseResp.getCode() == null || baseResp.getCode() != 200) { if (baseResp.getCode() == null || baseResp.getCode() != 200) {
logger.info("code错误跳过"); logger.info("code错误跳过");

View File

@@ -124,7 +124,7 @@ public class WuyouController {
return Result.success().put("data", data); 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()), request.getHeader("User-Agent"), String.format("%d-%d", order.getCourseId(), order.getCourseDetailsId()),
payType); payType);
if (baseResp.getCode() == null) { if (baseResp.getCode() == null) {
@@ -154,7 +154,7 @@ public class WuyouController {
return Result.success().put("data", 1); 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) { if (baseResp.getCode() == null || baseResp.getCode() != 200) {
return Result.success().put("data", 0); return Result.success().put("data", 0);
} }
@@ -205,10 +205,24 @@ public class WuyouController {
log.info("无忧支付回调成功, 参数: {}", JSONObject.toJSONString(notifyDto)); 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); DateTime offsetMinute = DateUtil.offsetMinute(new Date(), -30);
String format = DateUtil.format(offsetMinute, "yyyy-MM-dd HH:mm:ss"); String format = DateUtil.format(offsetMinute, "yyyy-MM-dd HH:mm:ss");
List<PayDetails> details = payDetailsDao.selectList(new LambdaQueryWrapper<PayDetails>() LambdaQueryWrapper<PayDetails> detailsLambdaQueryWrapper = new LambdaQueryWrapper<PayDetails>()
.eq(PayDetails::getTradeNo, notifyDto.getOut_trade_no()).ge(PayDetails::getCreateTime, format)); .eq(PayDetails::getTradeNo, orderNo).ge(PayDetails::getCreateTime, format);
if (userId != 0) {
detailsLambdaQueryWrapper.eq(PayDetails::getUserId, userId);
}
List<PayDetails> details = payDetailsDao.selectList(detailsLambdaQueryWrapper);
if (details.isEmpty()) { if (details.isEmpty()) {
log.error("无忧支付回调订单不存在, 参数: {}", JSONObject.toJSONString(notifyDto)); log.error("无忧支付回调订单不存在, 参数: {}", JSONObject.toJSONString(notifyDto));
return "success"; return "success";
@@ -265,7 +279,29 @@ public class WuyouController {
log.error("无忧支付提现回调签名错误, 参数: {},签名结果:{}", JSONObject.toJSONString(notifyDto), sign); log.error("无忧支付提现回调签名错误, 参数: {},签名结果:{}", JSONObject.toJSONString(notifyDto), sign);
// return "签名错误"; // return "签名错误";
} }
CashOut cashOut = cashOutDao.selectOne(new QueryWrapper<CashOut>().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<CashOut> orderNumber = new QueryWrapper<CashOut>().eq("order_number", orderNo);
if (userId != 0) {
orderNumber.eq("user_id", userId);
}
CashOut cashOut = cashOutDao.selectOne(orderNumber);
if (cashOut != null) { if (cashOut != null) {
if ("2".equals(notifyDto.getStatus())) { if ("2".equals(notifyDto.getStatus())) {
cashOut.setState(1); cashOut.setState(1);

View File

@@ -535,11 +535,13 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
CashOut cashOut = new CashOut(); CashOut cashOut = new CashOut();
cashOut.setIsOut(false); cashOut.setIsOut(false);
cashOut.setMoney(money.toString()); cashOut.setMoney(money.toString());
cashOut.setUserId(userId);
if (isSys) { if (isSys) {
cashOut.setSysUserId(userId); cashOut.setUserType(2);
} else { } else {
cashOut.setUserId(userId); cashOut.setUserType(1);
} }
cashOut.setZhifubao(alipayAccount); cashOut.setZhifubao(alipayAccount);
cashOut.setZhifubaoName(alipayName); cashOut.setZhifubaoName(alipayName);
@@ -571,7 +573,7 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
} }
if (wuyouPay.checkCanCash(userId, WithdrawTypeEnum.MANUAL, new BigDecimal(money.toString()))) { if (wuyouPay.checkCanCash(userId, WithdrawTypeEnum.MANUAL, new BigDecimal(money.toString()))) {
cashOut.setStatus(4); 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))) { if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))) {
sysUserMoneyDetails.setContent("成功提现:" + money); sysUserMoneyDetails.setContent("成功提现:" + money);
cashOut.setState(1); cashOut.setState(1);
@@ -607,7 +609,7 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
} }
if (wuyouPay.checkCanCash(userId, WithdrawTypeEnum.MANUAL, new BigDecimal(money.toString()))) { if (wuyouPay.checkCanCash(userId, WithdrawTypeEnum.MANUAL, new BigDecimal(money.toString()))) {
cashOut.setStatus(4); 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))) { if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))) {
userMoneyDetails.setContent("成功提现:" + money); userMoneyDetails.setContent("成功提现:" + money);
cashOut.setState(1); cashOut.setState(1);
@@ -705,18 +707,21 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
entity.setRefund(cashOut.getRefund()); entity.setRefund(cashOut.getRefund());
} }
boolean isSysUser = entity.getSysUserId() != null; boolean isUser = true;
if (entity.getUserType() == 2) {
isUser = false;
}
if (isSysUser) { if (isUser) {
SysUserEntity sysUserEntity = sysUserService.getById(entity.getSysUserId());
if (sysUserEntity == null) {
throw new SqxException("提现代理信息不存在!");
}
} else {
UserEntity userEntity = userService.selectUserById(entity.getUserId()); UserEntity userEntity = userService.selectUserById(entity.getUserId());
if (userEntity == null) { if (userEntity == null) {
throw new SqxException("提现用户信息不存在!"); throw new SqxException("提现用户信息不存在!");
} }
} else {
SysUserEntity sysUserEntity = sysUserService.getById(entity.getSysUserId());
if (sysUserEntity == null) {
throw new SqxException("提现代理信息不存在!");
}
} }
if (isAgree == 0) { if (isAgree == 0) {
@@ -730,7 +735,7 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
entity.setOrderNumber(outOrderNo); 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))) { if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))) {
entity.setState(1); entity.setState(1);
} else if (StringUtils.isNotBlank(baseResp.getErrorMsg())) { } else if (StringUtils.isNotBlank(baseResp.getErrorMsg())) {

View File

@@ -41,7 +41,7 @@ public class WuyouPay {
this.commonInfoService = commonInfoService; 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(); String payConfig = commonInfoService.findOne(926).getValue();
if (!"1".equals(payConfig)) { if (!"1".equals(payConfig)) {
BaseResp baseResp = new BaseResp(); BaseResp baseResp = new BaseResp();
@@ -51,7 +51,7 @@ public class WuyouPay {
Map<String, Object> params = getBaseParams(); Map<String, Object> params = getBaseParams();
params.put("type", "6001"); params.put("type", "6001");
params.put("is_code", "1"); 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("total", amount);
params.put("notify_url", notifyUrl); params.put("notify_url", notifyUrl);
@@ -68,9 +68,9 @@ public class WuyouPay {
return JSONObject.parseObject(body, BaseResp.class); 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<String, Object> params = getBaseParams(); Map<String, Object> params = getBaseParams();
params.put("out_trade_no", orderNo); params.put("out_trade_no", String.format("%s-%s", orderNo, userId));
params.put("total", amount); params.put("total", amount);
String sign = Encrypt.getParamsSign(params); String sign = Encrypt.getParamsSign(params);
@@ -116,7 +116,7 @@ public class WuyouPay {
* @param account 支付宝账号 * @param account 支付宝账号
* @param userName 支付宝名称 * @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(); String payConfig = commonInfoService.findOne(927).getValue();
if (!"1".equals(payConfig)) { if (!"1".equals(payConfig)) {
BaseResp baseResp = new BaseResp(); BaseResp baseResp = new BaseResp();
@@ -125,7 +125,7 @@ public class WuyouPay {
} }
Map<String, Object> params = getBaseParams(); Map<String, Object> 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("total", amount);
params.put("bank_card", account); params.put("bank_card", account);
params.put("bank_account_name", userName); params.put("bank_account_name", userName);
@@ -151,10 +151,10 @@ public class WuyouPay {
* @param account 支付宝账号 * @param account 支付宝账号
* @param userName 支付宝名称 * @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<String, Object> params = getBaseParams(); Map<String, Object> 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("total", amount);
params.put("bank_card", account); params.put("bank_card", account);
params.put("bank_account_name", userName); params.put("bank_account_name", userName);
@@ -174,9 +174,9 @@ public class WuyouPay {
return JSONObject.parseObject(body, BaseResp.class); 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<String, Object> params = getBaseParams(); Map<String, Object> 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("total", amount);
String sign = Encrypt.getParamsSign(params); String sign = Encrypt.getParamsSign(params);