From 1270288c2f474f9f871e4d3ca4ccd3c8bdc86758 Mon Sep 17 00:00:00 2001 From: bootx Date: Wed, 4 Dec 2024 22:43:23 +0800 Subject: [PATCH] =?UTF-8?q?feat(core):=20=E6=B7=BB=E5=8A=A0=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E6=94=AF=E4=BB=98=E6=96=B9=E5=BC=8F=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=94=B6=E9=93=B6=E5=8F=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 CheckoutCallTypeEnum 中新增 FROM表单支付方式 - 在 CheckoutController 中添加 getCheckoutUrl 接口 - 优化 CheckoutQueryService 中的配置查询逻辑 -简化 CheckoutService 中的支付流程 --- .../core/enums/CheckoutCallTypeEnum.java | 2 +- .../controller/unipay/CheckoutController.java | 8 +++++++ .../checkout/CheckoutQueryService.java | 6 ++++- .../service/checkout/CheckoutService.java | 22 +++---------------- 4 files changed, 17 insertions(+), 21 deletions(-) diff --git a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/CheckoutCallTypeEnum.java b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/CheckoutCallTypeEnum.java index 43c6f72a1..cca3f292e 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/CheckoutCallTypeEnum.java +++ b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/CheckoutCallTypeEnum.java @@ -21,9 +21,9 @@ public enum CheckoutCallTypeEnum { BAR_CODE("bar_code", "条码支付"), LINK("link", "跳转链接"), MINI_APP("mini_app", "小程序"), - AGGREGATE("aggregate", "聚合支付"), APP("app", "APP支付"), JSAPI("jsapi", "JSAPI"), + FROM("from", "表单方式"), ; private final String code; diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/unipay/CheckoutController.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/unipay/CheckoutController.java index 0944bfa57..d0baa6e38 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/unipay/CheckoutController.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/unipay/CheckoutController.java @@ -41,6 +41,14 @@ public class CheckoutController { return DaxRes.ok(checkoutService.creat(checkoutParam)); } + @Operation(summary = "根据订单号和收银台方式获取收银台链接") + @GetMapping("/getCheckoutUrl") + public Result getCheckoutUrl(String orderNo, String checkoutType){ + return Res.ok(checkoutService.getCheckoutUrl(orderNo, checkoutType)); + + } + + @Operation(summary = "获取收银台订单和配置信息") @GetMapping("/getOrderAndConfig") public Result getOrderAndConfig(String orderNo, String checkoutType){ diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/checkout/CheckoutQueryService.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/checkout/CheckoutQueryService.java index 8ac2ef219..0bd58d229 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/checkout/CheckoutQueryService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/checkout/CheckoutQueryService.java @@ -70,7 +70,11 @@ public class CheckoutQueryService { return groups.stream() .map(o->{ var result = CheckoutGroupConfigConvert.CONVERT.toResult(o); - result.setItems(itemGroupMap.get(o.getId()).stream().map(CheckoutItemConfigConvert.CONVERT::toResult).toList()); + List list = itemGroupMap.getOrDefault(o.getId(), new ArrayList<>()) + .stream() + .map(CheckoutItemConfigConvert.CONVERT::toResult) + .toList(); + result.setItems(list); return result; }) .toList(); diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/checkout/CheckoutService.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/checkout/CheckoutService.java index 0571779a8..3ef8db77b 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/checkout/CheckoutService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/service/checkout/CheckoutService.java @@ -9,7 +9,6 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.daxpay.core.enums.CheckoutCallTypeEnum; import org.dromara.daxpay.core.enums.CheckoutTypeEnum; -import org.dromara.daxpay.core.enums.PayStatusEnum; import org.dromara.daxpay.core.exception.ConfigNotExistException; import org.dromara.daxpay.core.exception.TradeProcessingException; import org.dromara.daxpay.core.exception.UnsupportedAbilityException; @@ -75,13 +74,9 @@ public class CheckoutService { if (Objects.isNull(payOrder)){ // 执行支付前的保存动作, 保存支付订单和扩展记录 payOrder = checkoutAssistService.createPayOrder(checkoutParam); - String checkoutUrl = this.getCheckoutUrl(payOrder.getOrderNo(), checkoutParam.getCheckoutType()); - return new CheckoutUrlResult().setUrl(checkoutUrl); - } else { - // 直接返回收银台链接 - String checkoutUrl = this.getCheckoutUrl(payOrder.getOrderNo(), checkoutParam.getCheckoutType()); - return new CheckoutUrlResult().setUrl(checkoutUrl); } + String checkoutUrl = this.getCheckoutUrl(payOrder.getOrderNo(), checkoutParam.getCheckoutType()); + return new CheckoutUrlResult().setUrl(checkoutUrl); } finally { lockTemplate.releaseLock(lock); } @@ -92,9 +87,7 @@ public class CheckoutService { */ public String getCheckoutUrl(String orderNo, String checkoutType){ CheckoutTypeEnum checkoutTypeEnum = CheckoutTypeEnum.findBuyCode(checkoutType); - PlatformConfig config = platformConfigService.getConfig(); - switch (checkoutTypeEnum) { case H5 -> { return StrUtil.format("{}/checkout/{}",config.getGatewayMobileUrl(), orderNo); @@ -123,18 +116,9 @@ public class CheckoutService { // 判断支付调用类型 CheckoutCallTypeEnum callTypeEnum = CheckoutCallTypeEnum.findBuyCode(itemConfig.getCallType()); switch (callTypeEnum) { - case QR_CODE, LINK, BAR_CODE,JSAPI -> { + case QR_CODE, LINK, BAR_CODE,JSAPI,FROM -> { return this.checkoutPay(param, payOrder); } - case AGGREGATE -> { - PlatformConfig config = platformConfigService.getConfig(); - // 直接返回手机端的聚合收银台链接 - String url = StrUtil.format("{}/aggregate/{}", config.getGatewayPcUrl(), payOrder.getOrderNo()); - PayResult payResult = new PayResult(); - payResult.setPayBody(url); - payResult.setStatus(PayStatusEnum.WAIT.getCode()); - return payResult; - } default -> throw new UnsupportedAbilityException("不支持的支付调用类型"); } }