From 8a59d8be91186cf7ddd28cda91da5d68e6404482 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期二, 12 八月 2025 11:47:31 +0800
Subject: [PATCH] update
---
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java | 206 ++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 162 insertions(+), 44 deletions(-)
diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
index 520e941..5296cf9 100644
--- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
+++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -8,12 +8,13 @@
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar;
import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService;
-import com.stylefeng.guns.modular.system.model.Company;
-import com.stylefeng.guns.modular.system.model.Driver;
-import com.stylefeng.guns.modular.system.model.OrderAdditionalFee;
-import com.stylefeng.guns.modular.system.model.OrderPosition;
+import com.stylefeng.guns.modular.system.dao.UserInfoMapper;
+import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.*;
+import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.CreateTravelItineraryRequest;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.ModifyTravelItineraryRequest;
import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService;
@@ -31,28 +32,28 @@
@Resource
private OrderTaxiMapper orderTaxiMapper;
-
+
@Autowired
private IDriverService driverService;
-
+
@Autowired
private PushUtil pushUtil;
-
+
@Autowired
private GDFalconUtil gdFalconUtil;
- @Autowired
- private RedisTemplate redisTemplate;
-
+ @Resource
+ private RedisTemplate<String, Object> redisTemplate;
+
@Autowired
private IOrderPositionService orderPositionService;
-
+
@Autowired
private ISystemNoticeService systemNoticeService;
-
+
@Autowired
private ChinaMobileUtil chinaMobileUtil;
-
+
@Autowired
private GeodesyUtil geodesyUtil;
@@ -68,6 +69,15 @@
@Autowired
private IOrderAdditionalFeeService orderAdditionalFeeService;
+ @Resource
+ private UserInfoMapper userInfoMapper;
+
+
+ @Autowired
+ private TDriverPromotionActivityService driverPromotionActivityService;
+
+ @Resource
+ private IOpenCityService openCityService;
@@ -133,13 +143,13 @@
* @throws Exception
*/
@Override
- public synchronized ResultUtil grabOrder(Integer orderId, Integer uid) throws Exception {
+ public ResultUtil grabOrder(Integer orderId, Integer uid) throws Exception {
OrderPrivateCar orderPrivateCar1 = orderPrivateCarService.selectById(orderId);
- if(null != orderPrivateCar1 && orderPrivateCar1.getType() == 3 && orderPrivateCar1.getState() != 1){
+ if(null != orderPrivateCar1 && orderPrivateCar1.getType() == 3 && orderPrivateCar1.getState() != 1&& orderPrivateCar1.getState() != 11){
return ResultUtil.error("订单已被抢了");
}
OrderTaxi orderTaxi = null;
- if(null != orderPrivateCar1 && orderPrivateCar1.getType() == 3 && orderPrivateCar1.getState() == 1){
+ if(null != orderPrivateCar1 && orderPrivateCar1.getType() == 3 && orderPrivateCar1.getState() == 1&& orderPrivateCar1.getState() == 11){
orderPrivateCarService.deleteById(orderId);
OrderTaxi orderTaxi1 = setOrderTaxi(orderPrivateCar1);
this.insert(orderTaxi1);
@@ -179,8 +189,13 @@
if(orderTaxi.getState() == 10){
return ResultUtil.error("订单已取消");
}
- if(orderTaxi.getState() != 1){
+ if(orderTaxi.getState() != 1 && orderTaxi.getState() != 11 ){
return ResultUtil.error("手速有点慢哦,订单已被抢啦!");
+ }
+
+ Integer oldDriverId = null;
+ if(orderTaxi.getState()==11){
+ oldDriverId= orderTaxi.getDriverId();
}
Driver driver = driverService.selectById(uid);
orderTaxi.setDriverId(uid);
@@ -191,17 +206,60 @@
orderTaxi.setSnatchOrderTime(new Date());
//调用高德创建轨迹
- String s = gdFalconUtil.selectTerminal(driver.getPhone());
- String track = gdFalconUtil.createTrack(s);
- orderTaxi.setTrackId(track);
+// String s = gdFalconUtil.selectTerminal(driver.getPhone());
+// String track = gdFalconUtil.createTrack(s);
+// orderTaxi.setTrackId(track);
+//
+// //调用移动的小号接口
+// 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"));
+ // 是否推广订单
+ Integer promotion = isPromotion(orderTaxi.getUserId());
+ if(promotion!=null){
+ orderTaxi.setPromotion(2);
+ Driver driver1 = driverService.selectById(promotion);
+ orderTaxi.setPromotionUser(driver1.getName());
+ orderTaxi.setPromotionPhone(driver1.getPhone());
+ orderTaxi.setPromotionDriverId(promotion);
+ }else{
+ orderTaxi.setPromotion(1);
}
-
+
+ if(null == oldDriverId){
+ UserInfo userInfo = userInfoMapper.selectById(orderTaxi.getUserId());
+ Company company = companyService.selectById(driver.getCompanyId());
+ //调三方订单中心创建行程单
+ CreateTravelItineraryRequest request = new CreateTravelItineraryRequest();
+ request.setOrderNo("TA" + orderTaxi.getId());
+ request.setCustomerId(userInfo.getOnconUUID());
+ request.setDriverId(driver.getEmpId().toString());
+ request.setSupplierShopId(company.getEnterCode());
+ if(2 == orderTaxi.getPromotion()){
+ Driver driver1 = driverService.selectById(orderTaxi.getPromotionDriverId());
+ request.setPromoterId(driver1.getEmpId().toString());
+ }
+ request.setServiceType(1);
+ String travelItinerary = OrderUtil.createTravelItinerary(request);
+ orderTaxi.setTravelId(travelItinerary);
+ }else{
+ //改派抢单
+ Company company1 = companyService.selectById(driver.getCompanyId());
+ //中台修改订单状态
+ ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest();
+ request1.setOrderId(orderTaxi.getTravelId());
+ request1.setStatus(orderTaxi.getState());
+ request1.setDriverId(driver.getEmpId().toString());
+ if(2 == orderTaxi.getPromotion()){
+ Driver driver1 = driverService.selectById(orderTaxi.getPromotionDriverId());
+ request1.setPromoterId(driver1.getEmpId().toString());
+ }
+ request1.setSupplierShopId(company1.getEnterCode());
+ OrderUtil.modifyTravelItinerary(request1);
+ }
this.updateById(orderTaxi);
if(orderTaxi.getType() == 2){
@@ -240,15 +298,25 @@
//推送相关代码------------------start----------------
OrderTaxi finalOrderTaxi = orderTaxi;
+ Integer finalOldDriverId = oldDriverId;
new Thread(new Runnable() {
@Override
public void run() {
- pushUtil.pushOrderState(1, finalOrderTaxi.getUserId(), finalOrderTaxi.getId(), 2, finalOrderTaxi.getState());
- pushUtil.pushOrderState(2, finalOrderTaxi.getDriverId(), finalOrderTaxi.getId(), 2, finalOrderTaxi.getState());
- if(finalOrderTaxi.getType() == 2){
- pushUtil.pushFerryOrderState(1, finalOrderTaxi.getUserId(), finalOrderTaxi.getId(), 2, 2);
- System.err.println("----------------------------------推送摆渡订单-----------------------------");
+ if(finalOldDriverId !=null){
+ // 推送3个 1推送原司机 2推送新司机 3推送用户
+ pushUtil.pushOrderState(2, finalOrderTaxi.getDriverId(), finalOrderTaxi.getId(), 2, finalOrderTaxi.getState());
+ pushUtil.pushOrderReassign(finalOrderTaxi.getUserId(),1 , finalOrderTaxi.getId(), 2);
+ pushUtil.pushOrderReassign(finalOldDriverId,2, finalOrderTaxi.getId(), 2);
+
+ }else {
+ pushUtil.pushOrderState(1, finalOrderTaxi.getUserId(), finalOrderTaxi.getId(), 2, finalOrderTaxi.getState());
+ pushUtil.pushOrderState(2, finalOrderTaxi.getDriverId(), finalOrderTaxi.getId(), 2, finalOrderTaxi.getState());
+ if(finalOrderTaxi.getType() == 2){
+ pushUtil.pushFerryOrderState(1, finalOrderTaxi.getUserId(), finalOrderTaxi.getId(), 2, 2);
+ System.err.println("----------------------------------推送摆渡订单-----------------------------");
+ }
}
+
}
}).start();
@@ -264,7 +332,18 @@
return ResultUtil.success(orderTaxi.getId());
}
+ private Integer isPromotion(Integer userId){
+ UserInfo userInfo = userInfoMapper.selectById(userId);
+ if(userInfo.getBindDriverId()!=null && userInfo.getBindExpireDate().getTime()<=System.currentTimeMillis()){
+ String registAreaCode = userInfo.getRegistAreaCode();
+ TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("state",1).eq("districtCode", registAreaCode).ge("startTime", new Date()).lt("endTime", new Date()).last("AND FIND_IN_SET(" + 1 + ", bizType) limit 1"));
+ if(tDriverPromotionActivity!=null){
+ return userInfo.getBindDriverId();
+ }
+ }
+ return null;
+ }
public OrderTaxi setOrderTaxi(OrderPrivateCar orderPrivateCar){
@@ -331,7 +410,7 @@
orderTaxi.setStartServiceTime(date);
orderTaxi.setBoardingTime(date);
- String value = (String) redisTemplate.opsForValue().get("DRIVER" + uid);
+ String value = (String) redisTemplate.opsForValue().get("dache:DRIVER" + uid);
if (ToolUtil.isNotEmpty(value)) {
String[] split = value.split(",");
Map<String, String> geocode1 = gdMapGeocodingUtil.geocode(split[0], split[1]);
@@ -341,9 +420,9 @@
}
//调用高德创建轨迹
- String s = gdFalconUtil.selectTerminal(driver.getPhone());
- String track = gdFalconUtil.createTrack(s);
- orderTaxi.setTrackId(track);
+// String s = gdFalconUtil.selectTerminal(driver.getPhone());
+// String track = gdFalconUtil.createTrack(s);
+// orderTaxi.setTrackId(track);
//调用移动的小号接口 TODO 车载端使用真实号码
// Map<String, String> geocode = gdMapGeocodingUtil.geocode(orderTaxi.getStartLon().toString(), orderTaxi.getStartLat().toString());
@@ -397,7 +476,9 @@
*/
@Override
public Map<String, Object> queryOrderInfo(Integer orderId) throws Exception {
- return orderTaxiMapper.queryOrderInfo(orderId);
+ OrderTaxi orderTaxi = this.selectById(orderId);
+ OpenCity openCity = openCityService.openCity1(orderTaxi.getStartLon().toString(), orderTaxi.getStartLat().toString());
+ return orderTaxiMapper.queryOrderInfo(orderId, openCity.getId());
}
@@ -445,6 +526,20 @@
break;
}
this.updateById(orderTaxi);
+
+ Driver driver = driverService.selectById(orderTaxi.getDriverId());
+ Company company = companyService.selectById(driver.getCompanyId());
+ //中台修改订单状态
+ ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
+ request.setOrderId(orderTaxi.getTravelId());
+ request.setStatus(orderTaxi.getState());
+ request.setDriverId(driver.getEmpId().toString());
+ if(2 == orderTaxi.getPromotion()){
+ Driver driver1 = driverService.selectById(orderTaxi.getPromotionDriverId());
+ request.setPromoterId(driver1.getEmpId().toString());
+ }
+ request.setSupplierShopId(company.getEnterCode());
+ OrderUtil.modifyTravelItinerary(request);
// TODO: 2020/6/5 推送状态
new Thread(new Runnable() {
@@ -488,9 +583,22 @@
orderTaxi.setState(7);
}
this.updateById(orderTaxi);
+
+ Driver driver = driverService.selectById(orderTaxi.getDriverId());
+ Company company = companyService.selectById(driver.getCompanyId());
+ //中台修改订单状态
+ ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
+ request.setOrderId(orderTaxi.getTravelId());
+ request.setStatus(orderTaxi.getState());
+ request.setDriverId(driver.getEmpId().toString());
+ if(2 == orderTaxi.getPromotion()){
+ Driver driver1 = driverService.selectById(orderTaxi.getPromotionDriverId());
+ request.setPromoterId(driver1.getEmpId().toString());
+ }
+ request.setSupplierShopId(company.getEnterCode());
+ OrderUtil.modifyTravelItinerary(request);
//回滚司机状态为空闲
- Driver driver = driverService.selectById(orderTaxi.getDriverId());
driver.setState(2);
driverService.updateById(driver);
@@ -528,9 +636,22 @@
orderTaxi.setState(7);
}
this.updateById(orderTaxi);
+
+ Driver driver = driverService.selectById(orderTaxi.getDriverId());
+ Company company1 = companyService.selectById(driver.getCompanyId());
+ //中台修改订单状态
+ ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest();
+ request1.setOrderId(orderTaxi.getTravelId());
+ request1.setStatus(orderTaxi.getState());
+ request1.setDriverId(driver.getEmpId().toString());
+ if(2 == orderTaxi.getPromotion()){
+ Driver driver1 = driverService.selectById(orderTaxi.getPromotionDriverId());
+ request1.setPromoterId(driver1.getEmpId().toString());
+ }
+ request1.setSupplierShopId(company1.getEnterCode());
+ OrderUtil.modifyTravelItinerary(request1);
//回滚司机状态为空闲
- Driver driver = driverService.selectById(orderTaxi.getDriverId());
driver.setState(2);
driverService.updateById(driver);
@@ -753,7 +874,7 @@
}else{
orderTaxi.setMileage(0D);
this.updateById(orderTaxi);
-// return true;//第一条数据不作处理,直接存储
+ return true;//第一条数据不作处理,直接存储
}
Map<String, Double> distance = geodesyUtil.getDistance(now, old);
if(null != distance){
@@ -764,13 +885,10 @@
if(orderTaxi.getState() == 5){//大于50米表示在移动,且正在服务中的时候存入里程
orderTaxi.setMileage(new BigDecimal(orderTaxi.getMileage()).add(new BigDecimal(distance1)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
this.updateById(orderTaxi);
-// return true;
+ return true;
}
-// return false;
- }else{
- System.err.println("调用高德计算距离出错");
}
- return true;
+ return false;
}
--
Gitblit v1.7.1