From 7fff474c2ec41b47db1ac9d472099b11f77ae40b Mon Sep 17 00:00:00 2001 From: zhangli <123879394@qq.com> Date: Sun, 7 Sep 2025 18:59:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E4=BB=98=E6=88=90=E5=8A=9F=E5=A4=84?= =?UTF-8?q?=E7=90=86=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/sczx/pay/entity/OrderMain.java | 20 +++++++++++++ .../java/com/sczx/pay/entity/OrderSub.java | 29 +++++++++++++++++++ .../com/sczx/pay/mapper/OrderPayMapper.java | 11 ++++++- .../sczx/pay/service/WechatPayService.java | 3 +- .../service/impl/AlipayRentServiceImpl.java | 4 ++- .../pay/service/impl/AlipayServiceImpl.java | 8 ++--- 6 files changed, 67 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/sczx/pay/entity/OrderSub.java diff --git a/src/main/java/com/sczx/pay/entity/OrderMain.java b/src/main/java/com/sczx/pay/entity/OrderMain.java index ff65765..21955a8 100644 --- a/src/main/java/com/sczx/pay/entity/OrderMain.java +++ b/src/main/java/com/sczx/pay/entity/OrderMain.java @@ -1,9 +1,13 @@ package com.sczx.pay.entity; +import java.math.BigDecimal; + public class OrderMain { private Long orderId; private String orderNo; private String orderStatus; + private Integer overdueDays; + private BigDecimal orderAmount; public Long getOrderId() { return orderId; @@ -25,4 +29,20 @@ public class OrderMain { public void setOrderStatus(String orderStatus) { this.orderStatus = orderStatus; } + + public Integer getOverdueDays() { + return overdueDays; + } + + public void setOverdueDays(Integer overdueDays) { + this.overdueDays = overdueDays; + } + + public BigDecimal getOrderAmount() { + return orderAmount; + } + + public void setOrderAmount(BigDecimal orderAmount) { + this.orderAmount = orderAmount; + } } diff --git a/src/main/java/com/sczx/pay/entity/OrderSub.java b/src/main/java/com/sczx/pay/entity/OrderSub.java new file mode 100644 index 0000000..2a79faa --- /dev/null +++ b/src/main/java/com/sczx/pay/entity/OrderSub.java @@ -0,0 +1,29 @@ +package com.sczx.pay.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class OrderSub { + + @ApiModelProperty("子订单ID(主键)") + private Long suborderId; + + @ApiModelProperty("关联的订单ID(外键)") + private Long orderId; + + @ApiModelProperty("子订单编号") + private String suborderNo; + + @ApiModelProperty("子订单类型(首租、续租、逾期、押金、租电等)") + private String suborderType; + + @ApiModelProperty("订单金额") + private BigDecimal amount; + + @ApiModelProperty("还车时间,租车子订单") + private LocalDateTime returnTime; +} diff --git a/src/main/java/com/sczx/pay/mapper/OrderPayMapper.java b/src/main/java/com/sczx/pay/mapper/OrderPayMapper.java index 704e377..c8af110 100644 --- a/src/main/java/com/sczx/pay/mapper/OrderPayMapper.java +++ b/src/main/java/com/sczx/pay/mapper/OrderPayMapper.java @@ -1,12 +1,14 @@ package com.sczx.pay.mapper; import com.sczx.pay.entity.OrderMain; +import com.sczx.pay.entity.OrderSub; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.Date; @Mapper @@ -36,6 +38,11 @@ public interface OrderPayMapper { int updateOrderStatus(@Param("outTradeNo") String outTradeNo, @Param("orderStatus") String orderStatus); + @Update("UPDATE zc_order_main SET order_status = #{orderStatus} , end_rent_time = #{returnTime}, overdue_days = #{overdueDays}, order_amount = #{orderAmount}" + + "WHERE order_no = #{outTradeNo}") + int updateOrderStatusAndEndRentTime(@Param("outTradeNo") String outTradeNo,@Param("returnTime") LocalDateTime returnTime,@Param("overdueDays") Integer overdueDays,@Param("orderAmount") BigDecimal orderAmount, + @Param("orderStatus") String orderStatus); + @Update("update zc_order_main as om,zc_order_sub as os set os.transaction_id = #{paymentId},os.pay_status = #{payStatus}" + " where om.order_id = os.order_id and om.order_no = #{outTradeNo} and suborder_type = 'DEPOSIT'") int updateRefundOrderStatus(@Param("outTradeNo") String outTradeNo, @@ -43,7 +50,7 @@ public interface OrderPayMapper { @Param("transactionId") String transactionId); - @Select("select order_id,order_no,order_status from zc_order_main " + + @Select("select order_id,order_no,order_status,overdue_days, orderAmount from zc_order_main " + "where order_id in (select order_id from zc_order_sub " + "where payment_id = #{paymentId} and del_flag = '0')") OrderMain getOrderStatusByOrderNo(@Param("paymentId") String paymentId); @@ -60,5 +67,7 @@ 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); } diff --git a/src/main/java/com/sczx/pay/service/WechatPayService.java b/src/main/java/com/sczx/pay/service/WechatPayService.java index 3409bf5..1b9fa53 100644 --- a/src/main/java/com/sczx/pay/service/WechatPayService.java +++ b/src/main/java/com/sczx/pay/service/WechatPayService.java @@ -418,7 +418,8 @@ public class WechatPayService { logger.info("调用subOrder接口结果: {}", result); } }else if (OrderStatus.equals("RERENT_WAIT_PAY")){ - orderPayMapper.updateOrderStatus(orderMain.getOrderNo(),"RENT_ING"); + OrderSub orderSub = orderPayMapper.getSubOrderByTradeNo(outTradeNo); + orderPayMapper.updateOrderStatusAndEndRentTime(orderMain.getOrderNo(),orderSub.getReturnTime(),orderMain.getOverdueDays(),orderMain.getOrderAmount().add(orderSub.getAmount()),"RENT_ING"); } orderPayMapper.updateSubOrderPaymentStatus(outTradeNo,"WX_PAY",PayStatus.SUCCESS.getCode(),transactionId); 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 fe9855d..127a775 100644 --- a/src/main/java/com/sczx/pay/service/impl/AlipayRentServiceImpl.java +++ b/src/main/java/com/sczx/pay/service/impl/AlipayRentServiceImpl.java @@ -9,6 +9,7 @@ import com.sczx.pay.config.AlipayConf; import com.sczx.pay.dto.ali.rent.AlipayRentPayReq; import com.sczx.pay.dto.ali.rent.AlipayRentPayResponse; import com.sczx.pay.entity.OrderMain; +import com.sczx.pay.entity.OrderSub; import com.sczx.pay.entity.PayStatus; import com.sczx.pay.entity.PaymentRecord; import com.sczx.pay.mapper.OrderPayMapper; @@ -154,7 +155,8 @@ public class AlipayRentServiceImpl implements AlipayRentService { if(OrderStatus.equals("WAIT_PAY")){ orderPayMapper.updateOrderStatus(orderMain.getOrderNo(),"WAIT_PICK"); }else if (OrderStatus.equals("RERENT_WAIT_PAY")){ - orderPayMapper.updateOrderStatus(orderMain.getOrderNo(),"RENT_ING"); + OrderSub orderSub = orderPayMapper.getSubOrderByTradeNo(outTradeNo); + orderPayMapper.updateOrderStatusAndEndRentTime(orderMain.getOrderNo(),orderSub.getReturnTime(),orderMain.getOverdueDays(),orderMain.getOrderAmount().add(orderSub.getAmount()),"RENT_ING"); } orderPayMapper.updateSubOrderPaymentStatus(outTradeNo,"ZFB_PAY", PayStatus.SUCCESS.getCode(),tradeNo); return true; 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 4a76e96..19b3413 100644 --- a/src/main/java/com/sczx/pay/service/impl/AlipayServiceImpl.java +++ b/src/main/java/com/sczx/pay/service/impl/AlipayServiceImpl.java @@ -9,10 +9,7 @@ import com.alipay.api.request.*; import com.alipay.api.response.*; import com.sczx.pay.config.AlipayConf; import com.sczx.pay.dto.*; -import com.sczx.pay.entity.OrderMain; -import com.sczx.pay.entity.PayStatus; -import com.sczx.pay.entity.PaymentRecord; -import com.sczx.pay.entity.RefundRecord; +import com.sczx.pay.entity.*; import com.sczx.pay.mapper.OrderPayMapper; import com.sczx.pay.mapper.PaymentRecordMapper; import com.sczx.pay.mapper.RefundRecordMapper; @@ -333,7 +330,8 @@ public class AlipayServiceImpl implements AlipayService { if(OrderStatus.equals("WAIT_PAY")){ orderPayMapper.updateOrderStatus(orderMain.getOrderNo(),"WAIT_PICK"); }else if (OrderStatus.equals("RERENT_WAIT_PAY")){ - orderPayMapper.updateOrderStatus(orderMain.getOrderNo(),"RENT_ING"); + OrderSub orderSub = orderPayMapper.getSubOrderByTradeNo(outTradeNo); + orderPayMapper.updateOrderStatusAndEndRentTime(orderMain.getOrderNo(),orderSub.getReturnTime(),orderMain.getOverdueDays(),orderMain.getOrderAmount().add(orderSub.getAmount()),"RENT_ING"); } orderPayMapper.updateSubOrderPaymentStatus(outTradeNo,"ZFB_PAY", PayStatus.SUCCESS.getCode(),tradeNo); return true;