From 631311fdd5a2c33cf6833af0938e57853aa5f7a6 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期一, 11 五月 2026 18:37:44 +0800
Subject: [PATCH] fix bugs

---
 UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java |   70 +++++++++++++++++++++++++---------
 1 files changed, 51 insertions(+), 19 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 0b3b1f4..f64e43b 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
@@ -1135,25 +1135,8 @@
 		if (orderPrivateCar.getState() >= 5 && orderPrivateCar.getState() != 11 && orderPrivateCar.getCancelType() ==2) {
 			return ResultUtil.error("订单已取消,请刷新页面");
 		}
-
-
-
-		if (!Integer.valueOf(2).equals(orderPrivateCar.getPaymentMode()) && StrUtil.isNotEmpty(orderPrivateCar.getPrepaySecondPayNo())) {
-			ResultUtil refundResult = handlePrivateCarPrepayCancelRefund(orderPrivateCar, reason, remark, uid);
-			if (refundResult != null) {
-				if (!ResultUtil.SUCCESS.equals(refundResult.getCode())) {
-					return refundResult;
-				}
-				Map<String, Object> map = new HashMap<>();
-				map.put("id", null);
-//				return ResultUtil.success(map);
-			}
-		}else if(!Integer.valueOf(2).equals(orderPrivateCar.getPaymentMode()) && StrUtil.isEmpty(orderPrivateCar.getPrepaySecondPayNo())){
-			if (orderPrivateCar.getPayMoney() != null){
-				UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
-				userInfo.setBalance(userInfo.getBalance() + orderPrivateCar.getPayMoney());
-				userInfoService.updateById(userInfo);
-			}
+		if (!Integer.valueOf(2).equals(orderPrivateCar.getPaymentMode())) {
+			handlePrivateCarPrepayCancelRefund(orderPrivateCar,reason);
 		}
 		Integer number1 = this.selectCount(new EntityWrapper<OrderPrivateCar>().eq("pid", orderPrivateCar.getPid() == null ? orderPrivateCar.getId() : orderPrivateCar.getPid()).lt("state", 6));
 		Integer number2 = this.selectCount(new EntityWrapper<OrderPrivateCar>().eq("id", orderPrivateCar.getPid() == null ? orderPrivateCar.getId() : orderPrivateCar.getPid()).lt("state", 6));
@@ -2895,6 +2878,55 @@
 		return orderPrivateCar != null && Integer.valueOf(1).equals(orderPrivateCar.getPaymentMode());
 	}
 
+	private void handlePrivateCarPrepayCancelRefund(OrderPrivateCar orderPrivateCar, String reason) throws Exception {
+		if (!isPrivateCarPrepayMode(orderPrivateCar)) {
+			return;
+		}
+		if (Integer.valueOf(3).equals(orderPrivateCar.getPayType())) {
+			Double refundAmount = orderPrivateCar.getPayMoney();
+			if (refundAmount == null || refundAmount <= 0) {
+				throw new RuntimeException("余额先付订单退款金额异常");
+			}
+			UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
+			if (userInfo == null) {
+				throw new RuntimeException("用户信息不存在,无法退款");
+			}
+			userInfo.setBalance(new BigDecimal(null != userInfo.getBalance() ? userInfo.getBalance() : 0)
+					.add(new BigDecimal(refundAmount)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+			userInfoService.updateById(userInfo);
+			restorePrivateCarBenefits(orderPrivateCar);
+			transactionDetailsService.saveData(orderPrivateCar.getUserId(), "快车取消订单退款", refundAmount, 1, 1, 1, 1, orderPrivateCar.getId());
+			orderPrivateCar.setState(10);
+			orderPrivateCar.setPrepayStage(5);
+			orderPrivateCar.setPrepayRefundNo("BALANCE_REFUND_1_" + orderPrivateCar.getId() + "_" + ToolUtil.getRandomString(5));
+			orderPrivateCar.setPrepayRefundAmount(refundAmount);
+			orderPrivateCar.setPrepayRefundTime(new Date());
+			this.updateById(orderPrivateCar);
+			systemNoticeService.addSystemNotice(1, "您的快车余额先付订单已取消,退款已退回账户余额,请注意查收。", orderPrivateCar.getUserId(), 1);
+		} else {
+			String outRequestNo = orderPrivateCar.getPrepaySecondPayNo();
+			if (ToolUtil.isEmpty(outRequestNo)) {
+				throw new RuntimeException("微信先付订单缺少支付单号,无法关闭支付单");
+			}
+			Double refundAmount = orderPrivateCar.getPayMoney();
+			if (refundAmount == null || refundAmount <= 0) {
+				throw new RuntimeException("微信先付订单退款金额异常");
+			}
+			CbyzxPayUtil.ClosePayOrderRequest request = new CbyzxPayUtil.ClosePayOrderRequest();
+			request.setOutRequestNo(outRequestNo);
+			request.setRefundOutRequestNo(buildPrepayRefundOutNo(orderPrivateCar.getId()));
+			request.setRefundAmount(toFen(refundAmount));
+			request.setRefundDesc(ToolUtil.isNotEmpty(reason) ? reason : "快车订单取消退款");
+			JSONObject response = CbyzxPayUtil.closePayOrder(request);
+			if (!isPrivateCarPrepayRefundSuccess(response)) {
+				throw new RuntimeException(extractPrivateCarRefundMessage(response));
+			}
+			restorePrivateCarBenefits(orderPrivateCar);
+			transactionDetailsService.saveData(orderPrivateCar.getUserId(), "快车取消订单退款", refundAmount, 1, 1, 1, 1, orderPrivateCar.getId());
+			systemNoticeService.addSystemNotice(1, "您的快车微信先付订单已取消,退款已原路退回,请注意查收。", orderPrivateCar.getUserId(), 1);
+		}
+	}
+
 	private ResultUtil handlePrivateCarPrepayCancelRefund(OrderPrivateCar orderPrivateCar, String reason, String remark, Integer uid) throws Exception {
 		System.out.println("快车退款!!!!");
 		if (!isPrivateCarPrepayMode(orderPrivateCar)) {

--
Gitblit v1.7.1