From 1c40baaf9ca0183945b9881d11ceed5aeebc8290 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 23 十月 2025 11:35:44 +0800
Subject: [PATCH] 修改bug
---
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java | 185 +++++++++++++++++++++++++++++++++++++---------
1 files changed, 148 insertions(+), 37 deletions(-)
diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
index 39a7c06..6142adf 100644
--- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
+++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
@@ -16,12 +16,18 @@
import com.stylefeng.guns.modular.system.dao.RegionMapper;
import com.stylefeng.guns.modular.system.dao.SysReformistMapper;
import com.stylefeng.guns.modular.system.model.AdditionalFee;
+import com.stylefeng.guns.modular.system.model.Company;
import com.stylefeng.guns.modular.system.model.Driver;
import com.stylefeng.guns.modular.system.model.OrderPosition;
-import com.stylefeng.guns.modular.system.service.IAdditionalFeeService;
-import com.stylefeng.guns.modular.system.service.IDriverService;
-import com.stylefeng.guns.modular.system.service.IOrderService;
+import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.*;
+import com.stylefeng.guns.modular.system.util.qianyuntong.EmployeeUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.AddAccountInfoRequest;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.ModifyTravelItineraryRequest;
+import com.stylefeng.guns.modular.system.util.zhenglian.ZhengLianUtil;
+import com.stylefeng.guns.modular.system.util.zhenglian.model.TradeTerminalInfo;
+import com.stylefeng.guns.modular.system.util.zhenglian.model.ZLUserInfo;
import com.stylefeng.guns.modular.system.warpper.BaseWarpper;
import com.stylefeng.guns.modular.system.warpper.OrderListWarpper;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
@@ -32,6 +38,8 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
import java.util.*;
/**
@@ -93,6 +101,14 @@
@Autowired
private IAdditionalFeeService additionalFeeService;
+
+// @Autowired
+// private RedissonClient redissonClient;
+ @Autowired
+ private IOpenCityService openCityService;
+
+ @Autowired
+ private ICompanyService companyService;
@@ -110,6 +126,44 @@
*/
@Override
public List<Map<String, Object>> queryOrderList(Integer state, Integer pageNum, Integer size, Integer uid) throws Exception {
+ Driver driver = driverService.selectById(uid);
+ //获取证联数据
+ if(null == driver.getCustId() || 0 == driver.getAccOpenFlag()){
+ TradeTerminalInfo tradeTerminalInfo = new TradeTerminalInfo();
+ tradeTerminalInfo.setTerminal("1");
+ InetAddress inetAddress = InetAddress.getLocalHost();
+ String ip = inetAddress.getHostAddress();
+ tradeTerminalInfo.setIp(ip);
+ NetworkInterface networkInterface = NetworkInterface.getByInetAddress(inetAddress);
+ byte[] mac = networkInterface.getHardwareAddress();
+ StringBuilder macAddress = new StringBuilder();
+ for (int i = 0; i < mac.length; i++) {
+ macAddress.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));
+ }
+
+ tradeTerminalInfo.setMac(macAddress.toString());
+ ZLUserInfo userInfo = ZhengLianUtil.getUserInfo(driver.getEmpId().toString(), tradeTerminalInfo);
+ if(null != userInfo){
+ driver.setCustId(userInfo.getCustId());
+ driver.setAccOpenFlag(userInfo.getAccOpenFlag());
+ driverService.updateById(driver);
+ }
+ }
+ //同步到中台
+ if(null != driver.getAccOpenFlag() && 1 == driver.getAccOpenFlag() && 0 == driver.getIsSynchronous()){
+ AddAccountInfoRequest request = new AddAccountInfoRequest();
+ request.setCustId(driver.getCustId());
+ request.setAccountNo(driver.getEmpId().toString());
+ request.setAccountName(driver.getName());
+ request.setMobile(driver.getPhone());
+ Integer status = EmployeeUtil.addAccountInfo(request);
+ if(0 == status){
+ driver.setIsSynchronous(1);
+ driverService.updateById(driver);
+ }
+ }
+
+
Integer page = pageNum;
pageNum = (pageNum - 1) * size;
List<Map<String, Object>> datas = new ArrayList<>();
@@ -332,19 +386,22 @@
}
break;
case 2://出租
- OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId);
- if(null != orderPrivateCar && orderPrivateCar.getType() == 3){
- map = orderPrivateCarService.queryPushOrder(orderId);
- }else{
+ OrderTaxi orderTaxi = orderTaxiService.selectById(orderId);
+ if((null != orderTaxi && orderTaxi.getType() == 2) || (null != orderTaxi && orderTaxi.getState() == 11)){
map = orderTaxiService.queryPushOrder(orderId);
+ }else{
+ OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId);
+ if(null != orderPrivateCar && orderPrivateCar.getType() == 3){
+ map = orderPrivateCarService.queryPushOrder(orderId);
+ }else{
+ map = orderTaxiService.queryPushOrder(orderId);
+ }
}
String order1 = String.valueOf(map.get("startLon")) + "," + String.valueOf(map.get("startLat"));
// TODO: 2023/11/4 无法修改
String distance1 = gdMapElectricFenceUtil.getDistance(lon + "," + lat, order1, 1).get("distance");
map.put("startDistance", ToolUtil.isNotEmpty(distance1) ? Double.valueOf(distance1) / 1000 : 0);
-
//总距离
-
String end1 = String.valueOf(map.get("endLon")) + "," + String.valueOf(map.get("endLat"));
if(end1.equals(",")){
map.put("totalDistance", 0);
@@ -359,7 +416,6 @@
}
}
-
Integer orderSource1 = Integer.valueOf(String.valueOf(map.get("orderSource")));
if(orderSource1 == 1 || orderSource1 == 2 || orderSource1 == 3){
@@ -500,12 +556,27 @@
* @throws Exception
*/
@Override
- public synchronized ResultUtil grabOrder(Integer orderId, Integer orderType, Integer uid) throws Exception {
+ public ResultUtil grabOrder(Integer orderId, Integer orderType, Integer uid) throws Exception {
+ //专车和出租是批量下单,所以这里需要将两种类型的抢单操作通过一个锁来一起控制
+ if(1 == orderType || 2 == orderType){
+ Boolean lock = redisTemplate.opsForValue().setIfAbsent("grabOrder:" + orderId, "1");
+ if(!lock){
+ return ResultUtil.error("抢单失败,请稍后重试");
+ }
+ try {
+ if(1 == orderType){
+ return orderPrivateCarService.grabOrder(orderId, uid);
+ }
+ if(2 == orderType){
+ return orderTaxiService.grabOrder(orderId, uid);
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }finally {
+ redisTemplate.delete("grabOrder:" + orderId);
+ }
+ }
switch (orderType){
- case 1://专车
- return orderPrivateCarService.grabOrder(orderId, uid);
- case 2://出租
- return orderTaxiService.grabOrder(orderId, uid);
case 3://城际
return ResultUtil.success();//不作任何操作,跨城默认选择的司机
case 4://同城小件
@@ -611,27 +682,33 @@
*/
@Override
public Double queryReassignMoney(Integer orderId, Integer orderType) throws Exception {
- Integer companyId = null;
+ Integer openCityId = null;
switch (orderType){
case 1://专车
- companyId = orderPrivateCarService.selectById(orderId).getCompanyId();
+ OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId);
+ openCityId = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString()).getId();
break;
case 2://出租
- companyId = orderTaxiService.selectById(orderId).getCompanyId();
+ OrderTaxi orderTaxi = orderTaxiService.selectById(orderId);
+ openCityId = openCityService.openCity1(orderTaxi.getStartLon().toString(), orderTaxi.getStartLat().toString()).getId();
break;
case 3://城际
- companyId = orderCrossCityService.selectById(orderId).getCompanyId();
+ OrderCrossCity orderCrossCity = orderCrossCityService.selectById(orderId);
+ openCityId = openCityService.openCity1(orderCrossCity.getStartLon().toString(), orderCrossCity.getStartLat().toString()).getId();
break;
case 4://同城小件
- companyId = orderLogisticsService.selectById(orderId).getCompanyId();
+ OrderLogistics orderLogistics = orderLogisticsService.selectById(orderId);
+ openCityId = openCityService.openCity1(orderLogistics.getStartLon().toString(), orderLogistics.getStartLat().toString()).getId();
break;
case 5://跨城小件
- companyId = orderLogisticsService.selectById(orderId).getCompanyId();
+ OrderLogistics orderLogistics1 = orderLogisticsService.selectById(orderId);
+ openCityId = openCityService.openCity1(orderLogistics1.getStartLon().toString(), orderLogistics1.getStartLat().toString()).getId();
+
break;
case 6:
break;
}
- return sysReformistMapper.queryMoney(companyId);
+ return sysReformistMapper.queryMoney(openCityId);
}
@@ -1008,11 +1085,11 @@
}
//调用移动的小号接口
Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
- Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderPrivateCar.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000));
- if(String.valueOf(map.get("code")).equals("200")){
- orderPrivateCar.setTelX(map.get("telX"));
- orderPrivateCar.setBindId(map.get("bindId"));
- }
+// Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderPrivateCar.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000));
+// if(String.valueOf(map.get("code")).equals("200")){
+// orderPrivateCar.setTelX(map.get("telX"));
+// orderPrivateCar.setBindId(map.get("bindId"));
+// }
orderPrivateCarService.updateById(orderPrivateCar);
}
break;
@@ -1025,11 +1102,11 @@
}
//调用移动的小号接口
Driver driver = driverService.selectById(orderTaxi.getDriverId());
- Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderTaxi.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000));
- if(String.valueOf(map.get("code")).equals("200")){
- orderTaxi.setTelX(map.get("telX"));
- orderTaxi.setBindId(map.get("bindId"));
- }
+// Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderTaxi.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000));
+// if(String.valueOf(map.get("code")).equals("200")){
+// orderTaxi.setTelX(map.get("telX"));
+// orderTaxi.setBindId(map.get("bindId"));
+// }
orderTaxiService.updateById(orderTaxi);
}
break;
@@ -1042,11 +1119,11 @@
}
//调用移动的小号接口
Driver driver = driverService.selectById(orderCrossCity.getDriverId());
- Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderCrossCity.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000));
- if(String.valueOf(map.get("code")).equals("200")){
- orderCrossCity.setTelX(map.get("telX"));
- orderCrossCity.setBindId(map.get("bindId"));
- }
+// Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderCrossCity.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000));
+// if(String.valueOf(map.get("code")).equals("200")){
+// orderCrossCity.setTelX(map.get("telX"));
+// orderCrossCity.setBindId(map.get("bindId"));
+// }
orderCrossCityService.updateById(orderCrossCity);
}
break;
@@ -1154,6 +1231,23 @@
orderPrivateCar.setPayMoney(orderPrivateCar.getOrderMoney());
orderPrivateCar.setState(8);
orderPrivateCarService.updateById(orderPrivateCar);
+
+ if(ToolUtil.isNotEmpty(orderPrivateCar.getTravelId())){
+ Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
+ Company company1 = companyService.selectById(driver.getCompanyId());
+ //中台修改订单状态
+ ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest();
+ request1.setOrderId(orderPrivateCar.getTravelId());
+ request1.setStatus(orderPrivateCar.getState());
+ request1.setDriverId(driver.getEmpId().toString());
+ if(2 == orderPrivateCar.getPromotion()){
+ Driver driver1 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
+ request1.setPromoterId(driver1.getEmpId().toString());
+ }
+ request1.setSupplierShopId(company1.getEnterCode());
+ OrderUtil.modifyTravelItinerary(request1);
+ }
+
userId = orderPrivateCar.getUserId();
driverId = orderPrivateCar.getDriverId();
state = orderPrivateCar.getState();
@@ -1183,6 +1277,23 @@
orderTaxi.setPayMoney(orderTaxi.getOrderMoney());
orderTaxi.setState(8);
orderTaxiService.updateById(orderTaxi);
+
+ if(ToolUtil.isNotEmpty(orderTaxi.getTravelId())){
+ Driver driver1 = driverService.selectById(orderTaxi.getDriverId());
+ Company company = companyService.selectById(driver1.getCompanyId());
+ //中台修改订单状态
+ ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
+ request.setOrderId(orderTaxi.getTravelId());
+ request.setStatus(orderTaxi.getState());
+ request.setDriverId(driver1.getEmpId().toString());
+ if(2 == orderTaxi.getPromotion()){
+ Driver driver2 = driverService.selectById(orderTaxi.getPromotionDriverId());
+ request.setPromoterId(driver2.getEmpId().toString());
+ }
+ request.setSupplierShopId(company.getEnterCode());
+ OrderUtil.modifyTravelItinerary(request);
+ }
+
userId = orderTaxi.getUserId();
driverId = orderTaxi.getDriverId();
state = orderTaxi.getState();
--
Gitblit v1.7.1