From d6a14beb93cb572247db0edff3f25f99e217fcf1 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 22 八月 2025 15:34:17 +0800 Subject: [PATCH] 修改bug --- DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java | 230 ++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 176 insertions(+), 54 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..9d06f60 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,24 +143,28 @@ * @throws Exception */ @Override - public synchronized ResultUtil grabOrder(Integer orderId, Integer uid) throws Exception { - OrderPrivateCar orderPrivateCar1 = orderPrivateCarService.selectById(orderId); - if(null != orderPrivateCar1 && orderPrivateCar1.getType() == 3 && orderPrivateCar1.getState() != 1){ - return ResultUtil.error("订单已被抢了"); - } - OrderTaxi orderTaxi = null; - if(null != orderPrivateCar1 && orderPrivateCar1.getType() == 3 && orderPrivateCar1.getState() == 1){ - orderPrivateCarService.deleteById(orderId); - OrderTaxi orderTaxi1 = setOrderTaxi(orderPrivateCar1); - this.insert(orderTaxi1); - orderTaxi = orderTaxi1; + public ResultUtil grabOrder(Integer orderId, Integer uid) throws Exception { + OrderTaxi orderTaxi = this.selectById(orderId); + if(null != orderTaxi && orderTaxi.getType() == 2){ + if(orderTaxi.getState() != 1){ + return ResultUtil.error("订单已被抢了"); + } }else{ - orderTaxi = this.selectById(orderId); + OrderPrivateCar orderPrivateCar1 = orderPrivateCarService.selectById(orderId); + if(null != orderPrivateCar1 && orderPrivateCar1.getType() == 3 && orderPrivateCar1.getState() != 1&& orderPrivateCar1.getState() != 11){ + return ResultUtil.error("订单已被抢了"); + } + orderTaxi = null; + if(null != orderPrivateCar1 && orderPrivateCar1.getType() == 3 && (orderPrivateCar1.getState() == 1|| orderPrivateCar1.getState() == 11)){ + orderPrivateCarService.deleteById(orderId); + OrderTaxi orderTaxi1 = setOrderTaxi(orderPrivateCar1); + this.insert(orderTaxi1); + orderTaxi = orderTaxi1; + } } if(null == orderTaxi){ return ResultUtil.error("订单已被抢了"); } - //处理摆渡车的情况 if(orderTaxi.getType() == 2){ @@ -179,8 +193,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 +210,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 +302,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 +336,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).le("startTime", new Date()).ge("endTime", new Date()).last("AND FIND_IN_SET(" + 2 + ", bizType) limit 1")); + if(tDriverPromotionActivity!=null){ + return userInfo.getBindDriverId(); + } + } + return null; + } public OrderTaxi setOrderTaxi(OrderPrivateCar orderPrivateCar){ @@ -331,7 +414,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 +424,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 +480,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 +530,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 +587,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 +640,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 +878,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 +889,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