From 8bfc3b480b12efc3266cf5969647903e8338de22 Mon Sep 17 00:00:00 2001 From: wuKong Date: Mon, 24 Nov 2025 17:05:48 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat(pay):=20=E6=94=AF=E6=8C=81=E9=80=9A?= =?UTF-8?q?=E8=BF=87=E8=AE=A2=E5=8D=95=E5=8F=B7=E6=9F=A5=E8=AF=A2=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 AppPayOrderController 中增加根据支付订单号查询订单的功能 - 新增 PayOrderMapper 的 selectByNo 方法用于按订单号查询 - 扩展 PayOrderService 接口及实现类以支持订单号查询 - 优化查询逻辑,优先使用订单号查询,其次使用订单ID查询 - 更新接口文档,增加支付订单号参数说明 - 使用 CharSequenceUtil 工具类判断订单号是否为空 --- .../app/order/AppPayOrderController.java | 17 +++++++++++++---- .../pay/dal/mysql/order/PayOrderMapper.java | 4 ++++ .../pay/service/order/PayOrderService.java | 8 +++++++- .../pay/service/order/PayOrderServiceImpl.java | 5 ++++- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/controller/app/order/AppPayOrderController.java b/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/controller/app/order/AppPayOrderController.java index 4f5716384..8fa78306e 100644 --- a/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/controller/app/order/AppPayOrderController.java +++ b/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/controller/app/order/AppPayOrderController.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.pay.controller.app.order; +import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.ObjUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; @@ -46,13 +47,21 @@ public class AppPayOrderController { @GetMapping("/get") @Operation(summary = "获得支付订单") @Parameters({ - @Parameter(name = "id", description = "编号", required = true, example = "1024"), + @Parameter(name = "id", description = "编号", example = "1024"), + @Parameter(name = "no", description = "支付订单号", example = "Pxxx"), @Parameter(name = "sync", description = "是否同步", example = "true") }) - public CommonResult getOrder(@RequestParam("id") Long id, + public CommonResult getOrder(@RequestParam(value = "id", required = false) Long id, + @RequestParam(value = "no", required = false) String no, @RequestParam(value = "sync", required = false) Boolean sync) { - PayOrderDO order = payOrderService.getOrder(id); - if (order== null) { + PayOrderDO order = null; + if (CharSequenceUtil.isNotEmpty(no)){ + order = payOrderService.getOrder(no); + } + if (ObjUtil.isNull(order) && ObjUtil.isNotNull(id)) { + order = payOrderService.getOrder(id); + } + if (order == null) { return success(null); } // 重要:校验订单是否是当前用户,避免越权 diff --git a/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/dal/mysql/order/PayOrderMapper.java b/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/dal/mysql/order/PayOrderMapper.java index 95510d5f7..e83d0387c 100755 --- a/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/dal/mysql/order/PayOrderMapper.java +++ b/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/dal/mysql/order/PayOrderMapper.java @@ -48,6 +48,10 @@ public interface PayOrderMapper extends BaseMapperX { PayOrderDO::getMerchantOrderId, merchantOrderId); } + default PayOrderDO selectByNo(String no) { + return selectOne(PayOrderDO::getNo, no); + } + default int updateByIdAndStatus(Long id, Integer status, PayOrderDO update) { return update(update, new LambdaQueryWrapper() .eq(PayOrderDO::getId, id).eq(PayOrderDO::getStatus, status)); diff --git a/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderService.java b/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderService.java index c4496f829..e2af1df2d 100755 --- a/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderService.java +++ b/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderService.java @@ -30,7 +30,13 @@ public interface PayOrderService { * @return 支付订单 */ PayOrderDO getOrder(Long id); - + /** + * 获得支付订单 + * + * @param no 支付订单号 + * @return 支付订单 + */ + PayOrderDO getOrder(String no); /** * 获得支付订单 * diff --git a/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java b/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java index b7f18abd6..41eee7989 100755 --- a/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java +++ b/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java @@ -78,7 +78,10 @@ public class PayOrderServiceImpl implements PayOrderService { public PayOrderDO getOrder(Long id) { return orderMapper.selectById(id); } - + @Override + public PayOrderDO getOrder(String no) { + return orderMapper.selectByNo(no); + } @Override public PayOrderDO getOrder(Long appId, String merchantOrderId) { return orderMapper.selectByAppIdAndMerchantOrderId(appId, merchantOrderId); From 4212c8aed8f74cb19a8163cb74f1158b793d12e1 Mon Sep 17 00:00:00 2001 From: wuKong Date: Mon, 24 Nov 2025 17:37:22 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix(pay):=E4=BF=AE=E5=A4=8D=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E8=AE=A2=E5=8D=95=E5=90=8C=E6=AD=A5=E5=90=8E=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=8F=82=E6=95=B0=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复了同步支付订单后查询参数传错的问题 - 将错误的 id 参数替换为正确的 order.getId() 参数 - 确保同步后能正确获取最新的订单状态 --- .../module/pay/controller/app/order/AppPayOrderController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/controller/app/order/AppPayOrderController.java b/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/controller/app/order/AppPayOrderController.java index 8fa78306e..51b3bec09 100644 --- a/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/controller/app/order/AppPayOrderController.java +++ b/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/controller/app/order/AppPayOrderController.java @@ -74,7 +74,7 @@ public class AppPayOrderController { if (Boolean.TRUE.equals(sync) && PayOrderStatusEnum.isWaiting(order.getStatus())) { payOrderService.syncOrderQuietly(order.getId()); // 重新查询,因为同步后,可能会有变化 - order = payOrderService.getOrder(id); + order = payOrderService.getOrder(order.getId()); } return success(BeanUtils.toBean(order, PayOrderRespVO.class)); } From 76380b5e5d6e2719bc63e942337fb1230f768829 Mon Sep 17 00:00:00 2001 From: wuKong Date: Mon, 24 Nov 2025 18:36:55 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=F0=9F=8E=A8=20fix(pay):=E5=A4=84=E7=90=86?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/pay/controller/app/order/AppPayOrderController.java | 2 +- .../yudao/module/pay/service/order/PayOrderServiceImpl.java | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/controller/app/order/AppPayOrderController.java b/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/controller/app/order/AppPayOrderController.java index 51b3bec09..1de6ca915 100644 --- a/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/controller/app/order/AppPayOrderController.java +++ b/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/controller/app/order/AppPayOrderController.java @@ -55,7 +55,7 @@ public class AppPayOrderController { @RequestParam(value = "no", required = false) String no, @RequestParam(value = "sync", required = false) Boolean sync) { PayOrderDO order = null; - if (CharSequenceUtil.isNotEmpty(no)){ + if (CharSequenceUtil.isNotEmpty(no)) { order = payOrderService.getOrder(no); } if (ObjUtil.isNull(order) && ObjUtil.isNotNull(id)) { diff --git a/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java b/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java index 41eee7989..8a9bebde8 100755 --- a/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java +++ b/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java @@ -78,10 +78,12 @@ public class PayOrderServiceImpl implements PayOrderService { public PayOrderDO getOrder(Long id) { return orderMapper.selectById(id); } + @Override public PayOrderDO getOrder(String no) { return orderMapper.selectByNo(no); } + @Override public PayOrderDO getOrder(Long appId, String merchantOrderId) { return orderMapper.selectByAppIdAndMerchantOrderId(appId, merchantOrderId);