From b50c961c49851d140d77d549db34a9f6400dadd4 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期二, 19 八月 2025 19:03:10 +0800
Subject: [PATCH] 跨城推广

---
 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java |  139 +++++++++++++++++++++++++--------------------
 1 files changed, 77 insertions(+), 62 deletions(-)

diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java
index d3625af..7f36969 100644
--- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java
+++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.stylefeng.guns.core.util.ToolUtil;
 import com.stylefeng.guns.modular.account.service.ITEnterpriseWithdrawalService;
@@ -126,38 +127,42 @@
 //        if(null != query){
 //            return ResultUtil.error("有未完成支付的改派申请");
 //        }
+        int types=1;
         Reassign query = reassignMapper.query(uid, null, reassign.getOrderId(), reassign.getOrderType(), 1);
         if (null != query) {
+            types=2;
 //            return ResultUtil.error("不能重复提交申请");
             reassignMapper.deleteById(query.getId());
         }
         query = reassignMapper.query(uid, null, reassign.getOrderId(), reassign.getOrderType(), 2);
-        if (null != query) {
-            return ResultUtil.error("您提交的申请正在处理中");
-        }
 
+        if (null != query) {
+            types=2;
+//            return ResultUtil.error("您提交的申请正在处理中");
+        }
         //获取支付金额
         Double aDouble = orderService.queryReassignMoney(reassign.getOrderId(), reassign.getOrderType());
         reassign.setMoney(aDouble);
         reassign.setOriginalDriverId(uid);
         reassign.setOriginalCarId(driver.getCarId());
         reassign.setInsertTime(new Date());
-        this.insert(reassign);
-
-        systemNoticeService.addSystemNotice(2, "您的改派申请已成功提交,我们会尽快为你处理!", uid, 1);
+        if(types==1){
+            this.insert(reassign);
+        }
+//        systemNoticeService.addSystemNotice(2, "您的改派申请已成功提交,我们会尽快为你处理!", uid, 1);
 
         //开始支付
         if (null != reassign.getPayType()) {
             if (reassign.getPayType() == 1) {//微信支付
                 reassign.setState(1);
 
-                resultUtil = payMoneyUtil.weixinpay("改派订单", "", reassign.getId() + "_" + reassign.getOrderType() + "_" + UUIDUtil.getRandomCode(5), aDouble.toString(), "/base/wxReassign", "APP", "");
-                paymentRecordService.saveData(1, uid, 2, reassign.getOrderId(), reassign.getOrderType(), 1, aDouble, "", 1);//添加预支付数据
+                resultUtil = payMoneyUtil.weixinpay("改派订单", "", reassign.getId() + "_" + reassign.getOrderType() + "_" + UUIDUtil.getRandomCode(5), "0", "/base/wxReassign", "APP", "");
+                paymentRecordService.saveData(1, uid, 2, reassign.getOrderId(), reassign.getOrderType(), 1, 0.0, "", 1);//添加预支付数据
             }
             if (reassign.getPayType() == 2) {//支付宝
                 reassign.setState(1);
-                resultUtil = payMoneyUtil.alipay("改派订单", "改派订单", "", reassign.getId() + "_" + reassign.getOrderType() + "_" + UUIDUtil.getRandomCode(5), aDouble.toString(), "/base/aliReassign");
-                paymentRecordService.saveData(1, uid, 2, reassign.getOrderId(), reassign.getOrderType(), 2, aDouble, "", 1);//添加预支付数据
+                resultUtil = payMoneyUtil.alipay("改派订单", "改派订单", "", reassign.getId() + "_" + reassign.getOrderType() + "_" + UUIDUtil.getRandomCode(5), "0", "/base/aliReassign");
+                paymentRecordService.saveData(1, uid, 2, reassign.getOrderId(), reassign.getOrderType(), 2, 0.0, "", 1);//添加预支付数据
             }
             if (reassign.getPayType() == 3) {//余额
                 reassign.setState(2);
@@ -207,7 +212,7 @@
                         //添加已收入明细
 //                        incomeService.saveData(1, orderPrivateCar.getCompanyId(), 4, orderPrivateCar.getId(), 1, reassign.getMoney());
                         // qyt 改派直接推送
-                        pushOrderPrivate(orderPrivateCar, uid);
+                        pushOrderPrivate(orderPrivateCar, uid,types);
                         break;
                     case 2:
                         OrderTaxi orderTaxi = orderTaxiService.selectById(reassign.getOrderId());
@@ -233,7 +238,7 @@
 //                        incomeService.saveData(1, orderTaxi.getCompanyId(), 4, orderTaxi.getId(), 2, reassign.getMoney());
 
                         // qyt 改派直接推送
-                        pushOrderTaxi(orderTaxi, uid);
+                        pushOrderTaxi(orderTaxi, uid,types);
                         break;
                     case 4:
                         OrderLogistics orderLogistics = orderLogisticsService.selectById(reassign.getOrderId());
@@ -267,14 +272,13 @@
 //                    jgPushUtil.push(2,"有新的改派订单需要处理,请及时处理!", "订单改派", map, "DISPATCH" + dispatch.getId());
 //                }
 
-
             }
-            if (reassign.getPayType() == 4) {
-                // TODO 司机云闪付 改派调起云闪付
-                Double payMoney = reassign.getMoney();
-                paymentRecordService.saveData(1, uid, 2, reassign.getOrderId(), reassign.getOrderType(), 4, aDouble, "", 1);//添加预支付数据
-                resultUtil = placeAnOrder(new BigDecimal(payMoney), 4, 1, reassign.getId());
-            }
+//            if (reassign.getPayType() == 4) {
+//                // TODO 司机云闪付 改派调起云闪付
+//                Double payMoney = reassign.getMoney();
+//                paymentRecordService.saveData(1, uid, 2, reassign.getOrderId(), reassign.getOrderType(), 4, aDouble, "", 1);//添加预支付数据
+//                resultUtil = placeAnOrder(new BigDecimal(payMoney), 4, 1, reassign.getId());
+//            }
         }
         return resultUtil;
     }
@@ -284,8 +288,12 @@
         Driver driver = driverService.selectById(uid);
         //修改改派通知状态
         switch (reassign.getOrderType()) {
+
             case 1:
                 OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(reassign.getOrderId());
+                if(orderPrivateCar.getState() == 10){
+                    return ResultUtil.error("订单已取消");
+                }
                 orderPrivateCar.setState(orderPrivateCar.getOldState());
                 orderPrivateCar.setReassignNotice(0);
                 orderPrivateCarService.updateById(orderPrivateCar);
@@ -305,6 +313,9 @@
                 break;
             case 2:
                 OrderTaxi orderTaxi = orderTaxiService.selectById(reassign.getOrderId());
+                if(orderTaxi.getState() == 10){
+                    return ResultUtil.error("订单已取消");
+                }
                 orderTaxi.setState(orderTaxi.getOldState());
                 orderTaxi.setReassignNotice(0);
                 orderTaxiService.updateById(orderTaxi);
@@ -322,6 +333,7 @@
                 OrderUtil.modifyTravelItinerary(request1);
                 break;
         }
+        reassignMapper.delete(new EntityWrapper<Reassign>().eq("orderId",reassign.getOrderId()).eq("orderType",reassign.getOrderType()));
         return ResultUtil.success();
     }
 
@@ -746,7 +758,7 @@
      * @param orderTaxi
      * @throws Exception
      */
-    public void pushOrderTaxi(OrderTaxi orderTaxi, Integer uid) throws Exception {
+    public void pushOrderTaxi(OrderTaxi orderTaxi, Integer uid,int type) throws Exception {
         new Thread(new Runnable() {
             @Override
             public void run() {
@@ -759,7 +771,8 @@
                     }
                     OpenCity openCity = openCityService.openCity1(orderTaxi.getStartLon().toString(), orderTaxi.getStartLat().toString());
                     List<PushOrder> querys = pushOrderService.querys(null, 2, openCity.getId());//获取需要推送的次数
-                    for (int i = 1; i <= 6; i++) {
+                    int size=18;
+                    for (int i = 1; i <= size; i++) {
                         int finalI = i;
                         PushOrder pushOrder = querys.stream().filter(s -> s.getType() == (finalI <= 3 ? finalI : 3)).findFirst().orElse(null);
                         System.out.println("pushOrder:" + pushOrder);
@@ -790,10 +803,13 @@
                         Thread.sleep(pushOrder.getPushTime() * 1000);//设置等待时间
                         Integer state = orderTaxi1.getState();
                         if (state != 1 || state!= 11) {
+                            orderIds.remove(orderTaxi.getId());
                             break;
                         }
-                        if (i == 6 && (state == 1 || state==11)) {
+                        if (i == 18 && (state == 1 || state==11)) {
+                            System.err.println("结束改派退单-------------修改订单为取消状态");
                             pushUtil.pushEndPush(1, orderTaxi.getUserId(), orderTaxi.getId(), 2);
+                            pushUtil.pushOrderState(2, orderTaxi.getDriverId(), orderTaxi.getId(), 2, 10);
                             orderTaxi1.setState(10);
                             orderTaxiService.updateById(orderTaxi1);
                             orderIds.remove(orderTaxi.getId());
@@ -812,7 +828,7 @@
      * @param orderPrivateCar
      * @throws Exception
      */
-    public void pushOrderPrivate(OrderPrivateCar orderPrivateCar, Integer uid) throws Exception {
+    public void pushOrderPrivate(OrderPrivateCar orderPrivateCar, Integer uid,int type) throws Exception {
         new Thread(new Runnable() {
             @Override
             public void run() {
@@ -827,7 +843,8 @@
                     }
                     OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
                     List<PushOrder> querys = pushOrderService.querys(null, 1, openCity.getId());//获取需要推送的次数
-                    for (int i = 1; i <= 6; i++) {
+                    int size=18;
+                    for (int i = 1; i <= size; i++) {
                         OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(id);
                         if (null == orderPrivateCar || (orderPrivateCar.getState() > 1 && orderPrivateCar.getState() != 11)) {
                             break;
@@ -835,49 +852,47 @@
                         int finalI = i;
                         PushOrder pushOrder = querys.stream().filter(s -> s.getType() == (finalI <= 3 ? finalI : 3)).findFirst().orElse(null);
                         System.out.println("pushOrder:" + pushOrder);
-                        int i2 = pushOrder.getPushTime() / 10;
-                        if (i2 == 0) {
-                            i2 = 1;
+
+                        if (orderPrivateCar.getState() > 1 && orderPrivateCar.getState() != 11) {
+                            break;
                         }
-                        for (int i1 = 0; i1 < i2; i1++) {
-                            if (orderPrivateCar.getState() > 1 && orderPrivateCar.getState() != 11) {
-                                break;
-                            }
-                            //获取空闲司机
-                            List<Driver> list = driverService.queryIdleDriver(orderType, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机
-                            list = list.stream().filter(e -> e.getId() != uid).collect(Collectors.toList());
-                            if (list.size() > 0) {
-                                double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数
-                                int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取)
-                                lastIndex = lastIndex == 0 ? list.size() : lastIndex;
-                                list = list.subList(0, lastIndex);//获取空闲司机中占比数据
-                                for (Driver driver : list) {//开始进行推送
-                                    boolean bo = false;
-                                    for (Integer integer : integers) {
-                                        if (integer.compareTo(driver.getId()) == 0) {
-                                            bo = true;
-                                            break;
-                                        }
+                        //获取空闲司机
+                        List<Driver> list = driverService.queryIdleDriver(orderType, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机
+                        list = list.stream().filter(e -> !e.getId().equals(uid)).collect(Collectors.toList());
+                        if (list.size() > 0) {
+                            double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数
+                            int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取)
+                            lastIndex = lastIndex == 0 ? list.size() : lastIndex;
+                            list = list.subList(0, lastIndex);//获取空闲司机中占比数据
+                            for (Driver driver : list) {//开始进行推送
+                                boolean bo = false;
+                                for (Integer integer : integers) {
+                                    if (integer.compareTo(driver.getId()) == 0) {
+                                        bo = true;
+                                        break;
                                     }
-                                    if (bo) {
-                                        continue;
-                                    }
-                                    pushUtil.pushOrderState(2, driver.getId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), pushOrder.getPushTime());
                                 }
-                            }
-                            Thread.sleep(10000);//设置等待时间
-                            Integer state = orderPrivateCar.getState();
-                            if (state > 1 && state != 11) {
-                                orderIds.remove(orderPrivateCar.getId());
-                                return;
-                            }
-                            if (i == 6 && (state == 1 || state==11)) {
-                                pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1);
-                                orderPrivateCar.setState(10);
-                                orderPrivateCarService.updateById(orderPrivateCar);
-                                orderIds.remove(orderPrivateCar.getId());
+                                if (bo) {
+                                    continue;
+                                }
+                                pushUtil.pushOrderState(2, driver.getId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), pushOrder.getPushTime());
                             }
                         }
+                        Thread.sleep(pushOrder.getPushTime() * 1000);//设置等待时间
+                        Integer state = orderPrivateCar.getState();
+                        if (state > 1 && state != 11) {
+                            orderIds.remove(orderPrivateCar.getId());
+                            return;
+                        }
+                        if (i == 18 && (state == 1 || state==11)) {
+                            System.err.println("结束改派退单-------------修改订单为取消状态");
+                            pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1);
+                            pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, 10);
+                            orderPrivateCar.setState(10);
+                            orderPrivateCarService.updateById(orderPrivateCar);
+                            orderIds.remove(orderPrivateCar.getId());
+                        }
+
                     }
                 } catch (Exception e) {
                     e.printStackTrace();

--
Gitblit v1.7.1