From 79eff526c529e9389d518edb516dac37119ce3aa Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期一, 08 九月 2025 16:41:11 +0800
Subject: [PATCH] 新增加跨城支付

---
 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java |   92 ++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 81 insertions(+), 11 deletions(-)

diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
index 2da4352..0a36215 100644
--- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
+++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -20,13 +20,14 @@
 import com.stylefeng.guns.modular.crossCity.warpper.OrderCrossCityWarpper;
 import com.stylefeng.guns.modular.specialTrain.dao.OrderPrivateCarMapper;
 import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar;
-import com.stylefeng.guns.modular.system.dao.PhoneMapper;
-import com.stylefeng.guns.modular.system.dao.RegionMapper;
-import com.stylefeng.guns.modular.system.dao.SysIntegralMapper;
-import com.stylefeng.guns.modular.system.dao.UserInfoMapper;
+import com.stylefeng.guns.modular.system.dao.*;
 import com.stylefeng.guns.modular.system.model.*;
 import com.stylefeng.guns.modular.system.service.*;
+import com.stylefeng.guns.modular.system.service.impl.CarServiceImpl;
+import com.stylefeng.guns.modular.system.service.impl.CompanyServiceImpl;
 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.ModifyTravelItineraryRequest;
 import com.stylefeng.guns.modular.system.warpper.BaseWarpper;
 import com.stylefeng.guns.modular.system.warpper.MerchantCouponListWarpper;
 import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper;
@@ -43,6 +44,7 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -151,11 +153,19 @@
     @Autowired
     private QrCodeConfiguration qrCodeConfiguration;
 
+    @Autowired
+    private TDriverPromotionActivityService driverPromotionActivityService;
+
     @Value("${pushMinistryOfTransport}")
     private boolean pushMinistryOfTransport;
 
     @Value("${callbackPath}")
     private String callbackPath;
+    @Autowired
+    private CarModelMapper carModelMapper;
+    @Autowired
+    private CarServiceImpl carServiceImpl;
+    private CompanyServiceImpl companyServiceImpl;
 
 
     /**
@@ -255,7 +265,12 @@
     @Override
     public ResultUtil process(Integer orderId, Integer state, Double lon, Double lat, String address) throws Exception {
         OrderCrossCity orderCrossCity = this.selectById(orderId);
+        if(10 == orderCrossCity.getState()){
+            return ResultUtil.error("订单已被取消,不能继续操作");
+        }
         UserInfo userInfo = userInfoMapper.selectById(orderCrossCity.getUserId());
+        Driver driver = driverService.selectById(orderCrossCity.getDriverId());
+        Company company = companyServiceImpl.selectById(driver.getCompanyId());
         switch (state){
             case 3://出发前往预约点
                 orderCrossCity.setState(3);
@@ -284,15 +299,32 @@
                 orderCrossCity.setGetoffTime(new Date());
                 orderCrossCity.setState(8);//跨城直接到待评价
                 orderCrossCity.setEndServiceTime(new Date());
-
-                Driver driver = driverService.selectById(orderCrossCity.getDriverId());
                 //添加抽成及收入记录
-                Map<String, Object> map = incomeService.saveIncome(orderCrossCity.getId(), 3, orderCrossCity.getOrderMoney());
-                orderCrossCity.setSplitAllocation(JSON.toJSONString(map));
+
+                //非追缴单才需要记录收入
+                if(0 == orderCrossCity.getRecoveryOrder()){
+                    //添加收入
+                    Double orderMoney = (2 == orderCrossCity.getAbnormal() && 2 == orderCrossCity.getAbnormalStatus() ? orderCrossCity.getResponsibilityMoney().doubleValue() : orderCrossCity.getOrderMoney());
+                    Map<String, Object> map = incomeService.saveIncome(orderCrossCity.getId(), 3, orderMoney);
+                    orderCrossCity.setSplitAllocation(JSON.toJSONString(map));
+                }
+                //待审核的异常单修改状态为已关闭
+                if(2 == orderCrossCity.getAbnormal() && 1 == orderCrossCity.getAbnormalStatus()){
+                    orderCrossCity.setAbnormalStatus(3);
+                    orderCrossCity.setResponsibilityMoney(new BigDecimal(orderCrossCity.getOrderMoney()));
+                    orderCrossCity.setResponsibilityType(3);
+                    orderCrossCity.setAbnormalRemark("乘客已支付订单,申诉已自动关闭");
+                }
 
                 //还原座位数
                 LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCity.getLineShiftDriverId());
-                lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber());
+                if(1 == orderCrossCity.getTravelMode()){
+                    lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber());
+                }else{
+                    Car car = carServiceImpl.selectById(driver.getCarId());
+                    CarModel carModel = carModelMapper.selectById(car.getCarModelId());
+                    lineShiftDriver.setLaveSeat(carModel.getSeat() - 1);
+                }
                 lineShiftDriver.setLaveSeatNumber(
                         (ToolUtil.isNotEmpty(lineShiftDriver.getLaveSeatNumber()) ? lineShiftDriver.getLaveSeatNumber() + ","  : "") +
                                 orderCrossCity.getSeatNumber()
@@ -301,7 +333,7 @@
 
                 //修改司机空闲状态
                 List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.queryWithin30Minutes(orderCrossCity.getDriverId(), 2, 3, 4, 5, 11);
-                if(orderCrossCities.size() == 0){
+                if(orderCrossCities.size() <= 1){
                     driver = driverService.selectById(orderCrossCity.getDriverId());
                     driver.setState(2);
                     driverService.updateById(driver);
@@ -370,9 +402,25 @@
 
                 pushUtil.removeTask(orderId, 3);//删除定时任务,结束推送数据
                 systemNoticeService.addSystemNotice(1, "司机已结束本次行程,谢谢使用", orderCrossCity.getUserId(), 1);
+                promotion(orderId);
                 break;
         }
         this.updateById(orderCrossCity);
+
+        //中台修改订单状态
+        ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest();
+        request1.setOrderId(orderCrossCity.getTravelId());
+        request1.setStatus(orderCrossCity.getState());
+        if (null != orderCrossCity.getDriverId()) {
+            request1.setDriverId(driver.getEmpId().toString());
+            request1.setSupplierShopId(company.getEnterCode());
+        }
+        if (2 == orderCrossCity.getPromotion()) {
+            Driver driver2 = driverService.selectById(orderCrossCity.getPromotionDriverId());
+            request1.setPromoterId(driver2.getEmpId().toString());
+        }
+        OrderUtil.modifyTravelItinerary(request1);
+
 
         // TODO: 2020/6/5 推送状态
         new Thread(new Runnable() {
@@ -385,7 +433,29 @@
         return ResultUtil.success();
     }
 
+    public void promotion(Integer orderId) {
+        OrderCrossCity orderCrossCity = this.baseMapper.selectById(orderId);
+        UserInfo userInfo = userInfoMapper.selectById(orderCrossCity.getUserId());
+        if(orderCrossCity.getPromotionDriverId()!=null ){
+            String registAreaCode = userInfo.getRegistAreaCode();
+            TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", registAreaCode).le("startTime", new Date()).ge("endTime", new Date()).last("AND FIND_IN_SET(" + 3 + ", bizType) limit 1"));
+            System.out.println("ddddd"+tDriverPromotionActivity);
+            if(tDriverPromotionActivity!=null){
+                Double payMoney = orderCrossCity.getPayMoney();
+                System.out.println(payMoney);
+                BigDecimal bigDecimal = tDriverPromotionActivity.getCommissionRatio().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(payMoney)).setScale(2, RoundingMode.HALF_UP);
+                System.out.println(bigDecimal);
+                orderCrossCity.setPromotionDriverId(userInfo.getBindDriverId());
+                orderCrossCity.setPromotionMoney(bigDecimal);
+                orderCrossCity.setPromotionActivityId(tDriverPromotionActivity.getId());
+                orderCrossCity.setSuccessTime(new Date());
+                this.baseMapper.updateById(orderCrossCity);
+            }
+        }
 
+
+
+    }
     /**
      * 获取订单明细
      * @param orderId
@@ -915,7 +985,7 @@
         String lat = orderPosition.getLat();
         OrderCrossCity order = this.selectById(orderId);
         if(null == order){
-            System.err.println("订单数据异常:" + orderId);
+            System.err.println("跨城订单数据异常:" + orderId);
             return false;
         }
 

--
Gitblit v1.7.1