From 729a5a0592cac7750e8b476c5fcb25bfc3ff8d25 Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期日, 27 七月 2025 09:06:31 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/QianYunTong --- DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java | 127 +++++++++++++++++++++++------------------- 1 files changed, 69 insertions(+), 58 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 b06a873..c8da649 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,19 +8,18 @@ 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.dao.RegionMapper; -import com.stylefeng.guns.modular.system.model.*; +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.service.*; import com.stylefeng.guns.modular.system.util.*; import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper; import com.stylefeng.guns.modular.taxi.model.OrderTaxi; import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; -import io.swagger.annotations.ApiImplicitParam; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Isolation; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; @@ -32,28 +31,28 @@ @Resource private OrderTaxiMapper orderTaxiMapper; - + @Autowired private IDriverService driverService; - + @Autowired private PushUtil pushUtil; - + @Autowired private GDFalconUtil gdFalconUtil; - - @Autowired - private RedisUtil redisUtil; - + + @Resource + private RedisTemplate<String, Object> redisTemplate; + @Autowired private IOrderPositionService orderPositionService; - + @Autowired private ISystemNoticeService systemNoticeService; - + @Autowired private ChinaMobileUtil chinaMobileUtil; - + @Autowired private GeodesyUtil geodesyUtil; @@ -134,13 +133,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); @@ -180,8 +179,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); @@ -192,16 +196,16 @@ orderTaxi.setSnatchOrderTime(new Date()); //调用高德创建轨迹 - 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")); - } +// 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")); +// } this.updateById(orderTaxi); @@ -241,15 +245,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(); @@ -331,20 +345,20 @@ orderTaxi.setArriveTime(date); orderTaxi.setStartServiceTime(date); orderTaxi.setBoardingTime(date); - - String value = redisUtil.getValue("DRIVER" + uid); - if(ToolUtil.isNotEmpty(value)){ + + String value = (String) redisTemplate.opsForValue().get("DRIVER" + uid); + if (ToolUtil.isNotEmpty(value)) { String[] split = value.split(","); Map<String, String> geocode1 = gdMapGeocodingUtil.geocode(split[0], split[1]); orderTaxi.setBoardingAddress(geocode1.get("address")); orderTaxi.setBoardingLon(Double.valueOf(split[0])); orderTaxi.setBoardingLat(Double.valueOf(split[1])); } - + //调用高德创建轨迹 - 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()); @@ -589,13 +603,13 @@ } }).start(); //添加定时任务6分钟司机不确认收款自动完成支付(仅车载端),6分钟之内司机无法接单 - String vehicle = redisUtil.getValue("VEHICLE"); + String vehicle = (String) redisTemplate.opsForValue().get("VEHICLE"); JSONArray jsonArray = new JSONArray(); if(ToolUtil.isNotEmpty(vehicle)){ jsonArray = JSON.parseArray(vehicle); } jsonArray.add(orderTaxi.getDriverId()); - redisUtil.setStrValue("VEHICLE", jsonArray.toJSONString());//添加司机不能接单标识 + redisTemplate.opsForValue().set("VEHICLE", jsonArray.toJSONString());//添加司机不能接单标识 TimerTask timerTask = new TimerTask() { @Override @@ -610,8 +624,8 @@ orderTaxi1.setPayMoney(orderTaxi1.getOrderMoney()); orderTaxi1.setState(8); OrderTaxiServiceImpl.this.updateById(orderTaxi1); - - String vehicle = redisUtil.getValue("VEHICLE"); + + String vehicle = (String) redisTemplate.opsForValue().get("VEHICLE"); if(ToolUtil.isNotEmpty(vehicle)){ JSONArray jsonArray = JSON.parseArray(vehicle); for(int i = 0; i < jsonArray.size(); i++){ @@ -620,7 +634,7 @@ break; } } - redisUtil.setStrValue("VEHICLE", jsonArray.toJSONString()); + redisTemplate.opsForValue().set("VEHICLE", jsonArray.toJSONString()); } new Thread(new Runnable() { @@ -683,13 +697,13 @@ }).start(); //添加定时任务6分钟司机不确认收款自动完成支付(仅车载端),6分钟之内司机无法接单 - String vehicle = redisUtil.getValue("VEHICLE"); + String vehicle = (String) redisTemplate.opsForValue().get("VEHICLE"); JSONArray jsonArray = new JSONArray(); if(ToolUtil.isNotEmpty(vehicle)){ jsonArray = JSON.parseArray(vehicle); } jsonArray.add(orderTaxi.getDriverId()); - redisUtil.setStrValue("VEHICLE", jsonArray.toJSONString());//添加司机不能接单标识 + redisTemplate.opsForValue().set("VEHICLE", jsonArray.toJSONString());//添加司机不能接单标识 TimerTask timerTask = new TimerTask() { @Override @@ -704,8 +718,8 @@ orderTaxi1.setPayMoney(orderTaxi1.getOrderMoney()); orderTaxi1.setState(8); OrderTaxiServiceImpl.this.updateById(orderTaxi1); - - String vehicle = redisUtil.getValue("VEHICLE"); + + String vehicle = (String) redisTemplate.opsForValue().get("VEHICLE"); if(ToolUtil.isNotEmpty(vehicle)){ JSONArray jsonArray = JSON.parseArray(vehicle); for(int i = 0; i < jsonArray.size(); i++){ @@ -714,7 +728,7 @@ break; } } - redisUtil.setStrValue("VEHICLE", jsonArray.toJSONString()); + redisTemplate.opsForValue().set("VEHICLE", jsonArray.toJSONString()); } new Thread(new Runnable() { @@ -754,7 +768,7 @@ }else{ orderTaxi.setMileage(0D); this.updateById(orderTaxi); -// return true;//第一条数据不作处理,直接存储 + return true;//第一条数据不作处理,直接存储 } Map<String, Double> distance = geodesyUtil.getDistance(now, old); if(null != distance){ @@ -765,13 +779,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