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

Merge pull request !221 from wuKong/feat(pay)-支持通过订单号查询支付订单
This commit is contained in:
芋道源码 2025-11-24 12:09:59 +00:00 committed by Gitee
commit 21f90806f4
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
4 changed files with 30 additions and 6 deletions

View File

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

View File

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

View File

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

View File

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