From f2529153b57df78a37a2ea5ca53df8bad68dfb62 Mon Sep 17 00:00:00 2001 From: zhangli <123879394@qq.com> Date: Sun, 28 Sep 2025 15:55:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E7=BB=AD=E7=A7=9F=E8=BD=A6?= =?UTF-8?q?=E8=BE=86=EF=BC=8C=E8=BF=98=E8=BD=A6=E6=97=B6=E9=97=B4=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/sczx/pay/mapper/OrderPayMapper.java | 5 +++-- src/main/java/com/sczx/pay/service/WechatPayService.java | 9 ++++++--- .../com/sczx/pay/service/impl/AlipayRentServiceImpl.java | 9 ++++++--- .../com/sczx/pay/service/impl/AlipayServiceImpl.java | 9 ++++++--- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/sczx/pay/mapper/OrderPayMapper.java b/src/main/java/com/sczx/pay/mapper/OrderPayMapper.java index 6a1b551..48fd003 100644 --- a/src/main/java/com/sczx/pay/mapper/OrderPayMapper.java +++ b/src/main/java/com/sczx/pay/mapper/OrderPayMapper.java @@ -10,6 +10,7 @@ import org.apache.ibatis.annotations.Update; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; +import java.util.List; @Mapper public interface OrderPayMapper { @@ -67,8 +68,8 @@ public interface OrderPayMapper { @Select("select suborder_id from zc_order_sub where payment_id = #{paymentId} and suborder_type = 'RENTBATTEY' limit 1") Long getSubOrderIdByTradeNo(@Param("paymentId") String paymentId); - @Select("select * from zc_order_sub where payment_id = #{paymentId} order by suborder_id desc limit 1") - OrderSub getSubOrderByTradeNo(@Param("paymentId") String paymentId); + @Select("select * from zc_order_sub where payment_id = #{paymentId}") + List listSubOrderByTradeNo(@Param("paymentId") String paymentId); /** * 免押成功,更新子订单状态 diff --git a/src/main/java/com/sczx/pay/service/WechatPayService.java b/src/main/java/com/sczx/pay/service/WechatPayService.java index fe23fc8..de07842 100644 --- a/src/main/java/com/sczx/pay/service/WechatPayService.java +++ b/src/main/java/com/sczx/pay/service/WechatPayService.java @@ -27,6 +27,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -424,9 +425,11 @@ public class WechatPayService { if(OrderStatus.equals("WAIT_PAY")){ orderPayMapper.updateOrderStatus(orderMain.getOrderNo(),"WAIT_PICK"); - }else if (OrderStatus.equals("RERENT_WAIT_PAY") || OrderStatus.equals("RENT_ING")){ - OrderSub orderSub = orderPayMapper.getSubOrderByTradeNo(outTradeNo); - orderPayMapper.updateOrderStatusAndEndRentTime(orderMain.getOrderNo(),orderSub.getReturnTime(),0,orderMain.getOrderAmount().add(orderSub.getAmount()),"RENT_ING"); + }else if (OrderStatus.equals("RERENT_WAIT_PAY")){ + List orderSub = orderPayMapper.listSubOrderByTradeNo(outTradeNo); + OrderSub rentCarSubOrder = orderSub.stream().filter(x -> x.getSuborderType().equals("RENTCAR")).findFirst().orElse( null); + BigDecimal rentCarAmount = orderSub.stream().map(OrderSub::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add); + orderPayMapper.updateOrderStatusAndEndRentTime(orderMain.getOrderNo(),rentCarSubOrder.getReturnTime(),0,orderMain.getOrderAmount().add(rentCarAmount),"RENT_ING"); //发送租电订单同步 Long batterySubOrderId = orderPayMapper.getSubOrderIdByTradeNo(outTradeNo); logger.info("发送租电订单同步: {}", batterySubOrderId); diff --git a/src/main/java/com/sczx/pay/service/impl/AlipayRentServiceImpl.java b/src/main/java/com/sczx/pay/service/impl/AlipayRentServiceImpl.java index ad7e4db..cac9a7f 100644 --- a/src/main/java/com/sczx/pay/service/impl/AlipayRentServiceImpl.java +++ b/src/main/java/com/sczx/pay/service/impl/AlipayRentServiceImpl.java @@ -159,9 +159,12 @@ public class AlipayRentServiceImpl implements AlipayRentService { if(OrderStatus.equals("WAIT_PAY")){ orderPayMapper.updateOrderStatus(orderMain.getOrderNo(),"WAIT_PICK"); - }else if (OrderStatus.equals("RERENT_WAIT_PAY") || OrderStatus.equals("RENT_ING")){ - OrderSub orderSub = orderPayMapper.getSubOrderByTradeNo(outTradeNo); - orderPayMapper.updateOrderStatusAndEndRentTime(orderMain.getOrderNo(),orderSub.getReturnTime(),0,orderMain.getOrderAmount().add(orderSub.getAmount()),"RENT_ING"); + }else if (OrderStatus.equals("RERENT_WAIT_PAY")){ + List orderSub = orderPayMapper.listSubOrderByTradeNo(outTradeNo); + OrderSub rentCarSubOrder = orderSub.stream().filter(x -> x.getSuborderType().equals("RENTCAR")).findFirst().orElse( null); + BigDecimal rentCarAmount = orderSub.stream().map(OrderSub::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add); + orderPayMapper.updateOrderStatusAndEndRentTime(orderMain.getOrderNo(),rentCarSubOrder.getReturnTime(),0,orderMain.getOrderAmount().add(rentCarAmount),"RENT_ING"); + //发送租电订单同步 Long batterySubOrderId = orderPayMapper.getSubOrderIdByTradeNo(outTradeNo); log.info("发送租电订单同步: {}", batterySubOrderId); diff --git a/src/main/java/com/sczx/pay/service/impl/AlipayServiceImpl.java b/src/main/java/com/sczx/pay/service/impl/AlipayServiceImpl.java index dade062..299f130 100644 --- a/src/main/java/com/sczx/pay/service/impl/AlipayServiceImpl.java +++ b/src/main/java/com/sczx/pay/service/impl/AlipayServiceImpl.java @@ -25,6 +25,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.Date; +import java.util.List; import java.util.Map; @Slf4j @@ -551,9 +552,11 @@ public class AlipayServiceImpl implements AlipayService { if(OrderStatus.equals("WAIT_PAY")){ orderPayMapper.updateOrderStatus(orderMain.getOrderNo(),"WAIT_PICK"); - }else if (OrderStatus.equals("RERENT_WAIT_PAY") || OrderStatus.equals("RENT_ING")){ - OrderSub orderSub = orderPayMapper.getSubOrderByTradeNo(outTradeNo); - orderPayMapper.updateOrderStatusAndEndRentTime(orderMain.getOrderNo(),orderSub.getReturnTime(),0,orderMain.getOrderAmount().add(orderSub.getAmount()),"RENT_ING"); + }else if (OrderStatus.equals("RERENT_WAIT_PAY")){ + List orderSub = orderPayMapper.listSubOrderByTradeNo(outTradeNo); + OrderSub rentCarSubOrder = orderSub.stream().filter(x -> x.getSuborderType().equals("RENTCAR")).findFirst().orElse( null); + BigDecimal rentCarAmount = orderSub.stream().map(OrderSub::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add); + orderPayMapper.updateOrderStatusAndEndRentTime(orderMain.getOrderNo(),rentCarSubOrder.getReturnTime(),0,orderMain.getOrderAmount().add(rentCarAmount),"RENT_ING"); //发送租电订单同步 Long batterySubOrderId = orderPayMapper.getSubOrderIdByTradeNo(outTradeNo); log.info("发送租电订单同步: {}", batterySubOrderId);