mirror of
https://gitee.com/dromara/dax-pay.git
synced 2025-10-14 05:40:25 +00:00
perf: 优化自动分账没有默认分账组时的处理
This commit is contained in:
@@ -36,10 +36,11 @@ public class AllocGroupManager extends BaseManager<AllocGroupMapper, AllocGroup>
|
||||
/**
|
||||
* 根据分账组编号查询
|
||||
*/
|
||||
public Optional<AllocGroup> findByGroupNo(String groupNo, String appId) {
|
||||
public Optional<AllocGroup> findByGroupNo(String channel, String groupNo, String appId) {
|
||||
return this.lambdaQuery()
|
||||
.eq(AllocGroup::getGroupNo,groupNo)
|
||||
.eq(AllocGroup::getAppId,appId)
|
||||
.eq(AllocGroup::getChannel,channel)
|
||||
.oneOpt();
|
||||
}
|
||||
|
||||
|
@@ -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())){
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user