diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java index 0e0aefe9..33f1121b 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java @@ -295,15 +295,25 @@ public class OrderDetailServiceImpl implements OrderDetailService { public synchronized void finish(Long orderDetailId) throws BaseAdaPayException { // 校验订单 OrderDetail orderDetail = selectById(orderDetailId); - Assert.notNull(orderDetail, "找不到对应的子订单"); + if(orderDetail == null){ + throw new BaseException("找不到对应的子订单"); + } Assert.isTrue(!orderDetail.getOrderStatus().equals(OrderStatus.FINISH.code()), "订单已经是完成状态"); FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(orderDetail.getOrderMasterId()); - Assert.notNull(financialMaster, "找不到主财务单"); + if(financialMaster == null){ + throw new BaseException("找不到主财务单"); + } PaymentDTO payment = financialMasterService.selectPaymentById(financialMaster.getPaymentId()); - Assert.notNull(payment, "找不到支付记录"); + if(payment == null){ + throw new BaseException("找不到支付记录"); + } List financialDetail = financialDetailService.selectListByOrderDetailId(orderDetailId); - Assert.notNull(financialDetail, "找不到子财务单"); - Assert.isTrue(financialDetail.get(0).getPayStatus() == 1, "订单不是“已支付”状态"); + if(financialDetail == null){ + throw new BaseException("找不到子财务单"); + } + if(financialDetail.get(0).getPayStatus() != 1){ + throw new BaseException("订单不是“已支付”状态"); + } // 更新订单状态 orderDetailMapper.updateStatus(orderDetailId, OrderStatus.FINISH.code()); // 分账账户信息 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 90ee4819..d406eea0 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 @@ -50,7 +50,7 @@ public interface FinancialMasterMapper { * @param id ID * @param payType 支付渠道 */ - void paySucceeded(@Param(value = "id") Long id, @Param(value = "payType") int payType); + void paySucceeded(@Param(value = "paymentId")String paymentId, @Param(value = "id") Long id, @Param(value = "payType") int payType); /** * 支付成功 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 addb2009..3337e9d7 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 @@ -19,6 +19,7 @@ import javax.annotation.Resource; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; +import java.util.Date; import java.util.List; import java.util.concurrent.atomic.AtomicLong; @@ -105,7 +106,13 @@ public class FinancialMasterServiceImpl implements FinancialMasterService { List result = financialMasterMapper.selectFinancialMasterList(param); if(!CollectionUtils.isEmpty(result)){ financialMasterMapper.updateOrderStatus(result.get(0).getOrderMasterCode(), PayStatus.PAID.getCode()); - financialMasterMapper.paySucceeded(result.get(0).getId(), payType); + financialMasterMapper.paySucceeded(paymentId, result.get(0).getId(), payType); + FinancialDetail request = new FinancialDetail(); + request.setFinancialMasterId(result.get(0).getId()); + request.setPayStatus(PayStatus.PAID.getCode()); + request.setPayType(payType); + request.setPayTime(new Date()); + financialDetailService.updateByFinancialMasterId(request); }else { logger.error("原单不存在!"); } diff --git a/ghy-payment/src/main/java/com/ghy/payment/service/impl/PayCallbackService.java b/ghy-payment/src/main/java/com/ghy/payment/service/impl/PayCallbackService.java index 5e7c3288..397c0535 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/service/impl/PayCallbackService.java +++ b/ghy-payment/src/main/java/com/ghy/payment/service/impl/PayCallbackService.java @@ -17,6 +17,7 @@ import com.ghy.payment.service.FinancialMasterService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; @@ -44,6 +45,7 @@ public class PayCallbackService implements CallBackService { FinancialChangeRecordService financialChangeRecordService; @Override + @Transactional(rollbackFor = Exception.class) public void onCallback(Event event) { logger.info("支付回调: {}", event); String data = event.getData(); diff --git a/ghy-payment/src/main/resources/mapper/financial/FinancialMasterMapper.xml b/ghy-payment/src/main/resources/mapper/financial/FinancialMasterMapper.xml index 448ade9b..de26a245 100644 --- a/ghy-payment/src/main/resources/mapper/financial/FinancialMasterMapper.xml +++ b/ghy-payment/src/main/resources/mapper/financial/FinancialMasterMapper.xml @@ -111,6 +111,7 @@ UPDATE financial_master SET + payment_id = #{paymentId}, pay_status = 1 , pay_type = #{payType}, pay_time = SYSDATE(),