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);