From 9d122f69412ad70abc3b03511e0b40db4d34dc0b Mon Sep 17 00:00:00 2001 From: DaxPay Dev Date: Fri, 17 Jul 2026 08:16:25 +0800 Subject: [PATCH] =?UTF-8?q?feat(admin):=20=E5=88=97=E8=A1=A8=E5=95=86?= =?UTF-8?q?=E6=88=B7=E5=88=97=E8=A1=A5=20mchName=20=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=E5=B9=B6=E7=BB=9F=E4=B8=80=20Fields=20=E5=B8=B8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 订单/风控/域名验证等 Result 增加 @Trans(mchNo->mchName),source/result 使用 MchBaseResult/MerchantInfo 的 Fields 常量;Service 分页与详情调用 TransService.translate;码牌存量字面量一并修正。 --- .../trade/NormalPayOrderAdminService.java | 9 +++++++- .../trade/PayRefundOrderAdminService.java | 22 +++++++++++++++---- .../service/trade/PayTradeAdminService.java | 9 +++++++- .../qrcode/result/DeviceQrCodeResult.java | 6 ++++- .../result/wxverify/WxDomainVerifyResult.java | 11 ++++++++++ .../wxverify/WxDomainVerifyService.java | 12 ++++++++-- .../order/result/NormalPayOrderResult.java | 11 ++++++++++ .../order/result/PayRefundOrderResult.java | 11 ++++++++++ .../trade/order/result/PayTradeResult.java | 11 ++++++++++ .../result/SystemSensitiveWordHitResult.java | 4 ++++ .../plugin/risk/result/PayRiskHitResult.java | 11 ++++++++++ .../risk/service/PayRiskHitService.java | 12 ++++++++-- 12 files changed, 118 insertions(+), 11 deletions(-) diff --git a/daxpay-payment/daxpay-payment-admin/src/main/java/cn/daxpay/open/payment/admin/service/trade/NormalPayOrderAdminService.java b/daxpay-payment/daxpay-payment-admin/src/main/java/cn/daxpay/open/payment/admin/service/trade/NormalPayOrderAdminService.java index 06dde4367..5776df539 100644 --- a/daxpay-payment/daxpay-payment-admin/src/main/java/cn/daxpay/open/payment/admin/service/trade/NormalPayOrderAdminService.java +++ b/daxpay-payment/daxpay-payment-admin/src/main/java/cn/daxpay/open/payment/admin/service/trade/NormalPayOrderAdminService.java @@ -1,5 +1,6 @@ package cn.daxpay.open.payment.admin.service.trade; +import cn.daxpay.open.platform.common.translate.service.TransService; import cn.daxpay.open.platform.core.exception.DataNotExistException; import cn.daxpay.open.platform.core.rest.param.PageParam; import cn.daxpay.open.platform.core.rest.result.PageResult; @@ -33,6 +34,7 @@ public class NormalPayOrderAdminService { private final PayTradeManager payTradeManager; private final PaySyncService paySyncService; private final PayCloseService payCloseService; + private final TransService transService; /// 分页查询 public PageResult page(PageParam pageParam, NormalPayOrderQuery query) { @@ -41,11 +43,14 @@ public class NormalPayOrderAdminService { var records = page.getRecords().stream() .map(NormalPayOrderConvert.CONVERT::toResult) .toList(); - return new PageResult() + PageResult pageResult = new PageResult() .setRecords(records) .setTotal(page.getTotal()) .setSize(page.getSize()) .setCurrent(page.getCurrent()); + // 翻译商户名称(mchNo -> mchName) + transService.translate(pageResult); + return pageResult; } /// 详情查询(联表资金凭证补充交易字段) @@ -62,6 +67,8 @@ public class NormalPayOrderAdminService { result.setFundStatus(trade.getStatus()); result.setRefundableBalance(trade.getRefundableBalance()); } + // 翻译商户名称 + transService.translate(result); return result; } diff --git a/daxpay-payment/daxpay-payment-admin/src/main/java/cn/daxpay/open/payment/admin/service/trade/PayRefundOrderAdminService.java b/daxpay-payment/daxpay-payment-admin/src/main/java/cn/daxpay/open/payment/admin/service/trade/PayRefundOrderAdminService.java index d11378b84..2fbbd0dfc 100644 --- a/daxpay-payment/daxpay-payment-admin/src/main/java/cn/daxpay/open/payment/admin/service/trade/PayRefundOrderAdminService.java +++ b/daxpay-payment/daxpay-payment-admin/src/main/java/cn/daxpay/open/payment/admin/service/trade/PayRefundOrderAdminService.java @@ -1,5 +1,6 @@ package cn.daxpay.open.payment.admin.service.trade; +import cn.daxpay.open.platform.common.translate.service.TransService; import cn.daxpay.open.platform.core.exception.DataNotExistException; import cn.daxpay.open.platform.core.rest.param.PageParam; import cn.daxpay.open.platform.core.rest.result.PageResult; @@ -27,6 +28,7 @@ public class PayRefundOrderAdminService { private final PayRefundOrderManager payRefundOrderManager; private final PayRefundService payRefundService; private final PayRefundSyncService payRefundSyncService; + private final TransService transService; /// 分页查询 public PageResult page(PageParam pageParam, PayRefundOrderQuery query) { @@ -34,29 +36,41 @@ public class PayRefundOrderAdminService { var records = page.getRecords().stream() .map(PayRefundOrderConvert.CONVERT::toResult) .toList(); - return new PageResult() + PageResult pageResult = new PageResult() .setRecords(records) .setTotal(page.getTotal()) .setSize(page.getSize()) .setCurrent(page.getCurrent()); + // 翻译商户名称(mchNo -> mchName) + transService.translate(pageResult); + return pageResult; } /// 详情查询 public PayRefundOrderResult findById(Long id) { PayRefundOrder entity = payRefundOrderManager.findById(id) .orElseThrow(() -> new DataNotExistException("pay.error.refund.orderNotFound")); - return PayRefundOrderConvert.CONVERT.toResult(entity); + PayRefundOrderResult result = PayRefundOrderConvert.CONVERT.toResult(entity); + // 翻译商户名称 + transService.translate(result); + return result; } /// 发起退款 public PayRefundOrderResult refund(PayRefundParam param) { PayRefundOrder refundOrder = payRefundService.refund(param); - return PayRefundOrderConvert.CONVERT.toResult(refundOrder); + PayRefundOrderResult result = PayRefundOrderConvert.CONVERT.toResult(refundOrder); + // 翻译商户名称 + transService.translate(result); + return result; } /// 同步退款状态(传入退款单ID) public PayRefundOrderResult sync(Long id) { PayRefundOrder refundOrder = payRefundSyncService.syncById(id); - return PayRefundOrderConvert.CONVERT.toResult(refundOrder); + PayRefundOrderResult result = PayRefundOrderConvert.CONVERT.toResult(refundOrder); + // 翻译商户名称 + transService.translate(result); + return result; } } diff --git a/daxpay-payment/daxpay-payment-admin/src/main/java/cn/daxpay/open/payment/admin/service/trade/PayTradeAdminService.java b/daxpay-payment/daxpay-payment-admin/src/main/java/cn/daxpay/open/payment/admin/service/trade/PayTradeAdminService.java index 85f864c5e..c416196ee 100644 --- a/daxpay-payment/daxpay-payment-admin/src/main/java/cn/daxpay/open/payment/admin/service/trade/PayTradeAdminService.java +++ b/daxpay-payment/daxpay-payment-admin/src/main/java/cn/daxpay/open/payment/admin/service/trade/PayTradeAdminService.java @@ -1,5 +1,6 @@ package cn.daxpay.open.payment.admin.service.trade; +import cn.daxpay.open.platform.common.translate.service.TransService; import cn.daxpay.open.platform.core.exception.DataNotExistException; import cn.daxpay.open.platform.core.rest.param.PageParam; import cn.daxpay.open.platform.core.rest.result.PageResult; @@ -33,6 +34,7 @@ public class PayTradeAdminService { private final NormalPayOrderManager normalPayOrderManager; private final PaySyncService paySyncService; private final PayCloseService payCloseService; + private final TransService transService; /// 分页查询 public PageResult page(PageParam pageParam, PayTradeQuery query) { @@ -40,11 +42,14 @@ public class PayTradeAdminService { var records = page.getRecords().stream() .map(PayTradeAdminConvert.CONVERT::toResult) .toList(); - return new PageResult() + PageResult pageResult = new PageResult() .setRecords(records) .setTotal(page.getTotal()) .setSize(page.getSize()) .setCurrent(page.getCurrent()); + // 翻译商户名称(mchNo -> mchName) + transService.translate(pageResult); + return pageResult; } /// 详情查询(联表容器补充业务字段) @@ -70,6 +75,8 @@ public class PayTradeAdminService { result.setBankType(normalOrder.getBankType()); result.setErrorMsg(normalOrder.getErrorMsg()); } + // 翻译商户名称 + transService.translate(result); return result; } diff --git a/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/device/qrcode/result/DeviceQrCodeResult.java b/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/device/qrcode/result/DeviceQrCodeResult.java index 34b4cf53d..d37296185 100644 --- a/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/device/qrcode/result/DeviceQrCodeResult.java +++ b/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/device/qrcode/result/DeviceQrCodeResult.java @@ -1,5 +1,6 @@ package cn.daxpay.open.payment.device.qrcode.result; +import cn.daxpay.open.payment.common.result.MchBaseResult; import cn.daxpay.open.payment.merchant.entity.info.MerchantInfo; import cn.daxpay.open.platform.core.annotation.Trans; import cn.daxpay.open.platform.core.result.BaseResult; @@ -28,7 +29,10 @@ public class DeviceQrCodeResult extends BaseResult { private String mchNo; /// 商户名称(由 mchNo 翻译, 未绑定为空) - @Trans(entity = MerchantInfo.class, source = "mchNo", result = "mchName") + @Trans( + entity = MerchantInfo.class, + source = MchBaseResult.Fields.mchNo, + result = MerchantInfo.Fields.mchName) @Schema(description = "商户名称") private String mchName; diff --git a/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/merchant/result/wxverify/WxDomainVerifyResult.java b/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/merchant/result/wxverify/WxDomainVerifyResult.java index fe9d619e8..387da078b 100644 --- a/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/merchant/result/wxverify/WxDomainVerifyResult.java +++ b/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/merchant/result/wxverify/WxDomainVerifyResult.java @@ -1,5 +1,8 @@ package cn.daxpay.open.payment.merchant.result.wxverify; +import cn.daxpay.open.payment.common.result.MchBaseResult; +import cn.daxpay.open.payment.merchant.entity.info.MerchantInfo; +import cn.daxpay.open.platform.core.annotation.Trans; import cn.daxpay.open.platform.core.result.BaseResult; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -19,6 +22,14 @@ public class WxDomainVerifyResult extends BaseResult { @Schema(description = "商户号") private String mchNo; + /// 商户名称(由 mchNo 翻译, 走系统 @Trans 机制; 平台级记录无商户号则为空) + @Trans( + entity = MerchantInfo.class, + source = MchBaseResult.Fields.mchNo, + result = MerchantInfo.Fields.mchName) + @Schema(description = "商户名称") + private String mchName; + @Schema(description = "是否平台级") private boolean platform; diff --git a/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/merchant/service/wxverify/WxDomainVerifyService.java b/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/merchant/service/wxverify/WxDomainVerifyService.java index 5a5173653..430cc4ddd 100644 --- a/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/merchant/service/wxverify/WxDomainVerifyService.java +++ b/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/merchant/service/wxverify/WxDomainVerifyService.java @@ -8,6 +8,7 @@ import cn.daxpay.open.payment.merchant.param.wxverify.WxDomainVerifyQuery; import cn.daxpay.open.payment.merchant.param.wxverify.WxDomainVerifyUploadParam; import cn.daxpay.open.payment.merchant.result.wxverify.WxDomainVerifyResult; import cn.daxpay.open.platform.common.mybatisplus.util.MpUtil; +import cn.daxpay.open.platform.common.translate.service.TransService; import cn.daxpay.open.platform.core.code.CommonCode; import cn.daxpay.open.platform.core.exception.DataNotExistException; import cn.daxpay.open.platform.core.exception.operation.OperationFailException; @@ -42,6 +43,7 @@ public class WxDomainVerifyService { private static final String PLATFORM_MCH_NO = "0"; private final WxDomainVerifyManager wxDomainVerifyManager; + private final TransService transService; /// 商户级上传单个验证文件(运营代指定商户上传) @Transactional(rollbackFor = Exception.class) @@ -78,7 +80,10 @@ public class WxDomainVerifyService { /// 分页 public PageResult page(PageParam pageParam, WxDomainVerifyQuery query) { - return MpUtil.toPageResult(wxDomainVerifyManager.page(pageParam, query)); + PageResult pageResult = MpUtil.toPageResult(wxDomainVerifyManager.page(pageParam, query)); + // 翻译商户名称(mchNo -> mchName; 平台级无 mchNo 则跳过) + transService.translate(pageResult); + return pageResult; } /// 详情 @@ -86,7 +91,10 @@ public class WxDomainVerifyService { WxDomainVerify entity = wxDomainVerifyManager.findById(id) // 微信域名验证文件不存在 .orElseThrow(() -> new DataNotExistException("error.payment.merchant.wxVerifyNotFound")); - return entity.toResult(); + WxDomainVerifyResult result = entity.toResult(); + // 翻译商户名称 + transService.translate(result); + return result; } /// 删除 diff --git a/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/trade/order/result/NormalPayOrderResult.java b/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/trade/order/result/NormalPayOrderResult.java index c50e7d64b..2106032c2 100644 --- a/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/trade/order/result/NormalPayOrderResult.java +++ b/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/trade/order/result/NormalPayOrderResult.java @@ -1,5 +1,8 @@ package cn.daxpay.open.payment.trade.order.result; +import cn.daxpay.open.payment.common.result.MchBaseResult; +import cn.daxpay.open.payment.merchant.entity.info.MerchantInfo; +import cn.daxpay.open.platform.core.annotation.Trans; import cn.daxpay.open.platform.core.result.BaseResult; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -24,6 +27,14 @@ public class NormalPayOrderResult extends BaseResult { @Schema(description = "商户号") private String mchNo; + /// 商户名称(由 mchNo 翻译, 走系统 @Trans 机制) + @Trans( + entity = MerchantInfo.class, + source = MchBaseResult.Fields.mchNo, + result = MerchantInfo.Fields.mchName) + @Schema(description = "商户名称") + private String mchName; + /// 应用号 @Schema(description = "应用号") private String appId; diff --git a/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/trade/order/result/PayRefundOrderResult.java b/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/trade/order/result/PayRefundOrderResult.java index b1ed8eee1..1d570c092 100644 --- a/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/trade/order/result/PayRefundOrderResult.java +++ b/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/trade/order/result/PayRefundOrderResult.java @@ -1,5 +1,8 @@ package cn.daxpay.open.payment.trade.order.result; +import cn.daxpay.open.payment.common.result.MchBaseResult; +import cn.daxpay.open.payment.merchant.entity.info.MerchantInfo; +import cn.daxpay.open.platform.core.annotation.Trans; import cn.daxpay.open.platform.core.result.BaseResult; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -20,6 +23,14 @@ public class PayRefundOrderResult extends BaseResult { @Schema(description = "商户号") private String mchNo; + /// 商户名称(由 mchNo 翻译, 走系统 @Trans 机制) + @Trans( + entity = MerchantInfo.class, + source = MchBaseResult.Fields.mchNo, + result = MerchantInfo.Fields.mchName) + @Schema(description = "商户名称") + private String mchName; + /// 应用号 @Schema(description = "应用号") private String appId; diff --git a/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/trade/order/result/PayTradeResult.java b/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/trade/order/result/PayTradeResult.java index 063a7ae8f..850409086 100644 --- a/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/trade/order/result/PayTradeResult.java +++ b/daxpay-payment/daxpay-payment-core/src/main/java/cn/daxpay/open/payment/trade/order/result/PayTradeResult.java @@ -1,5 +1,8 @@ package cn.daxpay.open.payment.trade.order.result; +import cn.daxpay.open.payment.common.result.MchBaseResult; +import cn.daxpay.open.payment.merchant.entity.info.MerchantInfo; +import cn.daxpay.open.platform.core.annotation.Trans; import cn.daxpay.open.platform.core.result.BaseResult; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -24,6 +27,14 @@ public class PayTradeResult extends BaseResult { @Schema(description = "商户号") private String mchNo; + /// 商户名称(由 mchNo 翻译, 走系统 @Trans 机制) + @Trans( + entity = MerchantInfo.class, + source = MchBaseResult.Fields.mchNo, + result = MerchantInfo.Fields.mchName) + @Schema(description = "商户名称") + private String mchName; + /// 应用号 @Schema(description = "应用号") private String appId; diff --git a/daxpay-platform/daxpay-platform-capability/capability-sensitive-word/src/main/java/cn/daxpay/open/platform/capability/sensitiveword/result/SystemSensitiveWordHitResult.java b/daxpay-platform/daxpay-platform-capability/capability-sensitive-word/src/main/java/cn/daxpay/open/platform/capability/sensitiveword/result/SystemSensitiveWordHitResult.java index 42bbfab11..def9172c0 100644 --- a/daxpay-platform/daxpay-platform-capability/capability-sensitive-word/src/main/java/cn/daxpay/open/platform/capability/sensitiveword/result/SystemSensitiveWordHitResult.java +++ b/daxpay-platform/daxpay-platform-capability/capability-sensitive-word/src/main/java/cn/daxpay/open/platform/capability/sensitiveword/result/SystemSensitiveWordHitResult.java @@ -32,6 +32,10 @@ public class SystemSensitiveWordHitResult extends BaseResult { @Schema(description = "商户号") private String mchNo; + /// 商户名称(platform 模块不依赖 payment, 本轮不走 @Trans; 预留字段) + @Schema(description = "商户名称") + private String mchName; + @Schema(description = "应用号") private String appId; diff --git a/daxpay-plugin/daxpay-plugin-risk/src/main/java/cn/daxpay/open/plugin/risk/result/PayRiskHitResult.java b/daxpay-plugin/daxpay-plugin-risk/src/main/java/cn/daxpay/open/plugin/risk/result/PayRiskHitResult.java index 325400984..0c542af6d 100644 --- a/daxpay-plugin/daxpay-plugin-risk/src/main/java/cn/daxpay/open/plugin/risk/result/PayRiskHitResult.java +++ b/daxpay-plugin/daxpay-plugin-risk/src/main/java/cn/daxpay/open/plugin/risk/result/PayRiskHitResult.java @@ -1,5 +1,8 @@ package cn.daxpay.open.plugin.risk.result; +import cn.daxpay.open.payment.common.result.MchBaseResult; +import cn.daxpay.open.payment.merchant.entity.info.MerchantInfo; +import cn.daxpay.open.platform.core.annotation.Trans; import cn.daxpay.open.platform.core.result.BaseResult; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -31,6 +34,14 @@ public class PayRiskHitResult extends BaseResult { @Schema(description = "商户号") private String mchNo; + /// 商户名称(由 mchNo 翻译, 走系统 @Trans 机制) + @Trans( + entity = MerchantInfo.class, + source = MchBaseResult.Fields.mchNo, + result = MerchantInfo.Fields.mchName) + @Schema(description = "商户名称") + private String mchName; + @Schema(description = "应用号") private String appId; diff --git a/daxpay-plugin/daxpay-plugin-risk/src/main/java/cn/daxpay/open/plugin/risk/service/PayRiskHitService.java b/daxpay-plugin/daxpay-plugin-risk/src/main/java/cn/daxpay/open/plugin/risk/service/PayRiskHitService.java index 9618244ba..7368f2032 100644 --- a/daxpay-plugin/daxpay-plugin-risk/src/main/java/cn/daxpay/open/plugin/risk/service/PayRiskHitService.java +++ b/daxpay-plugin/daxpay-plugin-risk/src/main/java/cn/daxpay/open/plugin/risk/service/PayRiskHitService.java @@ -3,6 +3,7 @@ package cn.daxpay.open.plugin.risk.service; import cn.daxpay.open.payment.strategy.risk.PayRiskCheckContext; import cn.daxpay.open.platform.capability.auth.util.SecurityUtil; import cn.daxpay.open.platform.common.mybatisplus.util.MpUtil; +import cn.daxpay.open.platform.common.translate.service.TransService; import cn.daxpay.open.platform.core.code.PayErrorCode; import cn.daxpay.open.platform.core.exception.BizInfoException; import cn.daxpay.open.platform.core.exception.DataNotExistException; @@ -35,15 +36,22 @@ public class PayRiskHitService { private final PayRiskHitManager payRiskHitManager; private final PayBlacklistService payBlacklistService; + private final TransService transService; /// 分页 public PageResult page(PageParam pageParam, PayRiskHitQuery query) { - return MpUtil.toPageResult(payRiskHitManager.page(pageParam, query)); + PageResult pageResult = MpUtil.toPageResult(payRiskHitManager.page(pageParam, query)); + // 翻译商户名称(mchNo -> mchName) + transService.translate(pageResult); + return pageResult; } /// 详情 public PayRiskHitResult findById(Long id) { - return getEntity(id).toResult(); + PayRiskHitResult result = getEntity(id).toResult(); + // 翻译商户名称 + transService.translate(result); + return result; } /// 处理命中