diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/dao/allocation/receiver/AllocGroupManager.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/dao/allocation/receiver/AllocGroupManager.java index b46b41523..c5b08b55c 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/dao/allocation/receiver/AllocGroupManager.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/dao/allocation/receiver/AllocGroupManager.java @@ -36,10 +36,11 @@ public class AllocGroupManager extends BaseManager /** * 根据分账组编号查询 */ - public Optional findByGroupNo(String groupNo, String appId) { + public Optional findByGroupNo(String channel, String groupNo, String appId) { return this.lambdaQuery() .eq(AllocGroup::getGroupNo,groupNo) .eq(AllocGroup::getAppId,appId) + .eq(AllocGroup::getChannel,channel) .oneOpt(); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/allocation/order/AllocOrderService.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/allocation/order/AllocOrderService.java index 44035138e..e424db9cb 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/allocation/order/AllocOrderService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/allocation/order/AllocOrderService.java @@ -224,10 +224,12 @@ public class AllocOrderService { AllocGroup allocationGroup; if (Objects.nonNull(param.getGroupNo())){ // 指定分账组 - allocationGroup = groupManager.findByGroupNo(param.getGroupNo(),param.getAppId()).orElseThrow(() -> new DataErrorException("未查询到分账组")); + allocationGroup = groupManager.findByGroupNo(payOrder.getChannel(), param.getGroupNo(),param.getAppId()) + .orElseThrow(() -> new DataErrorException("未查询到分账组")); } else { // 默认分账组 - allocationGroup = groupManager.findDefaultGroup(payOrder.getChannel(),param.getAppId()).orElseThrow(() -> new DataErrorException("未查询到默认分账组")); + allocationGroup = groupManager.findDefaultGroup(payOrder.getChannel(),param.getAppId()) + .orElseThrow(() -> new DataErrorException("未查询到默认分账组")); } // 判断通道类型是否一致 if (!Objects.equals(allocationGroup.getChannel(), payOrder.getChannel())){ diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/order/pay/PayOrderService.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/order/pay/PayOrderService.java index 1819ddf9c..5d7944150 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/order/pay/PayOrderService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/order/pay/PayOrderService.java @@ -3,6 +3,7 @@ package org.dromara.daxpay.service.service.order.pay; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.dromara.daxpay.core.exception.DataErrorException; import org.dromara.daxpay.core.exception.TradeNotExistException; import org.dromara.daxpay.core.param.allocation.transaction.AllocationParam; import org.dromara.daxpay.core.util.TradeNoGenerateUtil; @@ -85,15 +86,20 @@ public class PayOrderService { * 自动分账 */ public void autoAllocation(Long id){ - PayOrder payOrder = payOrderManager.findById(id).orElseThrow(() -> new TradeNotExistException("支付订单不存在")); - // 是否开启自动完结 - AllocConfig allocConfig = allocConfigManager.findByAppId(payOrder.getAppId()).orElse(null); - if (Objects.nonNull(allocConfig)){ - paymentAssistService.initMchApp(payOrder.getAppId()); - AllocationParam param = new AllocationParam() - .setBizAllocNo("B"+TradeNoGenerateUtil.allocation()); - param.setAppId(payOrder.getAppId()); - allocationService.start(param, payOrder); + try { + PayOrder payOrder = payOrderManager.findById(id).orElseThrow(() -> new TradeNotExistException("支付订单不存在")); + // 是否开启自动完结 + AllocConfig allocConfig = allocConfigManager.findByAppId(payOrder.getAppId()).orElse(null); + if (Objects.nonNull(allocConfig)){ + paymentAssistService.initMchApp(payOrder.getAppId()); + AllocationParam param = new AllocationParam() + .setBizAllocNo("B"+TradeNoGenerateUtil.allocation()); + param.setAppId(payOrder.getAppId()); + allocationService.start(param, payOrder); + } + } catch (DataErrorException e) { + // 如果没有默认分账组, 会触发分账失败, 并不需要额外处理 + log.warn("自动分账失败", e); } } }