From 78cf72f660d5b54908daea722ccbf741948fde82 Mon Sep 17 00:00:00 2001 From: zhx Date: Wed, 24 Jun 2026 12:20:22 +0800 Subject: [PATCH] fix: prefer configured h5 pay country --- .../pay/web/PayWebH5OptionsQryExe.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/rc-service/rc-service-order/order-application/src/main/java/com/red/circle/order/app/command/pay/web/PayWebH5OptionsQryExe.java b/rc-service/rc-service-order/order-application/src/main/java/com/red/circle/order/app/command/pay/web/PayWebH5OptionsQryExe.java index c05a6f23..1030ec19 100644 --- a/rc-service/rc-service-order/order-application/src/main/java/com/red/circle/order/app/command/pay/web/PayWebH5OptionsQryExe.java +++ b/rc-service/rc-service-order/order-application/src/main/java/com/red/circle/order/app/command/pay/web/PayWebH5OptionsQryExe.java @@ -1,7 +1,6 @@ package com.red.circle.order.app.command.pay.web; import com.red.circle.common.business.core.amount.PayAmountArithmeticUtils; -import com.red.circle.framework.mybatis.constant.PageConstant; import com.red.circle.framework.core.asserts.ResponseAssert; import com.red.circle.framework.core.response.CommonErrorCode; import com.red.circle.order.app.dto.clientobject.pay.PayCountryCO; @@ -127,11 +126,24 @@ public class PayWebH5OptionsQryExe { sysCountryCodeClient.getByCode(cmd.getCountryCode().trim().toUpperCase()) ); ResponseAssert.notNull(CommonErrorCode.NOT_FOUND_RECORD_INFO, country); - return payCountryService.query() + List payCountries = payCountryService.query() .eq(PayCountry::getCountryId, country.getId()) .orderByDesc(PayCountry::getSort) - .last(PageConstant.LIMIT_ONE) - .getOne(); + .list(); + if (CollectionUtils.isEmpty(payCountries)) { + return null; + } + // 同一个国家线上可能有多条支付国家记录;优先选当前应用真正配置了商品的记录,避免只按排序命中空配置。 + return payCountries.stream() + .filter(payCountry -> CollectionUtils.isNotEmpty( + payApplicationCommodityService.listCommodityByApplicationCountry( + cmd.getApplicationId(), + payCountry.getId(), + cmd.getType(), + null + ))) + .findFirst() + .orElse(payCountries.get(0)); } return payCountryService.getShelfSortMax();