feat(admin): 列表商户列补 mchName 翻译并统一 Fields 常量

订单/风控/域名验证等 Result 增加 @Trans(mchNo->mchName),source/result 使用 MchBaseResult/MerchantInfo 的 Fields 常量;Service 分页与详情调用 TransService.translate;码牌存量字面量一并修正。
This commit is contained in:
DaxPay Dev
2026-07-17 08:16:25 +08:00
parent 75e73355d0
commit 9d122f6941
12 changed files with 118 additions and 11 deletions

View File

@@ -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<NormalPayOrderResult> 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<NormalPayOrderResult>()
PageResult<NormalPayOrderResult> pageResult = new PageResult<NormalPayOrderResult>()
.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;
}

View File

@@ -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<PayRefundOrderResult> 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<PayRefundOrderResult>()
PageResult<PayRefundOrderResult> pageResult = new PageResult<PayRefundOrderResult>()
.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;
}
}

View File

@@ -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<PayTradeResult> 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<PayTradeResult>()
PageResult<PayTradeResult> pageResult = new PageResult<PayTradeResult>()
.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;
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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<WxDomainVerifyResult> page(PageParam pageParam, WxDomainVerifyQuery query) {
return MpUtil.toPageResult(wxDomainVerifyManager.page(pageParam, query));
PageResult<WxDomainVerifyResult> 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;
}
/// 删除

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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<PayRiskHitResult> page(PageParam pageParam, PayRiskHitQuery query) {
return MpUtil.toPageResult(payRiskHitManager.page(pageParam, query));
PageResult<PayRiskHitResult> 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;
}
/// 处理命中