From 6771fff413935485b5dce61769f133a44533d15c Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期六, 30 五月 2026 14:35:14 +0800
Subject: [PATCH] fix
---
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java | 72 +++++++++++++++++++++++++++++++-----
1 files changed, 62 insertions(+), 10 deletions(-)
diff --git a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
index 25fc948..aca4f4d 100644
--- a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
+++ b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -1,6 +1,5 @@
package com.stylefeng.guns.modular.specialTrain.server.impl;
-import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -1965,6 +1964,7 @@
@Override
public ResultUtil payPrivateCarOrder(Integer payType, Integer orderId, Integer couponId, Integer type) throws Exception {
+ System.out.println("!!!" + payType + "!!!!" + orderId + "!!!" + couponId);
OrderPrivateCar orderPrivateCar = this.selectById(orderId);
if (orderPrivateCar.getState() == 8 || orderPrivateCar.getState() == 9) {
return ResultUtil.error("订单已完成支付,不允许重复支付", "");
@@ -1975,6 +1975,8 @@
if (Integer.valueOf(1).equals(orderPrivateCar.getPaymentMode()) && Integer.valueOf(4).equals(orderPrivateCar.getPrepayStage())) {
return ResultUtil.error("订单退款处理中,请等待退款完成", "");
}
+ normalizePrivateCarPrepayFirstStageBeforePay(orderPrivateCar);
+ System.out.println("!!!" + orderPrivateCar + "!!!!");
Integer uid = orderPrivateCar.getUserId();
Double orderMoney = (2 == orderPrivateCar.getAbnormal() && 2 == orderPrivateCar.getAbnormalStatus() ? orderPrivateCar.getResponsibilityMoney().doubleValue() : orderPrivateCar.getOrderMoney());
UserInfo userInfo = userInfoService.selectById(uid);
@@ -2028,11 +2030,19 @@
}
}
orderMoney = orderMoney < 0 ? 0 : orderMoney;
- ResultUtil prepaySettleResult = settlePrivateCarPrepayIfNoSecondPay(orderPrivateCar, userInfo, orderMoney);
- if (prepaySettleResult != null) {
- return prepaySettleResult;
+ orderMoney = new BigDecimal(orderMoney).setScale(2, RoundingMode.HALF_UP).doubleValue();
+ boolean isPrepayFirstPayBeforeCreate = isPrivateCarPrepayFirstStage(orderPrivateCar);
+ if (!isPrepayFirstPayBeforeCreate) {
+ ResultUtil prepaySettleResult = settlePrivateCarPrepayIfNoSecondPay(orderPrivateCar, userInfo, orderMoney);
+ if (prepaySettleResult != null) {
+ return prepaySettleResult;
+ }
+ if (orderPrivateCar.getPrepayStage() == 3){
+ orderMoney = orderMoney - orderPrivateCar.getEstimateAmount();
+ }
}
- orderMoney = getPrivateCarPrepayFinalPayAmount(orderPrivateCar, orderMoney);
+ orderMoney = orderMoney < 0 ? 0 : orderMoney;
+ orderMoney = new BigDecimal(orderMoney).setScale(2, RoundingMode.HALF_UP).doubleValue();
if (payType == 1) {//微信支付
String outTradeNo = orderId + "_1_" + UUIDUtil.getRandomCode(5);
JSONObject response = cbyzxOrderPayHelper.createOrder(orderPrivateCar.getUserId(), userInfo.getAppletsOpenId(), outTradeNo, orderMoney);
@@ -2057,9 +2067,13 @@
boolean isPrepayFirstStage = isPrivateCarPrepayFirstStage(orderPrivateCar);
boolean isPrepaySpreadStage = isPrivateCarPrepaySpreadStage(orderPrivateCar);
+ System.out.println("!!!" + isPrepayFirstStage + "!!!!" + isPrepaySpreadStage + "!!!" + orderPrivateCar);
if (isPrepayFirstStage) {
handlePrivateCarPrepayFirstPaid(orderPrivateCar, userInfo, orderMoney, 3);
return resultUtil;
+ }
+ if (Integer.valueOf(1).equals(orderPrivateCar.getPaymentMode()) && !isPrepaySpreadStage) {
+ return ResultUtil.error("预付阶段异常,请刷新后重试", "");
}
OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
@@ -2128,6 +2142,7 @@
if (Integer.valueOf(1).equals(orderPrivateCar.getPaymentMode()) && Integer.valueOf(4).equals(orderPrivateCar.getPrepayStage())) {
return ResultUtil.error("订单退款处理中,请等待退款完成", new ArrayList<>());
}
+ normalizePrivateCarPrepayFirstStageBeforePay(orderPrivateCar);
Integer uid = orderPrivateCar.getUserId();
Double orderMoney = (2 == orderPrivateCar.getAbnormal() && 2 == orderPrivateCar.getAbnormalStatus() ? orderPrivateCar.getResponsibilityMoney().doubleValue() : orderPrivateCar.getOrderMoney());
@@ -2290,15 +2305,21 @@
orderMoney = v;
}
}
+ if (orderPrivateCar.getPrepayStage() == 3){
+ orderMoney = orderMoney - orderPrivateCar.getEstimateAmount();
+ }
orderMoney = new BigDecimal(orderMoney).setScale(2, RoundingMode.HALF_UP).doubleValue();
System.out.println("!!!" + orderMoney + "!!!!");
orderMoney = orderMoney < 0 ? 0 : orderMoney;
- ResultUtil prepaySettleResult = settlePrivateCarPrepayIfNoSecondPay(orderPrivateCar, userInfo, orderMoney);
- if (prepaySettleResult != null) {
- return prepaySettleResult;
+ boolean isPrepayFirstPayBeforeCreate = isPrivateCarPrepayFirstStage(orderPrivateCar);
+ if (!isPrepayFirstPayBeforeCreate) {
+ ResultUtil prepaySettleResult = settlePrivateCarPrepayIfNoSecondPay(orderPrivateCar, userInfo, orderMoney);
+ if (prepaySettleResult != null) {
+ return prepaySettleResult;
+ }
+ orderMoney = getPrivateCarPrepayFinalPayAmount(orderPrivateCar, orderMoney);
}
- orderMoney = getPrivateCarPrepayFinalPayAmount(orderPrivateCar, orderMoney);
- if (!isPrivateCarPrepaySpreadStage(orderPrivateCar)) {
+ if (!isPrepayFirstPayBeforeCreate && !isPrivateCarPrepaySpreadStage(orderPrivateCar)) {
orderPrivateCar.setPayMoney(orderMoney);
}
if (payType == 1) {//微信支付
@@ -2356,9 +2377,13 @@
boolean isPrepayFirstStage = isPrivateCarPrepayFirstStage(orderPrivateCar);
boolean isPrepaySpreadStage = isPrivateCarPrepaySpreadStage(orderPrivateCar);
+ System.out.println("!!!" + isPrepayFirstStage + "!!!!" + isPrepaySpreadStage + "!!!" + orderPrivateCar);
if (isPrepayFirstStage) {
handlePrivateCarPrepayFirstPaid(orderPrivateCar, userInfo, orderMoney, 3);
return resultUtil;
+ }
+ if (Integer.valueOf(1).equals(orderPrivateCar.getPaymentMode()) && !isPrepaySpreadStage) {
+ return ResultUtil.error("预付阶段异常,请刷新后重试");
}
OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
@@ -2579,6 +2604,28 @@
&& Integer.valueOf(1).equals(orderPrivateCar.getPrepayStage());
}
+ private void normalizePrivateCarPrepayFirstStageBeforePay(OrderPrivateCar orderPrivateCar) throws Exception {
+ if (orderPrivateCar == null || !Integer.valueOf(7).equals(orderPrivateCar.getState())) {
+ return;
+ }
+ if (Integer.valueOf(1).equals(orderPrivateCar.getPrepayStage())
+ || Integer.valueOf(3).equals(orderPrivateCar.getPrepayStage())
+ || Integer.valueOf(4).equals(orderPrivateCar.getPrepayStage())
+ || Integer.valueOf(5).equals(orderPrivateCar.getPrepayStage())) {
+ return;
+ }
+ if (Integer.valueOf(1).equals(orderPrivateCar.getPaymentMode())) {
+ orderPrivateCar.setPrepayStage(1);
+ return;
+ }
+ PaymentRecord unpaidRecord = paymentRecordService.query(1, orderPrivateCar.getUserId(), 1,
+ orderPrivateCar.getId(), 1, null, 1);
+ if (unpaidRecord != null && orderPrivateCar.getEstimateAmount() != null && orderPrivateCar.getEstimateAmount() > 0) {
+ orderPrivateCar.setPaymentMode(1);
+ orderPrivateCar.setPrepayStage(1);
+ }
+ }
+
private boolean isPrivateCarPrepaySpreadStage(OrderPrivateCar orderPrivateCar) {
return orderPrivateCar != null
&& Integer.valueOf(1).equals(orderPrivateCar.getPaymentMode())
@@ -2672,6 +2719,11 @@
Double displayAmount = getPrivateCarPrepayDisplayPayAmount(orderPrivateCar, finalAmount);
map.put("orderMoney", finalAmount);
map.put("payMoney", displayAmount);
+ if (orderPrivateCar.getPrepayStage() == 3) {
+ map.put("payMoney", new BigDecimal(finalAmount)
+ .subtract(new BigDecimal(orderPrivateCar.getEstimateAmount() != null ? orderPrivateCar.getEstimateAmount() : 0))
+ .setScale(2, RoundingMode.HALF_UP));
+ }
}
private ResultUtil settlePrivateCarPrepayIfNoSecondPay(OrderPrivateCar orderPrivateCar, UserInfo userInfo, Double finalAmount) throws Exception {
--
Gitblit v1.7.1