From dd45d210e2cbc60321fd3ed0c2ef5a0ba533faf5 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期日, 12 四月 2026 15:13:59 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/YueKeDuo
---
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java | 252 ++++++++++++++++++++++++++++++++++++-------------
1 files changed, 184 insertions(+), 68 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 5aa5a63..8bd328f 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
@@ -431,6 +431,7 @@
orderPrivateCar.setTotalPeopleNum(peopleNum);
orderPrivateCar.setIsReassign(1);
orderPrivateCar.setIsDelete(1);
+ orderPrivateCar.setPrepayStage(Integer.valueOf(1).equals(orderPrivateCar.getPaymentMode()) ? 1 : 0);
this.insert(orderPrivateCar);
if (orderSource == 2) {//扫码下单
@@ -506,6 +507,7 @@
orderPrivateCar.setTotalPeopleNum(peopleNum);
orderPrivateCar.setIsReassign(1);
orderPrivateCar.setIsDelete(1);
+ orderPrivateCar.setPrepayStage(Integer.valueOf(1).equals(orderPrivateCar.getPaymentMode()) ? 1 : 0);
this.insert(orderPrivateCar);
this.pushOrder(orderPrivateCar);
} else {
@@ -523,6 +525,7 @@
orderPrivateCar.setIsReassign(1);
orderPrivateCar.setIsDelete(1);
orderPrivateCar.setPid(orderPrivateCar1.getPid() == null ? orderPrivateCar1.getId() : orderPrivateCar1.getPid());
+ orderPrivateCar.setPrepayStage(Integer.valueOf(1).equals(orderPrivateCar.getPaymentMode()) ? 1 : 0);
this.insert(orderPrivateCar);
//修改总订单人数
OrderPrivateCar orderPrivateCar2 = new OrderPrivateCar();
@@ -743,6 +746,7 @@
orderPrivateCar.setTotalPeopleNum(peopleNum);
orderPrivateCar.setIsReassign(1);
orderPrivateCar.setIsDelete(1);
+ orderPrivateCar.setPrepayStage(Integer.valueOf(1).equals(orderPrivateCar.getPaymentMode()) ? 1 : 0);
//判断独享,一口价,拼车
JSONArray jsonArray = JSON.parseArray(serverCarModel);
@@ -1952,6 +1956,9 @@
if (orderPrivateCar.getState() != 7) {
return ResultUtil.error("订单不在待支付状态,不允许支付", "");
}
+ if (Integer.valueOf(1).equals(orderPrivateCar.getPaymentMode()) && Integer.valueOf(4).equals(orderPrivateCar.getPrepayStage())) {
+ return ResultUtil.error("订单退款处理中,请等待退款完成", "");
+ }
Integer uid = orderPrivateCar.getUserId();
Double orderMoney = (2 == orderPrivateCar.getAbnormal() && 2 == orderPrivateCar.getAbnormalStatus() ? orderPrivateCar.getResponsibilityMoney().doubleValue() : orderPrivateCar.getOrderMoney());
UserInfo userInfo = userInfoService.selectById(uid);
@@ -2007,12 +2014,14 @@
orderMoney = orderMoney < 0 ? 0 : orderMoney;
if (payType == 1) {//微信支付
String app = type == 1 ? "APP" : "JSAPI";
- resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_1_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId());
- paymentRecordService.saveData(1, orderPrivateCar.getUserId(), 1, orderId, 1, 1, orderMoney, "", 1);//添加预支付数据
+ String outTradeNo = orderId + "_1_" + UUIDUtil.getRandomCode(5);
+ resultUtil = payMoneyUtil.weixinpay("完成订单", "", outTradeNo, orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId());
+ paymentRecordService.saveData(1, orderPrivateCar.getUserId(), 1, orderId, 1, 1, orderMoney, outTradeNo, 1);//添加预支付数据
}
if (payType == 2) {//支付宝支付
- resultUtil = payMoneyUtil.alipay("完成订单", "完成订单", "", orderId + "_1_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/aliPayOrderTaxi");
- paymentRecordService.saveData(1, orderPrivateCar.getUserId(), 1, orderId, 1, 2, orderMoney, "", 1);//添加预支付数据
+ String outTradeNo = orderId + "_1_" + UUIDUtil.getRandomCode(5);
+ resultUtil = payMoneyUtil.alipay("完成订单", "完成订单", "", outTradeNo, orderMoney.toString(), "/base/aliPayOrderTaxi");
+ paymentRecordService.saveData(1, orderPrivateCar.getUserId(), 1, orderId, 1, 2, orderMoney, outTradeNo, 1);//添加预支付数据
}
if (payType == 3) {//余额支付
if (userInfo.getBalance() == null || userInfo.getBalance() < orderMoney) {
@@ -2021,29 +2030,32 @@
userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(orderMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+ boolean isPrepayFirstStage = isPrivateCarPrepayFirstStage(orderPrivateCar);
+ boolean isPrepaySpreadStage = isPrivateCarPrepaySpreadStage(orderPrivateCar);
+ if (isPrepayFirstStage) {
+ handlePrivateCarPrepayFirstPaid(orderPrivateCar, userInfo, orderMoney, 3);
+ return resultUtil;
+ }
+
OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
SysIntegral query1 = sysIntegralMapper.query(openCity.getId());
userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分
-
+
//添加交易明细
transactionDetailsService.saveData(uid, "快车订单", orderMoney, 2, 1, 1, 1, orderId);
userInfoService.updateById(userInfo);
-
+
orderPrivateCar.setState(8);
orderPrivateCar.setPayType(3);
- orderPrivateCar.setPayMoney(orderMoney);
+ orderPrivateCar.setPayMoney(isPrepaySpreadStage ? appendPayMoney(orderPrivateCar.getPayMoney(), orderMoney) : orderMoney);
orderPrivateCar.setPayTime(new Date());
-
- //处理优惠券和红包
- if (null != userCouponRecord) {
- userCouponRecord.setState(2);
- userCouponRecord.setEndTime(new Date());
- userCouponRecordService.updateById(userCouponRecord);
+ if (isPrepaySpreadStage) {
+ orderPrivateCar.setPrepayStage(5);
+ orderPrivateCar.setPrepaySecondPayNo(buildBalancePayNo(1, orderId));
}
- if (null != query) {
- query.setState(2);
- query.setEndTime(new Date());
- userRedPacketRecordService.updateById(query);
+
+ if (!isPrepaySpreadStage) {
+ consumePrivateCarBenefits(orderPrivateCar);
}
//非追缴单才需要添加收入
if(0 == orderPrivateCar.getRecoveryOrder()){
@@ -2087,6 +2099,9 @@
}
if (orderPrivateCar.getState() != 7) {
return ResultUtil.error("订单不在待支付状态,不允许支付", new ArrayList<>());
+ }
+ if (Integer.valueOf(1).equals(orderPrivateCar.getPaymentMode()) && Integer.valueOf(4).equals(orderPrivateCar.getPrepayStage())) {
+ return ResultUtil.error("订单退款处理中,请等待退款完成", new ArrayList<>());
}
Integer uid = orderPrivateCar.getUserId();
@@ -2259,8 +2274,9 @@
return ResultUtil.error("请使用余额支付");
}
String app = type == 1 ? "APP" : "JSAPI";
- resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_1_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId());
- paymentRecordService.saveData(1, orderPrivateCar.getUserId(), 1, orderId, 1, 1, orderMoney, "", 1);//添加预支付数据
+ String outTradeNo = orderId + "_1_" + UUIDUtil.getRandomCode(5);
+ resultUtil = payMoneyUtil.weixinpay("完成订单", "", outTradeNo, orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId());
+ paymentRecordService.saveData(1, orderPrivateCar.getUserId(), 1, orderId, 1, 1, orderMoney, outTradeNo, 1);//添加预支付数据
//创建定时任务查询订单支付状态
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
@@ -2291,8 +2307,9 @@
if (orderMoney == 0) {
return ResultUtil.error("请使用余额支付");
}
- resultUtil = payMoneyUtil.alipay("完成订单", "完成订单", "", orderId + "_1_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/aliPayOrderTaxi");
- paymentRecordService.saveData(1, orderPrivateCar.getUserId(), 1, orderId, 1, 2, orderMoney, "", 1);//添加预支付数据
+ String outTradeNo = orderId + "_1_" + UUIDUtil.getRandomCode(5);
+ resultUtil = payMoneyUtil.alipay("完成订单", "完成订单", "", outTradeNo, orderMoney.toString(), "/base/aliPayOrderTaxi");
+ paymentRecordService.saveData(1, orderPrivateCar.getUserId(), 1, orderId, 1, 2, orderMoney, outTradeNo, 1);//添加预支付数据
}
if (payType == 3) {//余额支付
if (userInfo.getBalance() == null || userInfo.getBalance() < orderMoney) {
@@ -2300,7 +2317,14 @@
}
userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(orderMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-
+
+ boolean isPrepayFirstStage = isPrivateCarPrepayFirstStage(orderPrivateCar);
+ boolean isPrepaySpreadStage = isPrivateCarPrepaySpreadStage(orderPrivateCar);
+ if (isPrepayFirstStage) {
+ handlePrivateCarPrepayFirstPaid(orderPrivateCar, userInfo, orderMoney, 3);
+ return resultUtil;
+ }
+
OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
SysIntegral query1 = sysIntegralMapper.query(openCity.getId());
if (null != query1) {
@@ -2313,22 +2337,15 @@
orderPrivateCar.setState(8);
orderPrivateCar.setPayType(3);
+ orderPrivateCar.setPayMoney(isPrepaySpreadStage ? appendPayMoney(orderPrivateCar.getPayMoney(), orderMoney) : orderMoney);
orderPrivateCar.setPayTime(new Date());
-
- //处理优惠券和红包
- if (null != userCouponRecord) {
- userCouponRecord.setState(2);
- userCouponRecord.setEndTime(new Date());
- userCouponRecordService.updateById(userCouponRecord);
+ if (isPrepaySpreadStage) {
+ orderPrivateCar.setPrepayStage(5);
+ orderPrivateCar.setPrepaySecondPayNo(buildBalancePayNo(1, orderId));
}
- //处理打车卡
- if (null != userTaxiCard) {
- userTaxiCardService.updateById(userTaxiCard);
- }
- if (null != query) {
- query.setState(2);
- query.setEndTime(new Date());
- userRedPacketRecordService.updateById(query);
+
+ if (!isPrepaySpreadStage) {
+ consumePrivateCarBenefits(orderPrivateCar);
}
//非追缴单才添加收入记录
if(0 == orderPrivateCar.getRecoveryOrder()){
@@ -2519,54 +2536,153 @@
System.err.println("预支付数据异常(orderId = " + id + ")");
}
}
+
+ private boolean isPrivateCarPrepayFirstStage(OrderPrivateCar orderPrivateCar) {
+ return orderPrivateCar != null
+ && Integer.valueOf(1).equals(orderPrivateCar.getPaymentMode())
+ && Integer.valueOf(1).equals(orderPrivateCar.getPrepayStage());
+ }
+
+ private boolean isPrivateCarPrepaySpreadStage(OrderPrivateCar orderPrivateCar) {
+ return orderPrivateCar != null
+ && Integer.valueOf(1).equals(orderPrivateCar.getPaymentMode())
+ && Integer.valueOf(3).equals(orderPrivateCar.getPrepayStage());
+ }
+
+ private String buildBalancePayNo(Integer orderType, Integer orderId) {
+ return "BAL_" + orderType + "_" + orderId + "_" + System.currentTimeMillis();
+ }
+
+ private Double appendPayMoney(Double source, Double amount) {
+ return new BigDecimal(source == null ? 0D : source)
+ .add(new BigDecimal(amount == null ? 0D : amount))
+ .setScale(2, BigDecimal.ROUND_HALF_EVEN)
+ .doubleValue();
+ }
+
+ private void consumePrivateCarBenefits(OrderPrivateCar orderPrivateCar) throws Exception {
+ if (null != orderPrivateCar.getCouponId()) {
+ UserCouponRecord userCouponRecord = userCouponRecordService.selectById(orderPrivateCar.getCouponId());
+ if (userCouponRecord != null) {
+ userCouponRecord.setState(2);
+ userCouponRecord.setEndTime(new Date());
+ userCouponRecordService.updateById(userCouponRecord);
+ }
+ }
+ if (null != orderPrivateCar.getUserTaxiCardId()) {
+ UserTaxiCard userTaxiCard = userTaxiCardService.selectById(orderPrivateCar.getUserTaxiCardId());
+ if (userTaxiCard != null && (userTaxiCard.getType() == 1 || userTaxiCard.getType() == 3)) {
+ JSONObject jsonObject = JSON.parseObject(userTaxiCard.getContent());
+ jsonObject.put("time", jsonObject.getInteger("time") - 1);
+ userTaxiCard.setContent(jsonObject.toJSONString());
+ userTaxiCardService.updateById(userTaxiCard);
+ }
+ }
+ if (null != orderPrivateCar.getRedPacketId()) {
+ UserRedPacketRecord userRedPacketRecord = userRedPacketRecordService.selectById(orderPrivateCar.getRedPacketId());
+ if (userRedPacketRecord != null) {
+ userRedPacketRecord.setState(2);
+ userRedPacketRecord.setEndTime(new Date());
+ userRedPacketRecordService.updateById(userRedPacketRecord);
+ }
+ }
+ }
+
+ private void dispatchPrepayPrivateCarOrder(OrderPrivateCar orderPrivateCar) throws Exception {
+ if (Integer.valueOf(3).equals(orderPrivateCar.getType()) && ToolUtil.isNotEmpty(orderPrivateCar.getServerCarModel())) {
+ JSONArray jsonArray = JSON.parseArray(orderPrivateCar.getServerCarModel());
+ for (int i = 0; i < jsonArray.size(); i++) {
+ JSONObject jsonObject = jsonArray.getJSONObject(i);
+ Integer serverCarModelId = jsonObject.getInteger("serverCarModelId");
+ Integer rideType = jsonObject.getInteger("rideType");
+ if (serverCarModelId != null && serverCarModelId == 0) {
+ OrderTaxi orderTaxi = new OrderTaxi();
+ orderTaxi.setId(orderPrivateCar.getId());
+ orderTaxi.setState(1);
+ orderTaxi.setUserId(orderPrivateCar.getUserId());
+ orderTaxi.setStartLon(orderPrivateCar.getStartLon());
+ orderTaxi.setStartLat(orderPrivateCar.getStartLat());
+ orderTaxiService.pushOrder(orderTaxi, 3);
+ continue;
+ }
+ OrderPrivateCar pushOrder = new OrderPrivateCar();
+ BeanUtils.copyProperties(orderPrivateCar, pushOrder);
+ pushOrder.setRideType(rideType);
+ pushOrder.setServerCarModelId(serverCarModelId);
+ this.pushOrder(pushOrder);
+ }
+ return;
+ }
+ if (Integer.valueOf(3).equals(orderPrivateCar.getRideType())) {
+ this.pushOrderPrivateCar(orderPrivateCar.getId());
+ return;
+ }
+ this.pushOrder(orderPrivateCar);
+ }
+
+ private void handlePrivateCarPrepayFirstPaid(OrderPrivateCar orderPrivateCar, UserInfo userInfo, Double payAmount, Integer payType) throws Exception {
+ OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
+ SysIntegral query1 = sysIntegralMapper.query(openCity.getId());
+ if (null != query1) {
+ userInfo.setIntegral(userInfo.getIntegral() + (payAmount.intValue() * query1.getIntegral()));
+ }
+ userInfoService.updateById(userInfo);
+
+ consumePrivateCarBenefits(orderPrivateCar);
+ transactionDetailsService.saveData(orderPrivateCar.getUserId(), "快车订单", payAmount, 2, 1, 1, 1, orderPrivateCar.getId());
+
+ orderPrivateCar.setState(1);
+ orderPrivateCar.setPayType(payType);
+ orderPrivateCar.setPayMoney(payAmount);
+ orderPrivateCar.setPayTime(new Date());
+ orderPrivateCar.setPrepayStage(2);
+ this.updateAllColumnById(orderPrivateCar);
+
+ pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0);
+ systemNoticeService.addSystemNotice(1, "您的快车订单已支付成功,我们正在为您指派司机,请稍后!", orderPrivateCar.getUserId(), 1);
+ dispatchPrepayPrivateCarOrder(orderPrivateCar);
+ }
@Override
- public void payOrderPrivateCarCallback(Integer id, String order_id, Integer type) throws Exception {
+ public void payOrderPrivateCarCallback(Integer id, String order_id, Integer type, String outTradeNo) throws Exception {
OrderPrivateCar orderPrivateCar = this.selectById(id);
- PaymentRecord query = paymentRecordService.query(1, orderPrivateCar.getUserId(), 1, Integer.valueOf(id), 1, type, 1);
+ PaymentRecord query = ToolUtil.isNotEmpty(outTradeNo) ? paymentRecordService.queryByCode(outTradeNo, 1) : null;
+ if (query == null) {
+ query = paymentRecordService.query(1, orderPrivateCar.getUserId(), 1, Integer.valueOf(id), 1, type, 1);
+ }
if (null != query && query.getState() == 1) {
+ UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
+ query.setState(2);
+ query.setCode(order_id);
+ paymentRecordService.updateById(query);
+
+ if (isPrivateCarPrepayFirstStage(orderPrivateCar)) {
+ handlePrivateCarPrepayFirstPaid(orderPrivateCar, userInfo, query.getAmount(), type);
+ return;
+ }
+
//添加交易明细
transactionDetailsService.saveData(orderPrivateCar.getUserId(), "快车订单", query.getAmount(), 2, 1, 1, 1, query.getOrderId());
orderPrivateCar.setState(8);
orderPrivateCar.setPayType(type);
- orderPrivateCar.setPayMoney(query.getAmount());
+ boolean isPrepaySpreadStage = isPrivateCarPrepaySpreadStage(orderPrivateCar);
+ orderPrivateCar.setPayMoney(isPrepaySpreadStage ? appendPayMoney(orderPrivateCar.getPayMoney(), query.getAmount()) : query.getAmount());
orderPrivateCar.setPayTime(new Date());
-
- UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
+ if (isPrepaySpreadStage) {
+ orderPrivateCar.setPrepayStage(5);
+ orderPrivateCar.setPrepaySecondPayNo(order_id);
+ }
+
OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
SysIntegral query1 = sysIntegralMapper.query(openCity.getId());
if(null != query1){
userInfo.setIntegral(userInfo.getIntegral() + (query.getAmount().intValue() * query1.getIntegral()));//积分
userInfoService.updateById(userInfo);
}
-
- //处理优惠券和红包
- if (null != orderPrivateCar.getCouponId()) {
- UserCouponRecord userCouponRecord = userCouponRecordService.selectById(orderPrivateCar.getCouponId());
- userCouponRecord.setState(2);
- userCouponRecord.setEndTime(new Date());
- userCouponRecordService.updateById(userCouponRecord);
+
+ if (!isPrepaySpreadStage) {
+ consumePrivateCarBenefits(orderPrivateCar);
}
- if (null != orderPrivateCar.getUserTaxiCardId()) {
- UserTaxiCard userTaxiCard = userTaxiCardService.selectById(orderPrivateCar.getUserTaxiCardId());
- if (userTaxiCard.getType() == 1 || userTaxiCard.getType() == 3) {
- JSONObject jsonObject = JSON.parseObject(userTaxiCard.getContent());
- jsonObject.put("time", jsonObject.getInteger("time") - 1);
- userTaxiCard.setContent(jsonObject.toJSONString());
- userTaxiCardService.updateById(userTaxiCard);
- }
- }
- if (null != orderPrivateCar.getRedPacketId()) {
- UserRedPacketRecord userRedPacketRecord = userRedPacketRecordService.selectById(orderPrivateCar.getRedPacketId());
- userRedPacketRecord.setState(2);
- userRedPacketRecord.setEndTime(new Date());
- userRedPacketRecordService.updateById(userRedPacketRecord);
- }
-
-
- query.setState(2);
- query.setCode(order_id);
- paymentRecordService.updateById(query);
//非追缴单才需要记录收入
if(null != orderPrivateCar.getRecoveryOrder() && 0 == orderPrivateCar.getRecoveryOrder()){
--
Gitblit v1.7.1