From a3990d3644885c51f4ea0fc7a27c1097f4808bfb Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期四, 30 五月 2024 11:05:42 +0800 Subject: [PATCH] 5.30 --- DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTransferServiceImpl.java | 165 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 165 insertions(+), 0 deletions(-) diff --git a/DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTransferServiceImpl.java b/DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTransferServiceImpl.java index 9b8e9c2..667a3a8 100644 --- a/DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTransferServiceImpl.java +++ b/DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTransferServiceImpl.java @@ -1,12 +1,26 @@ package com.stylefeng.guns.modular.system.service.impl; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar; import com.stylefeng.guns.modular.system.dao.TOrderTransferMapper; +import com.stylefeng.guns.modular.system.model.Driver; import com.stylefeng.guns.modular.system.model.TOrderTransfer; +import com.stylefeng.guns.modular.system.service.IDriverService; +import com.stylefeng.guns.modular.system.service.ISystemNoticeService; import com.stylefeng.guns.modular.system.service.ITOrderTransferService; +import com.stylefeng.guns.modular.system.util.GDFalconUtil; +import com.stylefeng.guns.modular.system.util.PushMinistryOfTransportUtil; +import com.stylefeng.guns.modular.system.util.PushUtil; +import com.stylefeng.guns.modular.system.util.ResultUtil; +import com.stylefeng.guns.modular.taxi.model.OrderTaxi; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.Date; import java.util.List; import java.util.Map; @@ -20,12 +34,163 @@ */ @Service public class TOrderTransferServiceImpl extends ServiceImpl<TOrderTransferMapper, TOrderTransfer> implements ITOrderTransferService { + @Resource + private TOrderTransferMapper orderTransferMapper; + @Autowired + private IDriverService driverService; + @Autowired + private GDFalconUtil gdFalconUtil; + @Autowired + private PushUtil pushUtil; + @Autowired + private PushMinistryOfTransportUtil pushMinistryOfTransportUtil; + + @Autowired + private ISystemNoticeService systemNoticeService; + @Value("${pushMinistryOfTransport}") + private boolean pushMinistryOfTransport; + @Override + public Map<String, Object> queryPushOrder(Integer orderId) throws Exception { + return orderTransferMapper.queryPushOrder(orderId); + } + + + @Override public List<Map<String, Object>> getTransferOrderList(Page<Map<String, Object>> page, String beginTime, String endTime, Integer roleType, Integer nowUserId, String orderNum, Integer orderSource, String userName, String userPhone, String passengers, String passengersPhone, Integer serverCarModelId, String driver, Integer state) { return this.baseMapper.getTransferOrderList(page, beginTime, endTime, roleType, nowUserId, orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, state); } @Override + public synchronized ResultUtil grabOrder(Integer orderId, Integer uid) throws Exception { + TOrderTransfer orderPrivateCar = this.selectById(orderId); + //处理摆渡车的情况 + if(orderPrivateCar.getType() == 2){ + //查看用户下的摆渡车是否已被人抢了 +// List<OrderPrivateCar> list = this.selectList( +// new EntityWrapper<OrderPrivateCar>() +// .eq("type", 2) +// .eq("userId", orderPrivateCar.getUserId()) +// .ne("state", 1) +// .eq("crossCityOrderId", orderPrivateCar.getCrossCityOrderId()) +// .eq("place", orderPrivateCar.getPlace()) +// ); +// List<OrderTaxi> list1 = orderTaxiService.selectList( +// new EntityWrapper<OrderTaxi>() +// .eq("type", 2) +// .eq("userId", orderPrivateCar.getUserId()) +// .ne("state", 1) +// .eq("crossCityOrderId", orderPrivateCar.getCrossCityOrderId()) +// .eq("place", orderPrivateCar.getPlace()) +// ); +// if(list.size() > 0 || list1.size() > 0){ +// return ResultUtil.error("手速有点慢哦,订单已被抢啦!"); +// } + } + + if(orderPrivateCar.getState() == 9){ + return ResultUtil.error("订单已取消"); + } + if(orderPrivateCar.getState() != 1){ + return ResultUtil.error("手速有点慢哦,订单已被抢啦!"); + } + Driver driver = driverService.selectById(uid); + orderPrivateCar.setDriverId(uid); + orderPrivateCar.setCarId(driver.getCarId()); + orderPrivateCar.setCompanyId(driver.getFranchiseeId() != null && driver.getFranchiseeId() != 0 ? driver.getFranchiseeId() : ( + driver.getCompanyId() != null && driver.getCompanyId() != 0 ? driver.getCompanyId() : 1)); + orderPrivateCar.setState(2); + orderPrivateCar.setSnatchOrderTime(new Date()); + + //调用高德创建轨迹 + String s = gdFalconUtil.selectTerminal(driver.getPhone()); + String track = gdFalconUtil.createTrack(s); + orderPrivateCar.setTrackId(track); + + //调用移动的小号接口 +// Map<String, String> geocode = gdMapGeocodingUtil.geocode(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString()); +// Region region = regionMapper.query(geocode.get("districtCode")); +// Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderPrivateCar.getPassengersPhone(), driver.getPhone(), Integer.valueOf(region.getCitycode().substring(1))); +// if(String.valueOf(map.get("code")).equals("200")){ +// orderPrivateCar.setTelX(map.get("telX")); +// orderPrivateCar.setBindId(map.get("bindId")); +// } + + //处理摆渡车的情况 + if(orderPrivateCar.getType() == 2){ +// //查看用户下的摆渡车是否已被人抢了 +// List<OrderPrivateCar> list = this.selectList( +// new EntityWrapper<OrderPrivateCar>() +// .eq("type", 2) +// .eq("userId", orderPrivateCar.getUserId()) +// .ne("state", 1) +// .eq("crossCityOrderId", orderPrivateCar.getCrossCityOrderId()) +// .eq("place", orderPrivateCar.getPlace()) +// ); +// List<OrderTaxi> list1 = orderTaxiService.selectList( +// new EntityWrapper<OrderTaxi>() +// .eq("type", 2) +// .eq("userId", orderPrivateCar.getUserId()) +// .ne("state", 1) +// .eq("crossCityOrderId", orderPrivateCar.getCrossCityOrderId()) +// .eq("place", orderPrivateCar.getPlace()) +// ); +// for(OrderPrivateCar orderPrivateCar1 : list){ +// orderPrivateCar1.setState(10); +// this.updateById(orderPrivateCar1); +// } +// for(OrderTaxi orderTaxi : list1){ +// orderTaxi.setState(10); +// orderTaxiService.updateById(orderTaxi); +// } + } + + this.updateById(orderPrivateCar); + + //如果是预约单,则不修改司机为服务中 + if(orderPrivateCar.getOrderType() != 2 || (orderPrivateCar.getOrderType() == 2 && orderPrivateCar.getTravelTime().getTime() < System.currentTimeMillis() + 600000)){ + //修改司机为服务中 + driver.setState(3); + driverService.updateById(driver); + } + + //推送相关代码------------------start---------------- + new Thread(new Runnable() { + @Override + public void run() { + pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 7, orderPrivateCar.getState()); + pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 7, orderPrivateCar.getState()); + if(orderPrivateCar.getType() == 2){ + pushUtil.pushFerryOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, 2); + } + } + }).start(); + + new Thread(new Runnable() { + @Override + public void run() { + pushUtil.pushDriverPosition(orderId, 7); + } + }).start(); + + systemNoticeService.addSystemNotice(2, "您已成功抢得专车订单,请及时联系客户!", orderPrivateCar.getDriverId()); + systemNoticeService.addSystemNotice(1, "您的订单已指派给" + driver.getName().substring(0, 1) + "师傅,请保持电话畅通!", orderPrivateCar.getUserId()); + + new Thread(new Runnable() { + @Override + public void run() { + if(pushMinistryOfTransport){ + //上传数据 + pushMinistryOfTransportUtil.orderCreate(orderId); + pushMinistryOfTransportUtil.orderMatch(orderId); + } + } + }).start(); + + return ResultUtil.success(); + } + + @Override public Map<String, Object> getTransferOrderDetailById(Integer orderId) { return this.baseMapper.getTransferOrderDetailById(orderId); } -- Gitblit v1.7.1