From aef1dcade42d10dd8a61eae883404679e003ae27 Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Fri, 11 Apr 2025 14:39:00 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E8=AF=95=E5=88=86=E8=B4=A6=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/uniapp/customer/TempController.java | 17 +++++++++ .../java/com/jsowell/service/TempService.java | 36 +++++++++++++++++++ jsowell-admin/src/test/resources/payment_ids | 16 +++++---- .../pile/service/OrderBasicInfoService.java | 3 ++ .../impl/OrderBasicInfoServiceImpl.java | 3 +- 5 files changed, 67 insertions(+), 8 deletions(-) diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/TempController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/TempController.java index 4a042fa41..4edb3fd7e 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/TempController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/TempController.java @@ -818,4 +818,21 @@ public class TempController extends BaseController { } return response; } + + /** + * 重试分账接口 + * http://localhost:8080/temp/retryOrderSplit + */ + @PostMapping("/retryOrderSplit") + public RestApiResponse retryOrderSplit(@RequestBody QueryOrderDTO dto) { + RestApiResponse response; + try { + tempService.retrySplittingMethod(dto.getOrderCode()); + response = new RestApiResponse<>(); + } catch (Exception e) { + logger.error("重试分账接口error,", e); + response = new RestApiResponse<>(e); + } + return response; + } } diff --git a/jsowell-admin/src/main/java/com/jsowell/service/TempService.java b/jsowell-admin/src/main/java/com/jsowell/service/TempService.java index eac7e4507..1d6176bf4 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/TempService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/TempService.java @@ -998,5 +998,41 @@ public class TempService { programLogic.settleOrder(data, orderBasicInfo); } } + + /** + * 重试分账逻辑 + * 用于订单金额都已经计算好, 但是没有分账, 用来重新执行分账 + */ + public void retrySplittingMethod(String orderCode) { + if (StringUtils.isBlank(orderCode)) { + return; + } + // 查询数据 + OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode); + if (orderBasicInfo == null) { + return; + } + OrderDetail orderDetail = orderBasicInfoService.getOrderDetailByOrderCode(orderCode); + if (orderDetail == null) { + return; + } + + // 组装请求dto 组装after参数 + AfterSettleOrderDTO afterSettleOrderDTO = AfterSettleOrderDTO.builder() + .orderCode(orderBasicInfo.getOrderCode()) + .merchantId(orderBasicInfo.getMerchantId()) + .stationId(orderBasicInfo.getStationId()) + .orderPayAmount(orderBasicInfo.getPayAmount()) // 支付金额 + .orderConsumeAmount(orderBasicInfo.getOrderAmount()) // 消费金额 + .orderSettleAmount(orderBasicInfo.getSettleAmount()) // 结算金额 + .orderElectricityAmount(orderDetail.getTotalElectricityAmount()) // 电费金额 + .orderElectricityDiscountAmount(orderDetail.getDiscountElectricityAmount()) // 电费折扣金额 + .orderServiceAmount(orderDetail.getTotalServiceAmount()) // 服务费金额 + .orderServiceDiscountAmount(orderDetail.getDiscountServiceAmount()) // 服务费折扣金额 + .orderRefundAmount(orderBasicInfo.getRefundAmount()) // 退款金额 + .build(); + logger.info("retrySplittingMethod, afterSettleOrderDTO:{}", JSON.toJSONString(afterSettleOrderDTO)); + orderBasicInfoService.splittingMethod(afterSettleOrderDTO); + } } diff --git a/jsowell-admin/src/test/resources/payment_ids b/jsowell-admin/src/test/resources/payment_ids index e137478df..aa6854c3b 100644 --- a/jsowell-admin/src/test/resources/payment_ids +++ b/jsowell-admin/src/test/resources/payment_ids @@ -1,7 +1,9 @@ -002212024102416494410695447094223949824 -002212024102419522510695493069857738752 -002212024102423461110695551898497138688 -002212024102508132610695679550910730240 -002212024102508310310695683984625319936 -002212024102508502610695688864317952000 -002212024102513440210695762749414916096 +002212025020412234910732706124918857728 +002212025021320221410736088013681041408 +002212025021418121210736417676767436800 +002212025021710584010737395738021330944 +002212025021915430610738192095246381056 +002212025021917253410738217882149285888 +002212025022414130110739981362939670528 +002212025022712121610741038139879292928 +002212025022814322610741435803697991680 diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java index 3bc9e3817..ac7c2dc15 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java @@ -2,6 +2,7 @@ package com.jsowell.pile.service; import com.huifu.adapay.core.exception.BaseAdaPayException; import com.jsowell.adapay.dto.SplitData; +import com.jsowell.adapay.response.PaymentConfirmResponse; import com.jsowell.adapay.response.PaymentReverseResponse; import com.jsowell.adapay.vo.OrderSplitResult; import com.jsowell.common.core.domain.ykc.RealTimeMonitorData; @@ -212,6 +213,8 @@ public interface OrderBasicInfoService{ OrderSplitResult realTimeOrderSplit(AfterSettleOrderDTO afterSettleOrderDTO) throws BaseAdaPayException; + PaymentConfirmResponse splittingMethod(AfterSettleOrderDTO afterSettleOrderDTO); + /** * 计算分账数据 * @param stationSplitConfigList diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index 96a23b62d..5392039ee 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -1986,7 +1986,8 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { * 实时分账方法 * @param afterSettleOrderDTO */ - private PaymentConfirmResponse splittingMethod(AfterSettleOrderDTO afterSettleOrderDTO) { + @Override + public PaymentConfirmResponse splittingMethod(AfterSettleOrderDTO afterSettleOrderDTO) { // 结算金额 BigDecimal orderSettleAmount = afterSettleOrderDTO.getOrderSettleAmount();