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