From 7e7462d129b81ed8cba5d05e218ae71c38c5efe1 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期一, 15 六月 2026 17:32:48 +0800
Subject: [PATCH] 添加支付方式字段并优化订单处理逻辑
---
ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderPrivateCarController.java | 97 +++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 95 insertions(+), 2 deletions(-)
diff --git a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderPrivateCarController.java b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderPrivateCarController.java
index aac7884..abd6ce7 100644
--- a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderPrivateCarController.java
+++ b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderPrivateCarController.java
@@ -55,6 +55,21 @@
@Autowired
private ITDriverService tDriverService;
+
+ @Autowired
+ private ITOrderTaxiService tOrderTaxiService;
+
+ @Autowired
+ private ITOrderCrossCityService tOrderCrossCityService;
+
+ @Autowired
+ private ITCompanyCityService tCompanyCityService;
+
+ @Autowired
+ private GDMapGeocodingUtil gdMapGeocodingUtil;
+
+ @Autowired
+ private GDMapElectricFenceUtil gdMapElectricFenceUtil;
@Autowired
private PushMinistryOfTransportUtil pushMinistryOfTransportUtil;
@@ -596,7 +611,10 @@
public Object add(TOrderPrivateCar privateCar) {
TUser user = userService.selectOne(new EntityWrapper<TUser>().eq("phone", privateCar.getPassengersPhone()));
if (ToolUtil.isNotEmpty(user)) {/// 用户是平台用户
- privateCar.setOrderNum("PRIVATE" + String.valueOf(1000000 + privateCar.selectList(null).size() + 1).substring(1));
+ if (hasUnfinishedTravelOrder(user.getId())) {
+ return new ErrorTip(500, "该乘客有未完成的订单");
+ }
+ privateCar.setOrderNum(getPrivateCarOrderNum());
privateCar.setUserId(user.getId());
privateCar.setState(1);
privateCar.setInsertTime(DateUtil.parseTime(DateUtil.getTime()));
@@ -619,6 +637,7 @@
} else {
privateCar.setOrderType(1);
}
+ fillDispatchPrivateCarOrder(privateCar);
tOrderPrivateCarService.insert(privateCar);
} else {/// 用户不是平台用户时
TUser tUser = new TUser();
@@ -629,7 +648,7 @@
userService.insert(tUser);
/// 存入订单信息
- privateCar.setOrderNum("PRIVATE" + String.valueOf(1000000 + tOrderPrivateCarService.selectList(null).size() + 1).substring(1));
+ privateCar.setOrderNum(getPrivateCarOrderNum());
privateCar.setUserId(tUser.getId());
privateCar.setState(1);
privateCar.setInsertTime(DateUtil.parseTime(DateUtil.getTime()));
@@ -653,6 +672,7 @@
} else {
privateCar.setOrderType(1);
}
+ fillDispatchPrivateCarOrder(privateCar);
tOrderPrivateCarService.insert(privateCar);
}
@@ -664,4 +684,77 @@
System.out.println("添加订单推单调用结果:" + result);
return SUCCESS_TIP;
}
+
+ private String getPrivateCarOrderNum() {
+ return "PR" + new java.text.SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + UUIDUtil.getRandomCode().substring(0, 5);
+ }
+
+ private boolean hasUnfinishedTravelOrder(Integer userId) {
+ if (userId == null) {
+ return false;
+ }
+ return tOrderPrivateCarService.selectCount(new EntityWrapper<TOrderPrivateCar>()
+ .eq("isDelete", 1)
+ .eq("userId", userId)
+ .notIn("state", 8, 9, 10, 12)) > 0
+ || tOrderTaxiService.selectCount(new EntityWrapper<TOrderTaxi>()
+ .eq("isDelete", 1)
+ .eq("userId", userId)
+ .notIn("state", 8, 9, 10, 12)) > 0
+ || tOrderCrossCityService.selectCount(new EntityWrapper<TOrderCrossCity>()
+ .eq("isDelete", 1)
+ .eq("userId", userId)
+ .notIn("state", 8, 9, 10, 12)) > 0;
+ }
+
+ private void fillDispatchPrivateCarOrder(TOrderPrivateCar privateCar) {
+ privateCar.setIsDelete(1);
+ privateCar.setTotalPeopleNum(1);
+ fillPlacementAndCompany(privateCar);
+ fillEstimateDistance(privateCar);
+ }
+
+ private void fillPlacementAndCompany(TOrderPrivateCar privateCar) {
+ if (privateCar.getStartLon() == null || privateCar.getStartLat() == null) {
+ return;
+ }
+ try {
+ Map<String, String> geocode = gdMapGeocodingUtil.geocode(privateCar.getStartLon().toString(), privateCar.getStartLat().toString());
+ if (ToolUtil.isNotEmpty(geocode.get("address"))) {
+ privateCar.setPlacementAddress(geocode.get("address"));
+ }
+ if (ToolUtil.isNotEmpty(geocode.get("districtCode"))) {
+ TCompanyCity companyCity = tCompanyCityService.selectOne(new EntityWrapper<TCompanyCity>()
+ .eq("areaCode", Integer.valueOf(geocode.get("districtCode")))
+ .eq("state", 1));
+ if (companyCity != null) {
+ privateCar.setCompanyId(companyCity.getCompanyId());
+ }
+ }
+ } catch (Exception e) {
+ System.err.println("管理端添加快车单补充下单地/公司失败:" + e.getMessage());
+ }
+ }
+
+ private void fillEstimateDistance(TOrderPrivateCar privateCar) {
+ if (privateCar.getStartLon() == null || privateCar.getStartLat() == null
+ || privateCar.getEndLon() == null || privateCar.getEndLat() == null) {
+ return;
+ }
+ try {
+ Map<String, String> distanceMap = gdMapElectricFenceUtil.getDistance(
+ privateCar.getStartLon() + "," + privateCar.getStartLat(),
+ privateCar.getEndLon() + "," + privateCar.getEndLat(), 1);
+ if (distanceMap != null) {
+ if (ToolUtil.isNotEmpty(distanceMap.get("distance"))) {
+ privateCar.setEstimateMileage(Double.valueOf(distanceMap.get("distance")));
+ }
+ if (ToolUtil.isNotEmpty(distanceMap.get("duration"))) {
+ privateCar.setEstimateTime(Double.valueOf(distanceMap.get("duration")) / 60);
+ }
+ }
+ } catch (Exception e) {
+ System.err.println("管理端添加快车单补充预估距离失败:" + e.getMessage());
+ }
+ }
}
--
Gitblit v1.7.1