Sfoglia il codice sorgente

!221 feat(pay): 支持通过支付订单号查询支付订单

YunaiV 8 mesi fa
parent
commit
d1b8e03b5b

+ 14 - 5
yudao-module-pay/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<PayOrderRespVO> getOrder(@RequestParam("id") Long id,
+    public CommonResult<PayOrderRespVO> 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);
         }
         // 重要:校验订单是否是当前用户,避免越权
@@ -65,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));
     }

+ 4 - 0
yudao-module-pay/src/main/java/cn/iocoder/yudao/module/pay/dal/mysql/order/PayOrderMapper.java

@@ -48,6 +48,10 @@ public interface PayOrderMapper extends BaseMapperX<PayOrderDO> {
                 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<PayOrderDO>()
                 .eq(PayOrderDO::getId, id).eq(PayOrderDO::getStatus, status));

+ 8 - 0
yudao-module-pay/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderService.java

@@ -31,6 +31,14 @@ public interface PayOrderService {
      */
     PayOrderDO getOrder(Long id);
 
+    /**
+     * 获得支付订单
+     *
+     * @param no 支付订单号
+     * @return 支付订单
+     */
+    PayOrderDO getOrder(String no);
+
     /**
      * 获得支付订单
      *

+ 5 - 0
yudao-module-pay/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java

@@ -79,6 +79,11 @@ public class PayOrderServiceImpl implements PayOrderService {
         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);