From bd3bb82dbdcccd6b3d1f6f24fcd1397c38b6dd3b Mon Sep 17 00:00:00 2001 From: re-aoharu Date: Tue, 16 Apr 2024 11:01:25 +0800 Subject: [PATCH] =?UTF-8?q?:feat:=20=E6=9B=BF=E6=8D=A2paymentId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/order/PayOrderController.java | 17 +++++++++++++++-- .../alipay/service/AliPayRefundService.java | 4 ++-- .../order/pay/dao/PayChannelOrderManager.java | 8 ++++---- .../pay/service/PayChannelOrderService.java | 6 +++--- .../order/pay/service/PayOrderQueryService.java | 6 +++++- .../refund/service/RefundOrderService.java | 1 + .../payment/close/service/PayCloseService.java | 2 +- .../notice/service/ClientNoticeService.java | 2 +- .../core/payment/pay/service/PayService.java | 2 +- .../payment/refund/service/RefundService.java | 4 ++-- .../repair/service/PayRepairService.java | 2 +- .../repair/service/RefundRepairService.java | 2 +- .../dto/order/pay/PayChannelOrderDto.java | 2 +- .../dto/order/pay/PayOrderDetailDto.java | 12 ++++++++++++ .../service/dto/order/pay/PayOrderDto.java | 4 ++++ .../dto/order/refund/RefundOrderDto.java | 5 +++-- 16 files changed, 57 insertions(+), 22 deletions(-) create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDetailDto.java diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/PayOrderController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/PayOrderController.java index 60fa19978..b9d3a9c61 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/PayOrderController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/PayOrderController.java @@ -15,6 +15,7 @@ import cn.bootx.platform.daxpay.service.core.order.pay.service.PayOrderQueryServ import cn.bootx.platform.daxpay.service.core.payment.close.service.PayCloseService; import cn.bootx.platform.daxpay.service.core.payment.sync.service.PaySyncService; import cn.bootx.platform.daxpay.service.dto.order.pay.PayChannelOrderDto; +import cn.bootx.platform.daxpay.service.dto.order.pay.PayOrderDetailDto; import cn.bootx.platform.daxpay.service.dto.order.pay.PayOrderDto; import cn.bootx.platform.daxpay.service.dto.order.pay.PayOrderExtraDto; import cn.bootx.platform.daxpay.service.param.order.PayOrderQuery; @@ -59,6 +60,18 @@ public class PayOrderController { .orElseThrow(() -> new DataNotExistException("支付订单不存在")); return Res.ok(order); } + @Operation(summary = "查询订单详情") + @GetMapping("/findByOrderNo") + public ResResult findByOrderNo(String orderNo){ + PayOrderDto order = queryService.findByOrderNo(orderNo) + .map(PayOrder::toDto) + .orElseThrow(() -> new DataNotExistException("支付订单不存在")); + PayOrderDetailDto detailDto=new PayOrderDetailDto(); + detailDto.setPayOrder(order); + detailDto.setPayOrderExtra(payOrderExtraService.findById(order.getId()).toDto()); + detailDto.setPayChannelOrder(payChannelOrderService.findAllByPaymentId(orderNo)); + return Res.ok(detailDto); + } @Operation(summary = "查询支付订单扩展信息") @GetMapping("/getExtraById") @@ -68,8 +81,8 @@ public class PayOrderController { @Operation(summary = "查询支付订单关联支付通道订单") @GetMapping("/listByChannel") - public ResResult> listByChannel(Long paymentId){ - return Res.ok(payChannelOrderService.findAllByPaymentId(paymentId)); + public ResResult> listByChannel(String orderNo){ + return Res.ok(payChannelOrderService.findAllByPaymentId(orderNo)); } @Operation(summary = "查询支付通道订单详情") @GetMapping("/getChannel") diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayRefundService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayRefundService.java index a919ee75b..b7a6cdf22 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayRefundService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayRefundService.java @@ -32,8 +32,8 @@ public class AliPayRefundService { public void refund(RefundOrder refundOrder, int amount) { RefundLocal refundInfo = PaymentContextLocal.get().getRefundInfo(); AlipayTradeRefundModel refundModel = new AlipayTradeRefundModel(); - refundModel.setOutTradeNo(String.valueOf(refundOrder.getRefundNo())); - refundModel.setOutRequestNo(String.valueOf(refundOrder.getId())); + refundModel.setOutTradeNo(String.valueOf(refundOrder.getOrderNo())); + refundModel.setOutRequestNo(String.valueOf(refundOrder.getRefundNo())); // 金额转换 String refundAmount = String.valueOf(amount*0.01); refundModel.setRefundAmount(refundAmount); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/dao/PayChannelOrderManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/dao/PayChannelOrderManager.java index 19cac6310..18c343f8d 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/dao/PayChannelOrderManager.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/dao/PayChannelOrderManager.java @@ -22,8 +22,8 @@ public class PayChannelOrderManager extends BaseManager findAllByPaymentId(Long paymentId){ - return findAllByField(PayChannelOrder::getPaymentId,paymentId); + public List findAllByPaymentId(String orderNo){ + return findAllByField(PayChannelOrder::getPaymentId,orderNo); } /** @@ -48,9 +48,9 @@ public class PayChannelOrderManager extends BaseManager findAllByPaymentId(Long paymentId){ - return ResultConvertUtil.dtoListConvert(channelOrderManager.findAllByPaymentId(paymentId)); + public List findAllByPaymentId(String orderNo){ + return ResultConvertUtil.dtoListConvert(channelOrderManager.findAllByPaymentId(orderNo)); } /** @@ -81,7 +81,7 @@ public class PayChannelOrderService { .setRefundableBalance(payChannelParam.getAmount()) .setChannelExtra(channelParamStr) .setStatus(payStatus.getCode()); - channelOrderManager.deleteByPaymentIdAndAsync(payOrder.getId()); + channelOrderManager.deleteByPaymentIdAndAsync(payOrder.getOrderNo()); channelOrderManager.save(payChannelOrder); payInfo.getPayChannelOrders().add(payChannelOrder); } else { diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/service/PayOrderQueryService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/service/PayOrderQueryService.java index ce447c989..aa25f1c87 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/service/PayOrderQueryService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/service/PayOrderQueryService.java @@ -90,7 +90,7 @@ public class PayOrderQueryService { .orElseThrow(() -> new PayFailureException("支付订单不完整")); // 查询通道数据 - List orderChannelList = payChannelOrderManager.findAllByPaymentId(payOrder.getId()); + List orderChannelList = payChannelOrderManager.findAllByPaymentId(payOrder.getOrderNo()); List channels = orderChannelList.stream() .map(PayOrderConvert.CONVERT::convertResult) @@ -104,4 +104,8 @@ public class PayOrderQueryService { return payOrderResult; } + + public Optional findByOrderNo(String orderNo) { + return payOrderManager.findByField(PayOrder::getOrderNo,orderNo); + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/refund/service/RefundOrderService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/refund/service/RefundOrderService.java index 9e9835f9a..2368ec3ba 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/refund/service/RefundOrderService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/refund/service/RefundOrderService.java @@ -139,6 +139,7 @@ public class RefundOrderService { refundParam.setReason(param.getReason()); refundParam.setReqTime(LocalDateTime.now()); refundParam.setClientIp(ip); + refundParam.setRefundAll(true); // 手动初始化上下文 paymentAssistService.initContext(refundParam); // 初始化接口信息为统一退款 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/close/service/PayCloseService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/close/service/PayCloseService.java index 175b2d9c6..aadd73b92 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/close/service/PayCloseService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/close/service/PayCloseService.java @@ -86,7 +86,7 @@ public class PayCloseService { } // 0.基础数据准备 - Map orderChannelMap = payChannelOrderManager.findAllByPaymentId(payOrder.getId()) + Map orderChannelMap = payChannelOrderManager.findAllByPaymentId(payOrder.getOrderNo()) .stream() .collect(Collectors.toMap(PayChannelOrder::getChannel, Function.identity(), CollectorsFunction::retainLatest)); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/notice/service/ClientNoticeService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/notice/service/ClientNoticeService.java index 5228723a3..9c31c9e9b 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/notice/service/ClientNoticeService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/notice/service/ClientNoticeService.java @@ -114,7 +114,7 @@ public class ClientNoticeService { // 通道支付订单为空则进行查询 if (CollUtil.isEmpty(channelOrders)){ - channelOrders = payChannelOrderManager.findAllByPaymentId(order.getId()); + channelOrders = payChannelOrderManager.findAllByPaymentId(order.getOrderNo()); } // 创建通知任务并保存 ClientNoticeTask task = clientNoticeAssistService.buildPayTask(order, orderExtra, channelOrders); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java index 1f57d35d2..018139bdc 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java @@ -453,7 +453,7 @@ public class PayService { // 如果支付完成 发送通知 if (Objects.equals(payOrder.getStatus(), SUCCESS.getCode())){ // 查询通道订单 - List payChannelOrders = payChannelOrderManager.findAllByPaymentId(payOrder.getId()); + List payChannelOrders = payChannelOrderManager.findAllByPaymentId(payOrder.getOrderNo()); clientNoticeService.registerPayNotice(payOrder, payOrderExtra, payChannelOrders); } return PayBuilder.buildPayResultByPayOrder(payOrder); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/refund/service/RefundService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/refund/service/RefundService.java index 5ea3e7d2f..ce5dff95b 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/refund/service/RefundService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/refund/service/RefundService.java @@ -103,7 +103,7 @@ public class RefundService { refundAssistService.checkAndDisposeParam(param, payOrder); // 组装退款参数, 处理全部退款和简单退款情况 - List payChannelOrders = payChannelOrderManager.findAllByPaymentId(payOrder.getId()); + List payChannelOrders = payChannelOrderManager.findAllByPaymentId(payOrder.getOrderNo()); // 是否全部退款 if (param.isRefundAll()){ // 全部退款根据支付订单的退款信息构造退款参数 @@ -249,7 +249,7 @@ public class RefundService { .findAllByRefundId(refundOrder.getId()); PayOrder payOrder = payOrderService.findById(refundOrder.getId()) .orElseThrow(() -> new DataNotExistException("未查找到支付订单")); - List payChannelOrders = payChannelOrderManager.findAllByPaymentId(payOrder.getId()); + List payChannelOrders = payChannelOrderManager.findAllByPaymentId(payOrder.getOrderNo()); Map orderChannelMap = payChannelOrders.stream() .collect(Collectors.toMap(PayChannelOrder::getChannel, Function.identity(), CollectorsFunction::retainLatest)); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/repair/service/PayRepairService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/repair/service/PayRepairService.java index cd74d9228..6cede96e5 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/repair/service/PayRepairService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/repair/service/PayRepairService.java @@ -62,7 +62,7 @@ public class PayRepairService { } // 1. 获取支付单管理的通道支付订单 - Map channelOrderMap = channelOrderManager.findAllByPaymentId(order.getId()) + Map channelOrderMap = channelOrderManager.findAllByPaymentId(order.getOrderNo()) .stream() .collect(Collectors.toMap(PayChannelOrder::getChannel, Function.identity(), CollectorsFunction::retainLatest)); List channels = new ArrayList<>(channelOrderMap.keySet()); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/repair/service/RefundRepairService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/repair/service/RefundRepairService.java index f9f91aff0..f39f82d06 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/repair/service/RefundRepairService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/repair/service/RefundRepairService.java @@ -76,7 +76,7 @@ public class RefundRepairService { PayOrder payOrder = payOrderQueryService.findById(refundOrder.getId()) .orElseThrow(() -> new RuntimeException("支付单不存在")); // 关联支付通道支付单 - Map payChannelOrderMap = payChannelOrderManager.findAllByPaymentId(refundOrder.getId()) + Map payChannelOrderMap = payChannelOrderManager.findAllByPaymentId(refundOrder.getOrderNo()) .stream() .collect(Collectors.toMap(PayChannelOrder::getChannel, Function.identity(), CollectorsFunction::retainLatest)); // 异步通道退款单 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayChannelOrderDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayChannelOrderDto.java index b5c4f88b9..49add3939 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayChannelOrderDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayChannelOrderDto.java @@ -21,7 +21,7 @@ import java.time.LocalDateTime; public class PayChannelOrderDto extends BaseDto { @Schema(description = "支付id") - private Long paymentId; + private String paymentId; @Schema(description = "异步支付方式") private boolean async; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDetailDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDetailDto.java new file mode 100644 index 000000000..ebfc1fc40 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDetailDto.java @@ -0,0 +1,12 @@ +package cn.bootx.platform.daxpay.service.dto.order.pay; + +import lombok.Data; + +import java.util.List; + +@Data +public class PayOrderDetailDto { + private PayOrderDto payOrder; + private PayOrderExtraDto payOrderExtra; + private List payChannelOrder; +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java index e44e1f77e..c6935e64a 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java @@ -24,6 +24,10 @@ public class PayOrderDto extends BaseDto { @Schema(description = "关联的业务号") private String businessNo; + /** 支付网关订单号 */ + @Schema(description = "支付网关订单号") + private String orderNo; + /** 标题 */ @Schema(description = "标题") private String title; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/refund/RefundOrderDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/refund/RefundOrderDto.java index 089f87c99..af619c398 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/refund/RefundOrderDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/refund/RefundOrderDto.java @@ -23,12 +23,13 @@ import java.time.LocalDateTime; @Schema(title = "退款记录") public class RefundOrderDto extends BaseDto { - @Schema(description = "原支付号") - private Long paymentId; @Schema(description = "原支付业务号") private String businessNo; + @Schema(description = "原支付订单号") + private String orderNo; + @Schema(description = "原支付标题") private String title;