From cb7bb59905f6ff335ca24ec6a963d0b17d979d79 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期一, 22 九月 2025 09:08:22 +0800
Subject: [PATCH] 修改

---
 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java |  124 ++++++++++++++++++++++++++++++-----------
 1 files changed, 91 insertions(+), 33 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 77e3a99..36411db 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
@@ -35,6 +35,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
+import org.springframework.util.StringUtils;
 import org.springframework.web.client.RestTemplate;
 
 import javax.annotation.Resource;
@@ -171,7 +172,8 @@
     private IServerCarModelService serverCarModelService;
     @Autowired
     private IAppOpenInfoService appOpenInfoService;
-
+    @Resource
+    private UserInfoMapper userInfoMapper;
     @Value("${filePath}")
     private String filePath;
 
@@ -286,24 +288,24 @@
         orderPrivateCar.setTravelTime(travelTime);
         orderPrivateCar.setOrderType(reservation);
         orderPrivateCar.setOrderSource(orderSource);
+        Driver driver2 = driverService.selectById(driverId);
         if(orderSource == 2){//扫码下单
-            Driver driver = driverService.selectById(driverId);
-            if(null == driver){
+            if(null == driver2){
                 return ResultUtil.error("司机信息有误,无法完成下单");
             }
-            if(driver.getAuthState() == 1){
+            if(driver2.getAuthState() == 1){
                 return ResultUtil.error("司机信息还未完成审核,无法完成下单");
             }
-            if(driver.getAuthState() == 3){
+            if(driver2.getAuthState() == 3){
                 return ResultUtil.error("司机账户已被冻结,无法提供服务");
             }
-            if(driver.getAuthState() == 4){
+            if(driver2.getAuthState() == 4){
                 return ResultUtil.error("司机信息未通过审核,无法提供服务");
             }
-            if(driver.getState() == 1){
+            if(driver2.getState() == 1){
                 return ResultUtil.error("司机还未上线,无法提供服务");
             }
-            if(driver.getState() == 3){
+            if(driver2.getState() == 3){
                 return ResultUtil.error("司机正在服务中,无法提供服务");
             }
             List<DriverService> query = driverServiceService.query(driverId, 1);
@@ -312,15 +314,15 @@
             }
 
             orderPrivateCar.setDriverId(driverId);
-            orderPrivateCar.setCompanyId(driver.getFranchiseeId() != null && driver.getFranchiseeId() != 0 ? driver.getFranchiseeId() : (
-                    driver.getCompanyId() != null && driver.getCompanyId() != 0 ? driver.getCompanyId() : 1));
+            orderPrivateCar.setCompanyId(driver2.getFranchiseeId() != null && driver2.getFranchiseeId() != 0 ? driver2.getFranchiseeId() : (
+                    driver2.getCompanyId() != null && driver2.getCompanyId() != 0 ? driver2.getCompanyId() : 1));
             orderPrivateCar.setState(2);
-            orderPrivateCar.setCarId(driver.getCarId());
-            CarService query1 = carServiceMapper.query(1, driver.getCarId());
+            orderPrivateCar.setCarId(driver2.getCarId());
+            CarService query1 = carServiceMapper.query(1, driver2.getCarId());
             orderPrivateCar.setServerCarModelId(query1.getServerCarModelId());
             orderPrivateCar.setSnatchOrderTime(new Date());
-            driver.setState(3);
-            driverService.updateById(driver);
+            driver2.setState(3);
+            driverService.updateById(driver2);
         }
         // 查询城市的订单额度
         OpenCity openCity = openCityService.selectOne(new EntityWrapper<OpenCity>()
@@ -340,7 +342,17 @@
         // 查询预估价格
         ResultUtil<List<ServerCarModelWarpper>> listResultUtil = serverCarModelService.queryServerCarModel(startLon + "," + startLat, endLon + "," + endLat, 1);
         List<ServerCarModelWarpper> data = listResultUtil.getData();
-        data = data.stream().filter(e -> serverCarModelId.equals(e.getId())).sorted(Comparator.comparing(ServerCarModelWarpper::getAmount)).collect(Collectors.toList());
+        if(Objects.isNull(serverCarModelId)){
+            //获取经营业务
+            CarService query = new CarService();
+            query.setCarId(driver2.getCarId());
+            CarService service = carServiceMapper.selectOne(query);
+            if(Objects.nonNull(service)){
+                serverCarModelId = service.getServerCarModelId();
+            }
+        }
+        Integer finalServerCarModelId = serverCarModelId;
+        data = data.stream().filter(e -> finalServerCarModelId.equals(e.getId())).sorted(Comparator.comparing(ServerCarModelWarpper::getAmount)).collect(Collectors.toList());
         if(Objects.nonNull(openCity) && !CollectionUtils.isEmpty(data) && BigDecimal.valueOf(data.get(0).getAmount()).compareTo(openCity.getOrderMagnitude()) > 0){
             orderPrivateCar.setIsReassign(1);
             orderPrivateCar.setIsDelete(1);
@@ -362,7 +374,9 @@
             return ResultUtil.success(baseWarpper);
         }else {
             if(orderSource == 2){
-                orderPrivateCar.setEstimatedPrice(data.get(0).getAmount());
+                if(!CollectionUtils.isEmpty(data)){
+                    orderPrivateCar.setEstimatedPrice(data.get(0).getAmount());
+                }
             }else {
                 orderPrivateCar.setEstimatedPrice(data.get(carIndex).getAmount());
             }
@@ -904,7 +918,10 @@
         if(null == orderPrivateCar){
             return ResultUtil.error("取消订单失败,订单信息有误");
         }
-        if(orderPrivateCar.getState() > 5 && orderPrivateCar.getState() != 11){
+        if(orderPrivateCar.getPayMethod() == 0 && (Objects.nonNull(orderPrivateCar.getPaymentAdvanceMoney()) && 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()){//没有接单的情况
@@ -926,6 +943,26 @@
                 integer = orderCancelService.saveData(id, 1, "无司机接单", "无司机接单", null, null, 2, 1, uid);
                 orderPrivateCar.setState(10);
                 this.updateById(orderPrivateCar);
+                if (orderPrivateCar.getPayMethod() == 0 && (Objects.nonNull(orderPrivateCar.getPaymentAdvanceMoney()) && orderPrivateCar.getPaymentAdvanceMoney()>0)) {
+                    // 退款
+                    if (orderPrivateCar.getPayType() == 1 && orderPrivateCar.getOrderMoney() != 0) {//微信退款
+                        // 微信退款
+                        payMoneyUtil.wxRefund(orderPrivateCar.getTransactionId(), orderPrivateCar.getOrderNum(), String.valueOf(orderPrivateCar.getPaymentAdvanceMoney()), String.valueOf(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney())), "/base/transferWXNotify");
+//                        orderPrivateCar.setPayMoney(new BigDecimal(orderPrivateCar.getOrderMoney()).doubleValue());
+                    }
+                    if (orderPrivateCar.getPayType() == 2 && orderPrivateCar.getOrderMoney() != 0) {//支付宝退款
+                        // 支付宝退款
+                        payMoneyUtil.aliRefund(orderPrivateCar.getTransactionId(), String.valueOf(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).multiply(new BigDecimal(100))));
+//                        orderPrivateCar.setPayMoney(new BigDecimal(orderPrivateCar.getOrderMoney()).doubleValue());
+                    }
+                    if (orderPrivateCar.getPayType() == 3 && orderPrivateCar.getOrderMoney() != 0) {//余额支付
+                        BigDecimal refundMoney = new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney());
+                        // 余额退款
+                        UserInfo userInfo = userInfoMapper.selectById(orderPrivateCar.getUserId());
+                        userInfo.setBalance(new BigDecimal(userInfo.getBalance()).add(refundMoney).doubleValue());
+                        userInfoMapper.updateById(userInfo);
+                    }
+                }
             }
         }else {
             CancleOrder query = cancleOrderService.query(orderPrivateCar.getOrderType(), 1, orderPrivateCar.getCompanyId());
@@ -939,6 +976,26 @@
 
                     orderPrivateCar.setState(10);
                     this.updateById(orderPrivateCar);
+                    if (orderPrivateCar.getPayMethod() == 0 && (Objects.nonNull(orderPrivateCar.getPaymentAdvanceMoney()) && orderPrivateCar.getPaymentAdvanceMoney()>0)) {
+                        // 退款
+                        if (orderPrivateCar.getPayType() == 1 && orderPrivateCar.getOrderMoney() != 0) {//微信退款
+                            // 微信退款
+                            payMoneyUtil.wxRefund(orderPrivateCar.getTransactionId(), orderPrivateCar.getOrderNum(), String.valueOf(orderPrivateCar.getPaymentAdvanceMoney()), String.valueOf(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney())), "/base/transferWXNotify");
+//                            orderPrivateCar.setPayMoney(new BigDecimal(orderPrivateCar.getOrderMoney()).doubleValue());
+                        }
+                        if (orderPrivateCar.getPayType() == 2 && orderPrivateCar.getOrderMoney() != 0) {//支付宝退款
+                            // 支付宝退款
+                            payMoneyUtil.aliRefund(orderPrivateCar.getTransactionId(), String.valueOf(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).multiply(new BigDecimal(100))));
+//                            orderPrivateCar.setPayMoney(new BigDecimal(orderPrivateCar.getOrderMoney()).doubleValue());
+                        }
+                        if (orderPrivateCar.getPayType() == 3 && orderPrivateCar.getOrderMoney() != 0) {//余额支付
+                            BigDecimal refundMoney = new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney());
+                            // 余额退款
+                            UserInfo userInfo = userInfoMapper.selectById(orderPrivateCar.getUserId());
+                            userInfo.setBalance(new BigDecimal(userInfo.getBalance()).add(refundMoney).doubleValue());
+                            userInfoMapper.updateById(userInfo);
+                        }
+                    }
                 }
                 this.deleteTask(id);//删除定时任务
 
@@ -1126,7 +1183,7 @@
                     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.getBalance());
+                    incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 3, orderPrivateCar.getId(), 1, c.doubleValue(),driver.getLaveBusinessMoney());
 
                     this.deleteTask(id);//删除定时任务
 
@@ -1187,11 +1244,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;
                                 }
@@ -1594,7 +1650,7 @@
                         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.getBalance());
+                        incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney());
                         orderPrivateCar.setState(8);
                     }else {
                         if(orderPrivateCar.getOrderSource() == 2){
@@ -1646,7 +1702,7 @@
                         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.getBalance());
+                        incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney());
                     }
 
 
@@ -1834,7 +1890,7 @@
             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.getBalance());
+            incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 3, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney());
             this.deleteTask(orderPrivateCar.getId());//删除定时任务
 
             // TODO: 2020/5/24 这里需要给司机和用户推送订单状态
@@ -1881,13 +1937,15 @@
                 transactionDetailsService.saveData(orderPrivateCar.getUserId(), "完成订单", query.getAmount(), 2, 1, 1, 1, query.getOrderId());
 //                orderPrivateCar.setState(8);
                 orderPrivateCar.setPayType(type);
-                orderPrivateCar.setTransactionId(order_id);
+                if(!StringUtils.hasLength(orderPrivateCar.getTransactionId())){
+                    orderPrivateCar.setTransactionId(order_id);
+                }
                 this.updateById(orderPrivateCar);
         
-                UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
-                SysIntegral query1 = sysIntegralMapper.query(orderPrivateCar.getCompanyId());
-                userInfo.setIntegral(userInfo.getIntegral() + (query.getAmount().intValue() * query1.getIntegral()));//积分
-                userInfoService.updateById(userInfo);
+//                UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
+//                SysIntegral query1 = sysIntegralMapper.query(orderPrivateCar.getCompanyId());
+//                userInfo.setIntegral(userInfo.getIntegral() + (query.getAmount().intValue() * query1.getIntegral()));//积分
+//                userInfoService.updateById(userInfo);
         
                 //处理优惠券和红包
                 if(null != orderPrivateCar.getCouponId()){
@@ -1937,7 +1995,7 @@
                         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.getBalance());
+                        incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney());
                     }else {
                         if(orderPrivateCar.getOrderSource() == 2){
                             orderPrivateCar.setState(2);
@@ -1975,7 +2033,7 @@
                         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.getBalance());
+                        incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney());
                     }
                 }
                 // TODO: 2020/5/24 这里需要给司机和用户推送订单状态

--
Gitblit v1.7.1