From 6954b4d34b3f9504bba8bea7a491b78ebd825a3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E5=AE=87=E5=A5=87?= Date: Thu, 4 Sep 2025 19:33:25 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/xkt/StoreOrderController.java | 4 +-- .../xkt/vo/account/StoreRechargeReqVO.java | 2 +- .../xkt/vo/order/StoreOrderAddReqVO.java | 3 ++ .../xkt/vo/order/StoreOrderPayReqVO.java | 3 ++ .../ruoyi/xkt/dto/finance/RechargeAddDTO.java | 2 +- .../com/ruoyi/xkt/manager/PaymentManager.java | 3 +- .../manager/impl/AliPaymentMangerImpl.java | 5 +-- .../ruoyi/xkt/service/IStoreOrderService.java | 3 +- .../service/impl/StoreOrderServiceImpl.java | 34 +++++++++---------- 9 files changed, 34 insertions(+), 25 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreOrderController.java index fcd012978..3ee0690ba 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreOrderController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreOrderController.java @@ -84,7 +84,7 @@ public class StoreOrderController extends XktBaseController { dto.setOrderUserId(SecurityUtils.getUserId()); //创建订单并根据参数决定是否发起支付 StoreOrderAddResult result = storeOrderService.createOrder(dto, vo.getBeginPay(), - EPayChannel.of(vo.getPayChannel()), EPayPage.of(vo.getPayPage())); + EPayChannel.of(vo.getPayChannel()), EPayPage.of(vo.getPayPage()), vo.getReturnUrl()); //返回信息 StoreOrderPayRespVO respVO = new StoreOrderPayRespVO(result.getOrderExt().getOrder().getId(), result.getPayRtnStr()); @@ -116,7 +116,7 @@ public class StoreOrderController extends XktBaseController { //订单支付状态->支付中 StoreOrderExt orderExt = storeOrderService.preparePayOrder(vo.getStoreOrderId(), payChannel); //调用支付 - String rtnStr = paymentManager.payStoreOrder(orderExt, EPayPage.of(vo.getPayPage())); + String rtnStr = paymentManager.payStoreOrder(orderExt, EPayPage.of(vo.getPayPage()), vo.getReturnUrl()); StoreOrderPayRespVO respVO = new StoreOrderPayRespVO(vo.getStoreOrderId(), rtnStr); return success(respVO); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/account/StoreRechargeReqVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/account/StoreRechargeReqVO.java index 3ef877a2e..dd8835d7a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/account/StoreRechargeReqVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/account/StoreRechargeReqVO.java @@ -25,6 +25,6 @@ public class StoreRechargeReqVO { @ApiModelProperty(value = "支付来源[1:电脑网站 2:手机网站 3:APP]", required = true) private Integer payPage; - @ApiModelProperty(value = "支付完成后跳转url") + @ApiModelProperty(value = "支付完成后跳转url,若为空默认跳转商城首页") private String returnUrl; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/order/StoreOrderAddReqVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/order/StoreOrderAddReqVO.java index 60f822a15..a48a65a89 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/order/StoreOrderAddReqVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/order/StoreOrderAddReqVO.java @@ -101,6 +101,9 @@ public class StoreOrderAddReqVO { @ApiModelProperty(value = "支付来源[1:电脑网站 2:手机网站 3:APP]", required = true) private Integer payPage; + @ApiModelProperty(value = "支付完成后跳转url,若为空默认跳转商城首页") + private String returnUrl; + @ApiModel(value = "明细") @Data public static class Detail { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/order/StoreOrderPayReqVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/order/StoreOrderPayReqVO.java index 23ee24665..7b355ca4e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/order/StoreOrderPayReqVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/order/StoreOrderPayReqVO.java @@ -25,4 +25,7 @@ public class StoreOrderPayReqVO { @NotNull(message = "支付来源不能为空") @ApiModelProperty(value = "支付来源[1:电脑网站 2:手机网站]", required = true) private Integer payPage; + + @ApiModelProperty(value = "支付完成后跳转url,若为空默认跳转商城首页") + private String returnUrl; } diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/finance/RechargeAddDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/finance/RechargeAddDTO.java index 851047bfd..c7b642e2b 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/finance/RechargeAddDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/finance/RechargeAddDTO.java @@ -29,7 +29,7 @@ public class RechargeAddDTO { */ private EPayPage payPage; /** - * 支付完成后跳转url + * 支付完成后跳转url,若为空默认跳转商城首页 */ private String returnUrl; } diff --git a/xkt/src/main/java/com/ruoyi/xkt/manager/PaymentManager.java b/xkt/src/main/java/com/ruoyi/xkt/manager/PaymentManager.java index 483cf22ca..7aedeb9e2 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/manager/PaymentManager.java +++ b/xkt/src/main/java/com/ruoyi/xkt/manager/PaymentManager.java @@ -39,9 +39,10 @@ public interface PaymentManager { * * @param order * @param payPage + * @param returnUrl * @return 跳转页面数据/签名字符串/支付跳转链接/预支付交易会话标识(根据支付渠道&支付来源确定) */ - String payStoreOrder(StoreOrderExt order, EPayPage payPage); + String payStoreOrder(StoreOrderExt order, EPayPage payPage, String returnUrl); /** * 订单退款 diff --git a/xkt/src/main/java/com/ruoyi/xkt/manager/impl/AliPaymentMangerImpl.java b/xkt/src/main/java/com/ruoyi/xkt/manager/impl/AliPaymentMangerImpl.java index bbb021981..af10beb4a 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/manager/impl/AliPaymentMangerImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/manager/impl/AliPaymentMangerImpl.java @@ -195,14 +195,15 @@ public class AliPaymentMangerImpl implements PaymentManager, InitializingBean { } @Override - public String payStoreOrder(StoreOrderExt orderExt, EPayPage payPage) { + public String payStoreOrder(StoreOrderExt orderExt, EPayPage payPage, String returnUrl) { Assert.notNull(orderExt); Assert.notNull(payPage); if (!EPayStatus.PAYING.getValue().equals(orderExt.getOrder().getPayStatus())) { throw new ServiceException("订单[" + orderExt.getOrder().getOrderNo() + "]支付状态异常"); } return pay(orderExt.getOrder().getOrderNo(), orderExt.getOrder().getTotalAmount(), - "代发订单" + orderExt.getOrder().getOrderNo(), payPage, null, orderReturnUrl); + "代发订单" + orderExt.getOrder().getOrderNo(), payPage, null, + StrUtil.isBlank(returnUrl) ? orderReturnUrl : returnUrl); } @Override diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreOrderService.java b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreOrderService.java index f88673cbe..2dac16609 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreOrderService.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreOrderService.java @@ -26,10 +26,11 @@ public interface IStoreOrderService { * @param beginPay 是否发起支付 * @param payChannel 支付渠道 * @param payPage 支付来源 + * @param returnUrl 支付完成后跳转url,若为空默认跳转商城首页 * @return */ StoreOrderAddResult createOrder(StoreOrderAddDTO storeOrderAddDTO, boolean beginPay, EPayChannel payChannel, - EPayPage payPage); + EPayPage payPage, String returnUrl); /** * 更新订单 diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreOrderServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreOrderServiceImpl.java index 4a237052d..ce639eb21 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreOrderServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreOrderServiceImpl.java @@ -94,7 +94,7 @@ public class StoreOrderServiceImpl implements IStoreOrderService { @Transactional(rollbackFor = Exception.class) @Override public StoreOrderAddResult createOrder(StoreOrderAddDTO storeOrderAddDTO, boolean beginPay, EPayChannel payChannel, - EPayPage payPage) { + EPayPage payPage, String returnUrl) { Long orderUserId = storeOrderAddDTO.getOrderUserId(); Long storeId = storeOrderAddDTO.getStoreId(); Long expressId = storeOrderAddDTO.getExpressId(); @@ -221,7 +221,7 @@ public class StoreOrderServiceImpl implements IStoreOrderService { if (beginPay) { //发起支付 PaymentManager paymentManager = getPaymentManager(payChannel); - rtnStr = paymentManager.payStoreOrder(orderExt, payPage); + rtnStr = paymentManager.payStoreOrder(orderExt, payPage, returnUrl); } return new StoreOrderAddResult(orderExt, rtnStr); } @@ -403,7 +403,7 @@ public class StoreOrderServiceImpl implements IStoreOrderService { List spIds = detailInfos.stream().map(StoreOrderDetailInfoDTO::getStoreProdId).distinct() .collect(Collectors.toList()); Map mainPicMap = storeProductFileMapper.selectMainPicByStoreProdIdList(spIds, - FileType.MAIN_PIC.getValue(), ORDER_NUM_1).stream() + FileType.MAIN_PIC.getValue(), ORDER_NUM_1).stream() .collect(Collectors.toMap(StoreProdMainPicDTO::getStoreProdId, StoreProdMainPicDTO::getFileUrl, (o, n) -> n)); for (StoreOrderDetailInfoDTO detailInfo : detailInfos) { @@ -447,8 +447,8 @@ public class StoreOrderServiceImpl implements IStoreOrderService { return ListUtil.empty(); } Map printTimeMap = expressShippingLabelMapper.selectList(Wrappers - .lambdaQuery(ExpressShippingLabel.class) - .in(ExpressShippingLabel::getExpressWaybillNo, expressWaybillNos)) + .lambdaQuery(ExpressShippingLabel.class) + .in(ExpressShippingLabel::getExpressWaybillNo, expressWaybillNos)) .stream() .collect(Collectors.toMap(ExpressShippingLabel::getExpressWaybillNo, ExpressShippingLabel::getLastPrintTime)); @@ -487,9 +487,9 @@ public class StoreOrderServiceImpl implements IStoreOrderService { //物流信息 Map expressNameMap = expressService.getAllExpressNameMap(); Map> expressWaybillGroupMap = storeOrderDetailMapper.selectList(Wrappers - .lambdaQuery(StoreOrderDetail.class) - .eq(StoreOrderDetail::getStoreOrderId, storeOrderId) - .eq(SimpleEntity::getDelFlag, Constants.UNDELETED)) + .lambdaQuery(StoreOrderDetail.class) + .eq(StoreOrderDetail::getStoreOrderId, storeOrderId) + .eq(SimpleEntity::getDelFlag, Constants.UNDELETED)) .stream() .filter(o -> StrUtil.isNotEmpty(o.getExpressWaybillNo())) .collect(Collectors.groupingBy(StoreOrderDetail::getExpressWaybillNo)); @@ -560,7 +560,7 @@ public class StoreOrderServiceImpl implements IStoreOrderService { List spIds = orderDetailList.stream().map(StoreOrderDetailInfoDTO::getStoreProdId).distinct() .collect(Collectors.toList()); Map mainPicMap = storeProductFileMapper.selectMainPicByStoreProdIdList(spIds, - FileType.MAIN_PIC.getValue(), ORDER_NUM_1).stream() + FileType.MAIN_PIC.getValue(), ORDER_NUM_1).stream() .collect(Collectors.toMap(StoreProdMainPicDTO::getStoreProdId, StoreProdMainPicDTO::getFileUrl, (o, n) -> n)); Map> orderDetailGroup = orderDetailList @@ -1133,9 +1133,9 @@ public class StoreOrderServiceImpl implements IStoreOrderService { List afterSaleOrderIds = afterSaleOrderList.stream().map(SimpleEntity::getId) .collect(Collectors.toList()); Map> afterSaleOrderDetailGroupMap = storeOrderDetailMapper.selectList( - Wrappers.lambdaQuery(StoreOrderDetail.class) - .in(StoreOrderDetail::getStoreOrderId, afterSaleOrderIds) - .eq(SimpleEntity::getDelFlag, Constants.UNDELETED)) + Wrappers.lambdaQuery(StoreOrderDetail.class) + .in(StoreOrderDetail::getStoreOrderId, afterSaleOrderIds) + .eq(SimpleEntity::getDelFlag, Constants.UNDELETED)) .stream() .filter(o -> { if (!EOrderStatus.AFTER_SALE_COMPLETED.getValue().equals(o.getDetailStatus())) { @@ -1502,9 +1502,9 @@ public class StoreOrderServiceImpl implements IStoreOrderService { public void refundSuccess(Long storeOrderId, List storeOrderDetailIds, Long operatorId) { StoreOrder order = getAndBaseCheck(storeOrderId); Map orderDetailMap = storeOrderDetailMapper.selectList(Wrappers - .lambdaQuery(StoreOrderDetail.class) - .eq(StoreOrderDetail::getStoreOrderId, order.getId()) - .eq(SimpleEntity::getDelFlag, Constants.UNDELETED)) + .lambdaQuery(StoreOrderDetail.class) + .eq(StoreOrderDetail::getStoreOrderId, order.getId()) + .eq(SimpleEntity::getDelFlag, Constants.UNDELETED)) .stream() .collect(Collectors.toMap(SimpleEntity::getId, Function.identity())); for (Long storeOrderDetailId : storeOrderDetailIds) { @@ -1890,8 +1890,8 @@ public class StoreOrderServiceImpl implements IStoreOrderService { .collect(Collectors.toMap(StoreProductColorSize::getId, o -> o)); //下单商品档口颜色 Map scMap = storeColorMapper.selectByIds(spcsMap.values().stream() - .map(StoreProductColorSize::getStoreColorId) - .collect(Collectors.toSet())).stream() + .map(StoreProductColorSize::getStoreColorId) + .collect(Collectors.toSet())).stream() .collect(Collectors.toMap(StoreColor::getId, Function.identity())); //下单商品 List spIdList = spcsMap.values().stream()