From 656ac293601d6da08d25e892a79604fe3edcd086 Mon Sep 17 00:00:00 2001
From: zhibing.pu <393733352@qq.com>
Date: 星期四, 01 八月 2024 16:04:46 +0800
Subject: [PATCH] 修改2.0 bug

---
 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java |  141 ++++++++++++++++++++++++++++++++--------------
 1 files changed, 98 insertions(+), 43 deletions(-)

diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
index 8f23512..1c6223e 100644
--- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
+++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.stylefeng.guns.core.common.constant.state.Order;
 import com.stylefeng.guns.core.util.DateUtil;
@@ -15,10 +16,7 @@
 import com.stylefeng.guns.modular.system.dao.PhoneMapper;
 import com.stylefeng.guns.modular.system.dao.RegionMapper;
 import com.stylefeng.guns.modular.system.dao.SysReformistMapper;
-import com.stylefeng.guns.modular.system.model.BankCard;
-import com.stylefeng.guns.modular.system.model.Driver;
-import com.stylefeng.guns.modular.system.model.OrderPosition;
-import com.stylefeng.guns.modular.system.model.Region;
+import com.stylefeng.guns.modular.system.model.*;
 import com.stylefeng.guns.modular.system.service.*;
 import com.stylefeng.guns.modular.system.util.*;
 import com.stylefeng.guns.modular.system.util.GoogleMap.DistancematrixVo;
@@ -93,6 +91,18 @@
 
     @Autowired
     private IBankCardService bankCardService;
+    
+    @Autowired
+    private ICancleOrderService cancleOrderService;
+    
+    @Autowired
+    private ISettlementDetailService settlementDetailService;
+    
+    @Autowired
+    private ISettlementRecordService settlementRecordService;
+    
+    @Resource
+    private IBalanceUsageRecordService balanceUsageRecordService;
 
 
 
@@ -123,7 +133,7 @@
 //        List<Map<String, Object>> list2 = orderCrossCityService.queryOrderList(state, uid);
 //        datas.addAll(list2);
         //小件物流
-        List<Map<String, Object>> list3 = orderLogisticsService.queryOrderList(uid, language);
+        List<Map<String, Object>> list3 = orderLogisticsService.queryOrderList(state, uid, language);
         datas.addAll(list3);
 
         //分页
@@ -154,16 +164,16 @@
         List<Map<String, Object>> datas = new ArrayList<>();
         if(type == 1){
             //出租车
-            List<Map<String, Object>> list = orderTaxiService.queryOrderList(state, uid);
+            List<Map<String, Object>> list = orderTaxiService.queryOrderList(language, state, uid);
             datas.addAll(list);
             //专车
             List<Map<String, Object>> list1 = orderPrivateCarService.queryOrderList(state, uid, language);
             datas.addAll(list1);
             //跨城
-            List<Map<String, Object>> list2 = orderCrossCityService.queryOrderList(state, uid);
+            List<Map<String, Object>> list2 = orderCrossCityService.queryOrderList(language, state, uid);
             datas.addAll(list2);
         }else{//小件物流
-            List<Map<String, Object>> list3 = orderLogisticsService.queryOrderList(uid, language);
+            List<Map<String, Object>> list3 = orderLogisticsService.queryOrderList(state, uid, language);
             datas.addAll(list3);
         }
 
@@ -199,12 +209,30 @@
 //        datas.addAll(list);
         //专车
         List<Map<String, Object>> list1 = orderPrivateCarService.queryMyAllOrder(state, uid, language);
+        for (Map<String, Object> map : list1) {
+            Integer id = Integer.valueOf(map.get("id").toString());
+            map.put("settleAccounts", 0);
+            SettlementDetail settlementDetail = settlementDetailService.selectOne(new EntityWrapper<SettlementDetail>().eq("orderId", id).eq("orderType", 1));
+            if(null != settlementDetail){
+                SettlementRecord settlementRecord = settlementRecordService.selectById(settlementDetail.getSettlementRecordId());
+                map.put("settleAccounts", null == settlementRecord || settlementRecord.getPaymentStatus() == 1 ? 0 : 1);
+            }
+        }
         datas.addAll(list1);
         //跨城
 //        List<Map<String, Object>> list2 = orderCrossCityService.queryMyAllOrder(state, uid);
 //        datas.addAll(list2);
         //小件物流
         List<Map<String, Object>> list3 = orderLogisticsService.queryMyAllOrder(state, uid, language);
+        for (Map<String, Object> map : list3) {
+            Integer id = Integer.valueOf(map.get("id").toString());
+            map.put("settleAccounts", 0);
+            SettlementDetail settlementDetail = settlementDetailService.selectOne(new EntityWrapper<SettlementDetail>().eq("orderId", id).eq("orderType", 4));
+            if(null != settlementDetail){
+                SettlementRecord settlementRecord = settlementRecordService.selectById(settlementDetail.getSettlementRecordId());
+                map.put("settleAccounts", null == settlementRecord || settlementRecord.getPaymentStatus() == 1 ? 0 : 1);
+            }
+        }
         datas.addAll(list3);
 
         List<OrderListWarpper> orderListWarpper = OrderListWarpper.getOrderListWarpper(datas);
@@ -469,11 +497,11 @@
      * @throws Exception
      */
     @Override
-    public Map<String, Object> queryOrderInfo(Integer orderId, Integer orderType) throws Exception {
+    public Map<String, Object> queryOrderInfo(Integer language, Integer orderId, Integer orderType) throws Exception {
         Map<String, Object> map = null;
         switch (orderType){
             case 1://专车
-                map = orderPrivateCarService.queryOrderInfo(orderId);
+                map = orderPrivateCarService.queryOrderInfo(language, orderId);
                 break;
             case 2://出租
 //                map = orderTaxiService.queryOrderInfo(orderId);
@@ -482,7 +510,7 @@
 //                map = orderCrossCityService.queryOrderCrossCityInfo(orderId);
                 break;
             case 4://同城小件
-                map = orderLogisticsService.queryOrderInfo(orderId);
+                map = orderLogisticsService.queryOrderInfo(language, orderId);
                 break;
             case 5://跨城小件
 //                map = orderLogisticsService.queryOrderInfo(orderId);
@@ -539,10 +567,10 @@
      * @throws Exception
      */
     @Override
-    public ResultUtil process(Integer orderId, Integer orderType, Integer state, Integer uid, Double lon, Double lat,String phone, Integer language) throws Exception {
+    public ResultUtil process(Integer orderId, Integer orderType, Integer state, Integer uid, Double lon, Double lat,String phone, String pickUpCode, Integer language) throws Exception {
         ReverseGeocodeVo reverseGeocode = GoogleMapUtil.getReverseGeocode(lat, lon);
         if(null == reverseGeocode){
-            return ResultUtil.error(language == 1 ? "无效的经纬度" : language == 2 ? "Invalid latitude and longitude" : "Latitude et longitude invalides");
+            return ResultUtil.error(language == 1 ? "无效的经纬度" : language == 2 ? "Invalid longitude and latitude" : "Longitude et latitude non valides");
         }
         String address = reverseGeocode.getAddress();
         switch (orderType){
@@ -553,7 +581,7 @@
             case 3://城际
 //                return orderCrossCityService.process(orderId, state, lon, lat, address);
             case 4://同城小件
-                return orderLogisticsService.process(orderId, state, lon, lat, address, language);
+                return orderLogisticsService.process(orderId, state, lon, lat, address, pickUpCode, language);
             case 5://跨城小件
 //                return orderLogisticsService.process(orderId, state, lon, lat, address);
             case 6:
@@ -575,16 +603,16 @@
      * @throws Exception
      */
     @Override
-    public ResultUtil confirmFees(Integer orderId, Integer orderType, Integer type, Double travelFee, Double parkingFee, Double crossingFee) throws Exception {
+    public ResultUtil confirmFees(Integer language, Integer orderId, Integer orderType, Integer type, Double travelFee, Double parkingFee, Double crossingFee) throws Exception {
         switch (orderType){
             case 1://专车
-                return orderPrivateCarService.confirmFees(orderId, type, parkingFee, crossingFee);
+                return orderPrivateCarService.confirmFees(language, orderId, type, parkingFee, crossingFee);
             case 2://出租
                 return orderTaxiService.confirmFees(orderId, type, travelFee, parkingFee, crossingFee);
             case 3://城际(没有此流程)
                 break;
             case 4://
-                break;
+                return orderLogisticsService.confirmFees(language, orderId, type, parkingFee, crossingFee);
             case 5:
                 break;
             case 6:
@@ -666,16 +694,16 @@
      * @return
      */
     @Override
-    public Map<String, Object> queryToBePaidPage(Integer orderId, Integer orderType) throws Exception{
+    public Map<String, Object> queryToBePaidPage(Integer language, Integer orderId, Integer orderType) throws Exception{
         switch (orderType){
             case 1://专车
-                return orderPrivateCarService.queryOrderInfo(orderId);
+                return orderPrivateCarService.queryOrderInfo(language, orderId);
             case 2://出租
-                return orderTaxiService.queryOrderInfo(orderId);
+                return orderTaxiService.queryOrderInfo(language, orderId);
             case 3://城际(没有此流程)
                 return null;
             case 4://
-                break;
+                return orderLogisticsService.queryOrderInfo(language, orderId);
             case 5:
                 break;
             case 6:
@@ -700,7 +728,7 @@
             case 3://城际
                 return orderCrossCityService.calculateMileage(orderPosition);
             case 4://
-                break;
+                return orderLogisticsService.calculateMileage(orderPosition.getOrderId(), orderPosition.getLon(), orderPosition.getLat());
             case 5:
                 break;
             case 6:
@@ -721,8 +749,8 @@
     @Override
     public Integer queryOrderNum(Integer driverId, Date start, Date end) throws Exception {
         //出租车
-        Integer[] state = new Integer[]{6, 7, 8, 9};
-        int i = orderPrivateCarService.selectCount(new EntityWrapper<OrderPrivateCar>().eq("driverId", driverId).between("insertTime", start, end).in("", state));
+        int i = orderPrivateCarService.selectCount(new EntityWrapper<OrderPrivateCar>().eq("driverId", driverId)
+                .between("insertTime", start, end).in("state", Arrays.asList(6, 7, 8, 9)));
         return i;
     }
 
@@ -929,10 +957,10 @@
             case 1:
                 OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId);
                 if(orderPrivateCar.getState() == 8 || orderPrivateCar.getState() == 9){
-                    return ResultUtil.error(language == 1 ? "订单已完成支付,不允许重复支付" : language == 2 ? "The order has been paid, no double payment is allowed" : "La commande a été payée, aucun paiement en double n’est autorisé");
+                    return ResultUtil.error(language == 1 ? "订单已完成支付,不允许重复支付" : language == 2 ? "The order has been paid, recurring payments is not allowed." : "La commande a été payée, les paiements récurrents ne sont pas autorisés.");
                 }
                 if(orderPrivateCar.getState() != 7){
-                    return ResultUtil.error(language == 1 ? "订单不在待支付,无法完成订单" : language == 2 ? "Order is not pending payment, order cannot be completed" : "La commande n’est pas en attente de paiement, la commande ne peut pas être complétée");
+                    return ResultUtil.error(language == 1 ? "订单不在待支付,无法完成订单" : language == 2 ? "The order is no longer with Pending Payment, unable to complete the order." : "La commande n’est plus en attente de paiement, il est impossible de terminer la commande.");
                 }
                 orderPrivateCar.setPayManner(2);//其他方式支付
                 orderPrivateCar.setRedPacketMoney(0D);
@@ -950,10 +978,10 @@
             case 2:
                 OrderTaxi orderTaxi = orderTaxiService.selectById(orderId);
                 if(orderTaxi.getState() == 8 || orderTaxi.getState() == 9){
-                    return ResultUtil.error(language == 1 ? "订单已完成支付,不允许重复支付" : language == 2 ? "The order has been paid, no double payment is allowed" : "La commande a été payée, aucun paiement en double n’est autorisé");
+                    return ResultUtil.error(language == 1 ? "订单已完成支付,不允许重复支付" : language == 2 ? "The order has been paid, recurring payments is not allowed." : "La commande a été payée, les paiements récurrents ne sont pas autorisés.");
                 }
                 if(orderTaxi.getState() != 7){
-                    return ResultUtil.error(language == 1 ? "订单不在待支付,无法完成订单" : language == 2 ? "Order is not pending payment, order cannot be completed" : "La commande n’est pas en attente de paiement, la commande ne peut pas être complétée");
+                    return ResultUtil.error(language == 1 ? "订单不在待支付,无法完成订单" : language == 2 ? "The order is no longer with Pending Payment, unable to complete the order." : "La commande n’est plus en attente de paiement, il est impossible de terminer la commande.");
                 }
                 orderTaxi.setPayManner(2);//其他方式支付
                 orderTaxi.setRedPacketMoney(0D);
@@ -980,6 +1008,26 @@
                     redisUtil.setStrValue("VEHICLE", jsonArray.toJSONString());
                 }
                 break;
+            case 4:
+                OrderLogistics orderLogistics = orderLogisticsService.selectById(orderId);
+                if(orderLogistics.getState() == 8 || orderLogistics.getState() == 9){
+                    return ResultUtil.error(language == 1 ? "订单已完成支付,不允许重复支付" : language == 2 ? "The order has been paid, recurring payments is not allowed." : "La commande a été payée, les paiements récurrents ne sont pas autorisés.");
+                }
+                if(orderLogistics.getState() != 7){
+                    return ResultUtil.error(language == 1 ? "订单不在待支付,无法完成订单" : language == 2 ? "The order is no longer with Pending Payment, unable to complete the order." : "La commande n’est plus en attente de paiement, il est impossible de terminer la commande.");
+                }
+                orderLogistics.setPayManner(2);//其他方式支付
+                orderLogistics.setRedPacketMoney(0D);
+                orderLogistics.setCouponMoney(0D);
+                orderLogistics.setDiscount(0D);
+                orderLogistics.setDiscountMoney(0D);
+                orderLogistics.setPayMoney(orderLogistics.getOrderMoney());
+                orderLogistics.setState(8);
+                orderLogisticsService.updateById(orderLogistics);
+                userId = orderLogistics.getUserId();
+                driverId = orderLogistics.getDriverId();
+                state = orderLogistics.getState();
+                break;
         }
 
 
@@ -989,8 +1037,8 @@
         new Thread(new Runnable() {
             @Override
             public void run() {
-                pushUtil.pushOrderState(1, finalUserId, orderId, orderType, finalState);
-                pushUtil.pushOrderState(2, finalDriverId, orderId, orderType, finalState);
+                pushUtil.pushOrderState(1, finalUserId, orderId, orderType, finalState, 0, "");
+                pushUtil.pushOrderState(2, finalDriverId, orderId, orderType, finalState, 0, "");
             }
         }).start();
         return ResultUtil.success();
@@ -1011,6 +1059,8 @@
                 return orderPrivateCarService.queryMoneyInfo(orderId);
             case 2:
                 break;
+            case 4:
+                return orderLogisticsService.queryMoneyInfo(orderId);
         }
         return null;
     }
@@ -1027,13 +1077,14 @@
      */
     @Override
     public void taskSmsSend() throws Exception {
+        Integer language = 2;
         //获取未支付订单
         Date day = new Date();
         List<OrderPrivateCar> orderList = orderPrivateCarService.getSmsOrderList();
 
         for(OrderPrivateCar order : orderList){
             if(order.getSmsTime()==null ){
-                if(order.getGetoffTime().getTime()+24*60*60*1000L<day.getTime()){
+                if(null != order.getGetoffTime() && order.getGetoffTime().getTime()+24*60*60*1000L<day.getTime()){
                     order.setSmsNumber(order.getSmsNumber()+1);
                     order.setSmsTime(day);
                     //发送短信
@@ -1041,7 +1092,7 @@
                         String sData = aLiSendSms.sendSms1(order.getPassengersPhone(), "SMS_215342869", "{\"time\":\"" + DateUtil.format(order.getGetoffTime(),"yyyy-MM-dd HH:mm:ss") + "\",\"money\":\"" + order.getOrderMoney() + "\"}");
                     }
                     //添加消息记录
-                    systemNoticeService.addSystemNotice(1, "有一笔订单未付款,请前往支付!", order.getUserId());
+                    systemNoticeService.addSystemNotice(1, language == 1 ? "有一笔订单未付款,请前往支付!" : language == 2 ? "There is an order pending payment, please pay." : "Il y a une commande en attente de paiement, veuillez payer.", order.getUserId());
                 }
             }else{
                 if(order.getSmsTime().getTime()+24*60*60*1000L<day.getTime()){
@@ -1053,7 +1104,7 @@
                     }
 
                     //添加消息记录
-                    systemNoticeService.addSystemNotice(1, "有一笔订单未付款,请前往支付!", order.getUserId());
+                    systemNoticeService.addSystemNotice(1, language == 1 ? "有一笔订单未付款,请前往支付!" : language == 2 ? "There is an order pending payment, please pay." : "Il y a une commande en attente de paiement, veuillez payer.", order.getUserId());
                 }
             }
         }
@@ -1071,14 +1122,14 @@
             OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId);
             money = orderPrivateCar.getPayMoney();
             if(orderPrivateCar.getPayType() != 4){
-                return ResultUtil.error(language == 1 ? "无法进行支付" : language == 2 ? "Unable to pay" : "Impossibilité de procéder au paiement");
+                return ResultUtil.error(language == 1 ? "无法进行支付" : language == 2 ? "Unable to make payments" : "Impossible d’effectuer des paiements");
             }
             if(orderPrivateCar.getDriverPay() == 2){
-                return ResultUtil.error(language == 1 ? "不能重复支付" : language == 2 ? "Non-repeatable payment" : "Aucun paiement en double");
+                return ResultUtil.error(language == 1 ? "不能重复支付" : language == 2 ? "Unable to recur payments" : "Impossible de récurrence des paiements");
             }
             if(payType == 3){//余额支付
                 if(driver.getBalance().compareTo(money) < 0){
-                    return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient account balance" : "Solde insuffisant du compte");
+                    return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient balance" : "Solde insuffisant");
                 }
             }
         }
@@ -1086,14 +1137,14 @@
             OrderLogistics orderLogistics = orderLogisticsService.selectById(orderId);
             money = orderLogistics.getPayMoney();
             if(orderLogistics.getPayType() != 4){
-                return ResultUtil.error(language == 1 ? "无法进行支付" : language == 2 ? "Unable to pay" : "Impossibilité de procéder au paiement");
+                return ResultUtil.error(language == 1 ? "无法进行支付" : language == 2 ? "Unable to make payments" : "Impossible d’effectuer des paiements");
             }
             if(orderLogistics.getDriverPay() == 2){
-                return ResultUtil.error(language == 1 ? "不能重复支付" : language == 2 ? "Non-repeatable payment" : "Aucun paiement en double");
+                return ResultUtil.error(language == 1 ? "不能重复支付" : language == 2 ? "Unable to recur payments" : "Impossible de récurrence des paiements");
             }
             if(payType == 3){//余额支付
                 if(driver.getBalance().compareTo(money) < 0){
-                    return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient account balance" : "Solde insuffisant du compte");
+                    return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient balance" : "Solde insuffisant");
                 }
             }
         }
@@ -1119,7 +1170,7 @@
                 if(resultUtil.getCode()==200){
                     paymentRecordService.saveData(1, uid, 2, orderId, orderType, 1, money, null, 1);//添加预支付数据
                 }else{
-                    resultUtil = ResultUtil.error(language == 1 ? "支付失败" : language == 2 ? "Payment failure" : "Paiement échoué", "");
+                    resultUtil = ResultUtil.error(language == 1 ? "支付失败" : language == 2 ? "Payment failure" : "Échec de paiement", "");
                 }
                 return resultUtil;
             }
@@ -1146,20 +1197,24 @@
                 if(resultUtil.getCode()==200){
                     paymentRecordService.saveData(1, uid, 2, orderId, orderType, 2, money, null, 1);//添加预支付数据
                 }else{
-                    resultUtil = ResultUtil.error(language == 1 ? "支付失败" : language == 2 ? "Payment failure" : "Paiement échoué", "");
+                    resultUtil = ResultUtil.error(language == 1 ? "支付失败" : language == 2 ? "Payment failure" : "Échec de paiement", "");
                 }
                 return resultUtil;
             }
             if(payType == 3){//余额支付
                 driver.setBalance(driver.getBalance() - money);
-                if(driver.getLaveBusinessMoney().compareTo(money) < 0){
-                    double b = money - driver.getLaveBusinessMoney();
+                Double laveBusinessMoney = driver.getLaveBusinessMoney();
+                if(laveBusinessMoney.compareTo(money) < 0){
+                    double b = money - laveBusinessMoney;
                     driver.setLaveBusinessMoney(0D);
                     driver.setLaveActivityMoney(driver.getLaveActivityMoney() - b);
                     driverService.updateById(driver);
+                    balanceUsageRecordService.saveBalanceUsageRecord(driver.getId(), 1, b, orderType == 1 ? 1 : 2);
+                    balanceUsageRecordService.saveBalanceUsageRecord(driver.getId(), 2, laveBusinessMoney, orderType == 1 ? 1 : 2);
                 }else{
                     driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() - money);
                     driverService.updateById(driver);
+                    balanceUsageRecordService.saveBalanceUsageRecord(driver.getId(), 2, money, orderType == 1 ? 1 : 2);
                 }
 
                 if(orderType == 1){//专车

--
Gitblit v1.7.1