From 016ddc332273c36e437a6f3b5f0a25574d5b7b78 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期五, 05 九月 2025 09:12:43 +0800
Subject: [PATCH] bug修改

---
 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java |   92 ++++++++++++++++++++++++++++++++-------------
 1 files changed, 65 insertions(+), 27 deletions(-)

diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
index 0fc2013..e60c2c4 100644
--- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
+++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -169,9 +169,8 @@
     private IOpenCityService openCityService;
     @Autowired
     private IServerCarModelService serverCarModelService;
-//    @Autowired
-//    private ALiSendSms aLiSendSms;
-
+    @Autowired
+    private IAppOpenInfoService appOpenInfoService;
 
     @Value("${filePath}")
     private String filePath;
@@ -287,7 +286,6 @@
         orderPrivateCar.setTravelTime(travelTime);
         orderPrivateCar.setOrderType(reservation);
         orderPrivateCar.setOrderSource(orderSource);
-        orderPrivateCar.setEstimatedPrice(estimatedPrice);
         if(orderSource == 2){//扫码下单
             Driver driver = driverService.selectById(driverId);
             if(null == driver){
@@ -349,8 +347,10 @@
             orderPrivateCar.setState(7);
             if(orderSource == 2){
                 orderPrivateCar.setOrderMoney(data.get(0).getAmount());
+                orderPrivateCar.setEstimatedPrice(data.get(0).getAmount());
             }else {
                 orderPrivateCar.setOrderMoney(data.get(carIndex).getAmount());
+                orderPrivateCar.setEstimatedPrice(data.get(carIndex).getAmount());
             }
             orderPrivateCar.setPayMethod(0);
             this.insert(orderPrivateCar);
@@ -361,6 +361,11 @@
             baseWarpper.setAmount(orderPrivateCar.getOrderMoney());
             return ResultUtil.success(baseWarpper);
         }else {
+            if(orderSource == 2){
+                orderPrivateCar.setEstimatedPrice(data.get(0).getAmount());
+            }else {
+                orderPrivateCar.setEstimatedPrice(data.get(carIndex).getAmount());
+            }
             orderPrivateCar.setIsReassign(1);
             orderPrivateCar.setIsDelete(1);
             orderPrivateCar.setPayMethod(1);
@@ -899,7 +904,10 @@
         if(null == orderPrivateCar){
             return ResultUtil.error("取消订单失败,订单信息有误");
         }
-        if(orderPrivateCar.getState() > 5 && orderPrivateCar.getState() != 11){
+        if(orderPrivateCar.getPayMethod() == 0 && orderPrivateCar.getPaymentAdvanceMoney()>0 && orderPrivateCar.getState() > 5 && orderPrivateCar.getState() != 11){
+            return ResultUtil.error("取消订单失败,当前状态无法取消");
+        }
+        if(orderPrivateCar.getPayMethod() == 1 && orderPrivateCar.getState() > 5 && orderPrivateCar.getState() != 11){
             return ResultUtil.error("取消订单失败,不合法的操作");
         }
         if(null == orderPrivateCar.getDriverId()){//没有接单的情况
@@ -1116,13 +1124,13 @@
                     Company company = companyService.selectById(orderPrivateCar.getCompanyId());
                     Double taxi = company.getSpeMoney();
                     BigDecimal c =new BigDecimal(query.getMoney());//司机收入
-                    incomeService.saveData(2, orderPrivateCar.getDriverId(), 3, orderPrivateCar.getId(), 1, c.doubleValue());
                     Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                     driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                     driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                     driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                     driverService.updateById(driver);
-            
+                    incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 3, orderPrivateCar.getId(), 1, c.doubleValue(),driver.getLaveBusinessMoney());
+
                     this.deleteTask(id);//删除定时任务
 
 //                new Thread(new Runnable() {
@@ -1166,7 +1174,11 @@
                     for(int i = 1; i <= querys.size(); i++){
                         PushOrder pushOrder = pushOrderService.querys(i, 1, query.getId()).get(0);
                         //获取空闲司机
+//                        List<Driver> list = driverService.queryIdleDriver(1, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机
                         List<Driver> list = driverService.queryIdleDriver(1, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机
+                        List<Driver> list1 = driverService.queryIdleDriver_(1, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), 2.0D, null);//所有附近空闲司机
+                        list.addAll(list1);
+                        list = list.stream().distinct().collect(Collectors.toList());
                         if(list.size() > 0){
                             // 查询预约单
                             List<Integer> driverIds = list.stream().map(Driver::getId).collect(Collectors.toList());
@@ -1178,11 +1190,10 @@
                             for(Driver driver : list){//开始进行推送
                                 // 判断该司机是否有30分钟内预约单
                                 long count = orderPrivateCars.stream().filter(orderPrivateCar1 -> driver.getId().equals(orderPrivateCar1.getDriverId())
-                                        && DateUtil.dateToLocalDateTime(orderPrivateCar1.getTravelTime()).minusMinutes(query.getLimitationTime()).isBefore(LocalDateTime.now())
-                                        && DateUtil.dateToLocalDateTime(orderPrivateCar1.getTravelTime()).isAfter(LocalDateTime.now())).count();
-                                if(orderPrivateCar.getOrderType() == 2 && orderPrivateCarDriverIds.contains(driver.getId())){
-                                    continue;
-                                }
+                                        && DateUtil.dateToLocalDateTime(orderPrivateCar1.getTravelTime()).minusMinutes(query.getLimitationTime()).isBefore(LocalDateTime.now())).count();
+//                                if(orderPrivateCar.getOrderType() == 2 && orderPrivateCarDriverIds.contains(driver.getId())){
+//                                    continue;
+//                                }
                                 if(count > 0){
                                     continue;
                                 }
@@ -1211,10 +1222,26 @@
                             // 第三轮取消订单
                             orderPrivateCar.setState(10);
                             orderPrivateCarMapper.updateById(orderPrivateCar);
+                            pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0);
                             // 添加站内信
                             systemNoticeService.addSystemNotice(1, "当前区域未能及时为您匹配到合适车辆。为避免耽误您的行程,系统已自动取消订单,建议您稍后重新尝试。", orderPrivateCar.getUserId(), 1);
-                            // TODO 0731 添加短信发送
-
+                            // 查询是否开启短信通知
+                            AppOpenInfo appOpenInfo = appOpenInfoService.selectOne(new EntityWrapper<AppOpenInfo>()
+                                    .eq("type", 3));
+                            if(Objects.nonNull(appOpenInfo) && appOpenInfo.getIsOpen() == 1){
+                                // 添加短信发送
+                                //发送记录集合
+                                JSONArray records = new JSONArray();
+                                JSONObject record = new JSONObject();
+                                UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
+                                //手机号
+                                record.put("mobile", userInfo.getPhone());
+                                //替换变量
+                                JSONObject param = new JSONObject();
+                                record.put("tpContent", param);
+                                records.add(record);
+                                SMSUtil.sendSmsTp(380702L, records);
+                            }
                         }
                     }
                 } catch (Exception e) {
@@ -1546,7 +1573,6 @@
                         if(Objects.nonNull(query1)){
                             userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分
                         }
-                        userInfoService.updateById(userInfo);
                         //添加已收入明细
                         Company company = companyService.selectById(orderPrivateCar.getCompanyId());
                         Double speMoney = company.getSpeMoney();
@@ -1565,12 +1591,12 @@
                             c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                         }
                         incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue());
-                        incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue());
                         Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                         driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                         driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                         driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                         driverService.updateById(driver);
+                        incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney());
                         orderPrivateCar.setState(8);
                     }else {
                         if(orderPrivateCar.getOrderSource() == 2){
@@ -1582,13 +1608,14 @@
                         orderPrivateCar.setOrderMoney(orderMoney);
                         orderPrivateCar.setPayMoney(orderMoney);
                     }
-                    new Thread(new Runnable() {
-                        @Override
-                        public void run() {
-                            pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0);
-                            pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0);
-                        }
-                    }).start();
+//                    new Thread(new Runnable() {
+//                        @Override
+//                        public void run() {
+//                            pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0);
+//                            pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0);
+//                        }
+//                    }).start();
+                    userInfoService.updateById(userInfo);
                     systemNoticeService.addSystemNotice(1, "您已使用余额成功完成出行订单支付,谢谢使用!", uid, 1);
                     if(orderPrivateCar.getState() == 1){
                         this.pushOrder(orderPrivateCar);
@@ -1596,6 +1623,7 @@
                 }else {
                     // 后付
                     orderPrivateCar.setPayMoney(orderMoney);
+                    orderPrivateCar.setState(8);
                     if(orderPrivateCar.getIsplatPay()==1){
                         //添加已收入明细
                         Company company = companyService.selectById(orderPrivateCar.getCompanyId());
@@ -1615,12 +1643,12 @@
                             c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                         }
                         incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue());
-                        incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue());
                         Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                         driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                         driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                         driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                         driverService.updateById(driver);
+                        incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney());
                     }
 
 
@@ -1803,12 +1831,12 @@
             Company company = companyService.selectById(orderPrivateCar.getCompanyId());
             Double taxi = company.getSpeMoney();
             BigDecimal c =new BigDecimal(query.getAmount());//司机收入
-            incomeService.saveData(2, orderPrivateCar.getDriverId(), 3, orderPrivateCar.getId(), 1, c.doubleValue());
             Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
             driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
             driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
             driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
             driverService.updateById(driver);
+            incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 3, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney());
             this.deleteTask(orderPrivateCar.getId());//删除定时任务
 
             // TODO: 2020/5/24 这里需要给司机和用户推送订单状态
@@ -1906,12 +1934,12 @@
                             c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                         }
                         incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue());
-                        incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue());
                         Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                         driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                         driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                         driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                         driverService.updateById(driver);
+                        incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney());
                     }else {
                         if(orderPrivateCar.getOrderSource() == 2){
                             orderPrivateCar.setState(2);
@@ -1944,12 +1972,12 @@
                             c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                         }
                         incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue());
-                        incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue());
                         Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                         driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                         driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                         driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                         driverService.updateById(driver);
+                        incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney());
                     }
                 }
                 // TODO: 2020/5/24 这里需要给司机和用户推送订单状态
@@ -2121,6 +2149,16 @@
             List<OrderPosition> list = JSONArray.parseArray(sb.toString(), OrderPosition.class);
             orderServerWarpper.setOrderPositionList(JSONObject.toJSONString(list));
         }
+        // 查询司机服务中的订单
+        OrderPrivateCar one = this.selectOne(new EntityWrapper<OrderPrivateCar>()
+                .eq("driverId", orderPrivateCar.getDriverId())
+                .eq("state", 5)
+                .orderBy("insertTime", false)
+                .last("LIMIT 1"));
+        if(Objects.nonNull(one)){
+            orderServerWarpper.setLastLon(one.getEndLon()+"");
+            orderServerWarpper.setLastLat(one.getEndLat()+"");
+        }
         return orderServerWarpper;
     }
 

--
Gitblit v1.7.1