From bd5dbb500df2487509279ce78f2dbd8dc30ebcf0 Mon Sep 17 00:00:00 2001 From: HH Date: Wed, 29 Mar 2023 23:11:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BB=E8=AE=A2=E5=8D=95=E9=80=80=E6=AC=BE?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/OrderMasterController.java | 29 ++++++++++++------- .../service/impl/OrderMasterServiceImpl.java | 2 +- .../ghy/payment/domain/FinancialMaster.java | 3 ++ .../payment/mapper/FinancialMasterMapper.java | 7 +++++ .../service/FinancialMasterService.java | 2 ++ .../FinancialChangeRecordServiceImpl.java | 6 ++++ .../impl/FinancialMasterServiceImpl.java | 5 ++++ .../financial/FinancialMasterMapper.xml | 11 ++++++- 8 files changed, 52 insertions(+), 13 deletions(-) diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java index 311e7a11..05a7efa8 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java @@ -9,10 +9,7 @@ import com.ghy.common.core.domain.AjaxResult; import com.ghy.common.core.page.PageDomain; import com.ghy.common.core.page.TableDataInfo; import com.ghy.common.core.page.TableSupport; -import com.ghy.common.enums.BusinessType; -import com.ghy.common.enums.ImgType; -import com.ghy.common.enums.PayStatus; -import com.ghy.common.enums.RefundType; +import com.ghy.common.enums.*; import com.ghy.common.utils.ExceptionUtil; import com.ghy.common.utils.StringUtils; import com.ghy.common.utils.poi.ExcelUtil; @@ -857,11 +854,14 @@ public class OrderMasterController extends BaseController { Assert.isTrue(paid, "订单未支付"); Assert.hasText(financialMaster.getPaymentId(), "找不到订单的支付记录,请联系管理员"); - // 先改状态 后面出错就回滚 - orderMasterService.updatePayStatus(orderMasterId, PayStatus.REVERSING.getCode()); + // 改主订单的订单状态和支付状态 + orderMasterService.updateStatus(orderMasterId, OrderStatus.CANCEL.code()); + orderMasterService.updatePayStatus(orderMasterId, PayStatus.REFUND.getCode()); + // 改子订单的订单状态和支付状态 OrderDetail odUpdate = new OrderDetail(); odUpdate.setOrderMasterId(orderMasterId); - odUpdate.setPayStatus(PayStatus.REVERSING.getCode()); + odUpdate.setPayStatus(PayStatus.REFUND.getCode()); + odUpdate.setOrderStatus(OrderStatus.CANCEL.code()); orderDetailService.updateByOrderMasterId(odUpdate); // 主订单金额=订单原价+加价 @@ -881,6 +881,10 @@ public class OrderMasterController extends BaseController { PayStatus.REFUNDING.getCode().equals(fd.getPayStatus()) || PayStatus.REVERSING.getCode().equals(fd.getPayStatus())) { payMoney = payMoney.subtract(fd.getPayMoney()); + } else if (PayStatus.PAID.getCode().equals(fd.getPayStatus()) || + PayStatus.PAYED_ADD.getCode().equals(fd.getPayStatus())) { + // 修改子单状态 + financialDetailService.updatePayStatus(fd.getId(), PayStatus.REVERSING.getCode()); } } @@ -892,11 +896,14 @@ public class OrderMasterController extends BaseController { JSONObject response = adapayService.payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt, RefundType.ROM); if (AdapayStatusEnum.succeeded.code.equals(response.getString("status")) || AdapayStatusEnum.pending.code.equals(response.getString("status"))) { - // TODO 保存reverseId - return AjaxResult.success(); + // 主订单退款 直接修改主财务单状态为退款中 + String reverseId = response.getString("id"); + financialMaster.setPayStatus(PayStatus.REVERSING.getCode()); + financialMaster.setReverseId(reverseId); + financialMasterService.updateFinancialMaster(financialMaster); } else { - // TODO 重试 - return AjaxResult.error(response.getString("error_msg")); + logger.error("FM[{}]撤销支付失败: {}", financialMaster.getId(), response.toJSONString()); } + return AjaxResult.success(); } } diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java index a37ed78c..b5af134a 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java @@ -411,6 +411,6 @@ public class OrderMasterServiceImpl implements OrderMasterService { @Override public void refundSucceeded(String reverseId) { - // TODO + financialMasterService.refundSucceeded(reverseId); } } diff --git a/ghy-payment/src/main/java/com/ghy/payment/domain/FinancialMaster.java b/ghy-payment/src/main/java/com/ghy/payment/domain/FinancialMaster.java index 6b7fe9d6..16716097 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/domain/FinancialMaster.java +++ b/ghy-payment/src/main/java/com/ghy/payment/domain/FinancialMaster.java @@ -58,6 +58,9 @@ public class FinancialMaster extends BaseEntity { @Excel(name = "Adapay的唯一支付ID", cellType = Excel.ColumnType.STRING) private String paymentId; + @Excel(name = "Adapay的撤销支付ID", cellType = Excel.ColumnType.STRING) + private String reverseId; + private List ids; private Integer type; diff --git a/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialMasterMapper.java b/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialMasterMapper.java index ffa2a79e..3234f01f 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialMasterMapper.java +++ b/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialMasterMapper.java @@ -77,4 +77,11 @@ public interface FinancialMasterMapper { FinancialMaster selectByPaymentId(String paymentId); List selectByOrderMasterIds(@Param(value = "orderMasterIds") Set orderMasterIds); + + /** + * 撤销支付成功 + * + * @param reverseId 撤销支付ID + */ + void refundSucceeded(@Param("reverseId") String reverseId); } diff --git a/ghy-payment/src/main/java/com/ghy/payment/service/FinancialMasterService.java b/ghy-payment/src/main/java/com/ghy/payment/service/FinancialMasterService.java index a3fc5e52..4393a53d 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/service/FinancialMasterService.java +++ b/ghy-payment/src/main/java/com/ghy/payment/service/FinancialMasterService.java @@ -98,4 +98,6 @@ public interface FinancialMasterService { * @param paymentId 支付ID */ FinancialMaster selectByPaymentId(String paymentId); + + void refundSucceeded(String reverseId); } diff --git a/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialChangeRecordServiceImpl.java b/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialChangeRecordServiceImpl.java index ecfafb12..13a2e9ca 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialChangeRecordServiceImpl.java +++ b/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialChangeRecordServiceImpl.java @@ -3,12 +3,14 @@ package com.ghy.payment.service.impl; import com.alibaba.fastjson.JSONObject; import com.ghy.common.adapay.model.AdapayStatusEnum; import com.ghy.common.core.text.Convert; +import com.ghy.common.enums.PayStatus; import com.ghy.common.enums.RefundType; import com.ghy.payment.domain.FinancialChangeRecord; import com.ghy.payment.mapper.FinancialChangeRecordMapper; import com.ghy.payment.service.AdapayService; import com.ghy.payment.service.FinancialChangeRecordService; import com.huifu.adapay.core.exception.BaseAdaPayException; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -23,6 +25,7 @@ import java.util.StringJoiner; /** * @author clunt */ +@Slf4j @Service public class FinancialChangeRecordServiceImpl implements FinancialChangeRecordService { @@ -141,7 +144,10 @@ public class FinancialChangeRecordServiceImpl implements FinancialChangeRecordSe FinancialChangeRecord update = new FinancialChangeRecord(); update.setId(fcr.getId()); update.setReverseId(response.getString("id")); + update.setPayStatus(PayStatus.REFUNDING.getCode()); update(update); + } else { + log.error("改价单退款失败: {}", response.toJSONString()); } } diff --git a/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialMasterServiceImpl.java b/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialMasterServiceImpl.java index 45f3cbe2..95b0b9d4 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialMasterServiceImpl.java +++ b/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialMasterServiceImpl.java @@ -155,6 +155,11 @@ public class FinancialMasterServiceImpl implements FinancialMasterService { return financialMasterMapper.selectByPaymentId(paymentId); } + @Override + public void refundSucceeded(String reverseId) { + financialMasterMapper.refundSucceeded(reverseId); + } + @Override public List selectByOrderMasterIds(Set orderMasterIds) { if (CollectionUtils.isEmpty(orderMasterIds)) { diff --git a/ghy-payment/src/main/resources/mapper/financial/FinancialMasterMapper.xml b/ghy-payment/src/main/resources/mapper/financial/FinancialMasterMapper.xml index 939fe4ac..e3967394 100644 --- a/ghy-payment/src/main/resources/mapper/financial/FinancialMasterMapper.xml +++ b/ghy-payment/src/main/resources/mapper/financial/FinancialMasterMapper.xml @@ -18,6 +18,7 @@ + @@ -27,7 +28,7 @@ SELECT id, dept_id, code, order_master_id, order_master_code, total_money, discount_money, pay_money, server_money, - pay_type, pay_status, pay_time, payment_id, create_by, create_time, update_by, update_time, remark + pay_type, pay_status, pay_time, payment_id, reverse_id, create_by, create_time, update_by, update_time, remark FROM financial_master @@ -102,6 +103,7 @@ pay_time = #{payTime}, pay_money = #{payMoney}, payment_id = #{paymentId}, + reverse_id = #{reverseId}, update_by = #{updateBy}, update_time = SYSDATE() @@ -131,6 +133,13 @@ WHERE code = #{orderMasterCode} + + UPDATE financial_master SET + pay_status = 3 , + update_time = SYSDATE() + WHERE reverse_id = #{reverseId} + + INSERT INTO financial_master( dept_id,