From 0001861cc63fc670646a103284b9eaefb193e91f Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期六, 10 八月 2024 17:31:48 +0800
Subject: [PATCH] Merge branch '2.0' of http://120.76.84.145:10101/gitblit/r/java/IgoTravel into 2.0

---
 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java |  290 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 149 insertions(+), 141 deletions(-)

diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
index a72144f..3bbc7cf 100644
--- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
+++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -7,7 +7,6 @@
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.stylefeng.guns.core.util.ToolUtil;
 import com.stylefeng.guns.modular.crossCity.dao.OrderCrossCityMapper;
-import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity;
 import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService;
 import com.stylefeng.guns.modular.crossCity.server.impl.OrderCrossCityServiceImpl;
 import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics;
@@ -28,7 +27,6 @@
 import com.stylefeng.guns.modular.system.util.itextpdf.HtmlToPdfUtils;
 import com.stylefeng.guns.modular.system.warpper.BaseWarpper;
 import com.stylefeng.guns.modular.system.warpper.EndPushWarpper;
-import com.stylefeng.guns.modular.system.warpper.OrderInfoWarpper;
 import com.stylefeng.guns.modular.system.warpper.OrderServerWarpper;
 import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper;
 import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
@@ -39,7 +37,6 @@
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
-import org.jsoup.nodes.FormElement;
 import org.jsoup.select.Elements;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -88,92 +85,92 @@
     @Resource
     private RegionMapper regionMapper;
 
-    @Autowired
+    @Resource
     private DateUtil dateUtil;
 
-    @Autowired
+    @Resource
     private IUserInfoService userInfoService;
 
-    @Autowired
+    @Resource
     private IDriverService driverService;
 
-    @Autowired
+    @Resource
     private IDriverServiceService driverServiceService;
 
-    @Autowired
+    @Resource
     private PushUtil pushUtil;
 
-    @Autowired
+    @Resource
     private ICompanyCityService companyCityService;
 
-    @Autowired
+    @Resource
     private IPushOrderService pushOrderService;
 
-    @Autowired
+    @Resource
     private ISystemNoticeService systemNoticeService;
 
-    @Autowired
+    @Resource
     private ICancleOrderService cancleOrderService;
 
-    @Autowired
+    @Resource
     private IOrderCancelService orderCancelService;
 
-    @Autowired
+    @Resource
     private RestTemplate internalRestTemplate;
 
-    @Autowired
+    @Resource
     private IPaymentRecordService paymentRecordService;
 
-    @Autowired
+    @Resource
     private ITransactionDetailsService transactionDetailsService;
 
-    @Autowired
+    @Resource
     private ChinaMobileUtil chinaMobileUtil;
 
-    @Autowired
+    @Resource
     private IIncomeService incomeService;
 
-    @Autowired
+    @Resource
     private IUserCouponRecordService userCouponRecordService;
 
-    @Autowired
+    @Resource
     private IUserRedPacketRecordService userRedPacketRecordService;
 
-    @Autowired
+    @Resource
     private ICompanyService companyService;
 
-    @Autowired
+    @Resource
     private IUserActivityRedenvelopeService userActivityRedenvelopeService;
 
-    @Autowired
+    @Resource
     private RedisUtil redisUtil;
 
-    @Autowired
+    @Resource
     private IOrderPositionService orderPositionService;
 
-    @Autowired
+    @Resource
     private IOrderCrossCityService orderCrossCityService;
 
-    @Autowired
+    @Resource
     private IAssignOrderService assignOrderService;
 
     @Resource
     private CarMapper carMapper;
 
-    @Autowired
+    @Resource
     private IOrderEvaluateService orderEvaluateService;
 
-    @Autowired
+    @Resource
     private IOrderLogisticsService orderLogisticsService;
 
-    @Autowired
+    @Resource
     private IBankCardService bankCardService;
 
 
     @Value("${filePath}")
     private String filePath;
 
-    @Autowired
+    @Resource
     private IOrderTaxiService orderTaxiService;
 
     public static List<Integer> orderIds = new ArrayList<>();
@@ -184,32 +181,35 @@
     @Value("${spring.mail.template-path}")
     private String templatePath;
 
-    @Autowired
+    @Resource
     private ISettlementDetailService settlementDetailService;
 
-    @Autowired
+    @Resource
     private ISettlementRecordService settlementRecordService;
 
-    @Autowired
+    @Resource
     private ISettlementAllocationService settlementAllocationService;
 
-    @Autowired
+    @Resource
     private TEmailService emailService;
 
-    @Autowired
+    @Resource
     private IPhoneService phoneService;
     
-    @Autowired
+    @Resource
     private IRedEnvelopePaymentSettingsService redEnvelopePaymentSettingsService;
     
-    @Autowired
+    @Resource
     private FleetEngineUtil fleetEngineUtil;
     
     @Resource
     private CarModelMapper carModelMapper;
     
-    @Autowired
+    @Resource
     private ICarService carService;
+    
+    @Resource
+    private DriverWorkMapper driverWorkMapper;
 
 
 
@@ -371,7 +371,6 @@
     
         new Thread(() -> {
             try {
-                String vehicleId = null;
                 if(null != orderPrivateCar.getDriverId()){
                     Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                     Car car = carMapper.selectById(driver.getCarId());
@@ -379,6 +378,7 @@
                         car.setVehicleId(UUIDUtil.getRandomCode());
                         carMapper.updateById(car);
                     }
+                    String vehicleId = car.getVehicleId();
                     //查询车辆信息,没有则创建信息
                     String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                     if(ToolUtil.isEmpty(vehicles)){
@@ -386,10 +386,12 @@
                         fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                         fleetEngineUtil.updateVehicles("ONLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                     }
+    
+                    //创建行程数据
+                    fleetEngineUtil.createTrip(vehicleId, 1, orderPrivateCar.getTripId(),
+                            orderPrivateCar.getStartLat().toString(), orderPrivateCar.getStartLon().toString(), orderPrivateCar.getEndLat().toString(), orderPrivateCar.getEndLon().toString());
                 }
-                //创建行程数据
-                fleetEngineUtil.createTrip(vehicleId, 1, orderPrivateCar.getTripId(),
-                        orderPrivateCar.getStartLat().toString(), orderPrivateCar.getStartLon().toString(), orderPrivateCar.getEndLat().toString(), orderPrivateCar.getEndLon().toString());
+                
             }catch (Exception e){
                 e.printStackTrace();
             }
@@ -497,65 +499,70 @@
                     }else{
                         dr = drivers.get(0);
                     }
-
-                    orderPrivateCar.setDriverId(dr.getId());
-                    orderPrivateCar.setCompanyId(dr.getFranchiseeId() != null && dr.getFranchiseeId() != 0 ? dr.getFranchiseeId() : (
-                            dr.getCompanyId() != null && dr.getCompanyId() != 0 ? dr.getCompanyId() : 1));
-                    orderPrivateCar.setState(2);
-                    orderPrivateCar.setCarId(dr.getCarId());
-                    CarService query1 = carServiceMapper.query(1, dr.getCarId());
-                    orderPrivateCar.setServerCarModelId(query1.getServerCarModelId());
-                    orderPrivateCar.setSnatchOrderTime(new Date());
-
-                    dr.setState(3);
-                    driverService.updateById(dr);
-                    this.updateById(orderPrivateCar);
     
-                    Integer language1 = dr.getLanguage();
-                    String text = "";
-                    switch (language1){
-                        case 1:
-                            text = "收到新的打车订单,从" + orderPrivateCar.getStartAddress() + "出发,全程约" + orderPrivateCar.getEstimatedMileage() + "公里";
-                            break;
-                        case 2:
-                            text = "Received a new ride order, starting from " + orderPrivateCar.getStartAddress() + ", the whole journey is about " + orderPrivateCar.getEstimatedMileage() + "kilometre";
-                            break;
-                        case 3:
-                            text = "J'ai reçu une nouvelle commande de course, à partir de " + orderPrivateCar.getStartAddress() + ", le trajet complet est d’environ " + orderPrivateCar.getEstimatedMileage() + "kilométrage";
-                            break;
+                    Driver driver = driverService.selectById(dr.getId());
+                    DriverWork driverWork = driverWorkMapper.selectOne(new EntityWrapper<DriverWork>().eq("driverId", dr.getId())
+                            .eq("state", 1).like("type", "1").getEntity());
+                    if(driver.getState() == 2 && null != driverWork){
+                        orderPrivateCar.setDriverId(dr.getId());
+                        orderPrivateCar.setCompanyId(dr.getFranchiseeId() != null && dr.getFranchiseeId() != 0 ? dr.getFranchiseeId() : (
+                                dr.getCompanyId() != null && dr.getCompanyId() != 0 ? dr.getCompanyId() : 1));
+                        orderPrivateCar.setState(2);
+                        orderPrivateCar.setCarId(dr.getCarId());
+                        CarService query1 = carServiceMapper.query(1, dr.getCarId());
+                        orderPrivateCar.setServerCarModelId(query1.getServerCarModelId());
+                        orderPrivateCar.setSnatchOrderTime(new Date());
+    
+                        dr.setState(3);
+                        driverService.updateById(dr);
+                        this.updateById(orderPrivateCar);
+    
+                        Integer language1 = dr.getLanguage();
+                        String text = "";
+                        switch (language1){
+                            case 1:
+                                text = "收到新的打车订单,从" + orderPrivateCar.getStartAddress() + "出发,全程约" + orderPrivateCar.getEstimatedMileage() + "公里";
+                                break;
+                            case 2:
+                                text = "Received a new ride order, starting from " + orderPrivateCar.getStartAddress() + ", the whole journey is about " + orderPrivateCar.getEstimatedMileage() + "kilometre";
+                                break;
+                            case 3:
+                                text = "J'ai reçu une nouvelle commande de course, à partir de " + orderPrivateCar.getStartAddress() + ", le trajet complet est d’environ " + orderPrivateCar.getEstimatedMileage() + "kilométrage";
+                                break;
         
-                    }
-                    String audioUrl = "";
-                    String fileName = "pushOrder" + orderPrivateCar.getDriverId() + UUIDUtil.getRandomCode(5) + ".mp3";
-                    try {
-                        audioUrl = TextToSpeechUtil.create(language1 == 1 ? "cmn-CN" : language1 == 2 ? "en-US" : "fr-FR", text, fileName);
-                    } catch (Exception e) {
-                        throw new RuntimeException(e);
-                    }
-                    //定时任务删除语音文件
-                    new Timer().schedule(new TimerTask() {
-                        @Override
-                        public void run() {
-                            Process process = null;
-                            try {
-                                process = Runtime.getRuntime().exec("rm -rf /usr/local/nginx/html/files/audio/" + fileName);
-                            } catch (IOException e) {
-                                throw new RuntimeException(e);
-                            }
-                            if (process != null) {
-                                process.destroy();
-                            }
                         }
-                    }, 30000);
+                        String audioUrl = "";
+                        String fileName = "pushOrder" + orderPrivateCar.getDriverId() + UUIDUtil.getRandomCode(5) + ".mp3";
+                        try {
+                            audioUrl = TextToSpeechUtil.create(language1 == 1 ? "cmn-CN" : language1 == 2 ? "en-US" : "fr-FR", text, fileName);
+                        } catch (Exception e) {
+                            throw new RuntimeException(e);
+                        }
+                        //定时任务删除语音文件
+                        new Timer().schedule(new TimerTask() {
+                            @Override
+                            public void run() {
+                                Process process = null;
+                                try {
+                                    process = Runtime.getRuntime().exec("rm -rf /usr/local/nginx/html/files/audio/" + fileName);
+                                } catch (IOException e) {
+                                    throw new RuntimeException(e);
+                                }
+                                if (process != null) {
+                                    process.destroy();
+                                }
+                            }
+                        }, 30000);
     
-                    String finalAudioUrl = audioUrl;
-                    new Thread(new Runnable() {
-                        @Override
-                        public void run() {
-                            pushUtil.pushOrderState(1, uid, orderPrivateCar.getId(), 1, 2, 0, "");
-                            pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, 2, 0, finalAudioUrl);
-                        }
-                    }).start();
+                        String finalAudioUrl = audioUrl;
+                        new Thread(new Runnable() {
+                            @Override
+                            public void run() {
+                                pushUtil.pushOrderState(1, uid, orderPrivateCar.getId(), 1, 2, 0, "");
+                                pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, 2, 0, finalAudioUrl);
+                            }
+                        }).start();
+                    }
                 }
             }
         }
@@ -564,22 +571,6 @@
         //推单操作
         if(orderPrivateCar.getState() == 1){
             this.pushOrder(orderPrivateCar);
-        }else{
-//            //接单后定时任务判断司机是否去接乘客,没有则推送提醒
-//            CancleOrder cancleOrder = cancleOrderService.query(orderPrivateCar.getCompanyId());
-//            if(null != cancleOrder){
-//                JSONObject object = JSON.parseObject(cancleOrder.getContent());
-//                long time = object.getInteger("driverTimeout") * 60000L;
-//                new Timer().schedule(new TimerTask() {
-//                    @Override
-//                    public void run() {
-//                        OrderPrivateCar orderPrivateCar1 = OrderPrivateCarServiceImpl.this.selectById(orderPrivateCar.getId());
-//                        if(orderPrivateCar1.getState() == 2){
-//                            pushUtil.pushDriverTimeOut(1, orderPrivateCar1.getUserId(), orderPrivateCar1.getId(), 1);
-//                        }
-//                    }
-//                }, time);
-//            }
         }
 
 
@@ -1048,6 +1039,13 @@
                                     continue;
                                 }
     
+                                Driver driver1 = driverService.selectById(driver.getId());
+                                DriverWork driverWork = driverWorkMapper.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver1.getId())
+                                        .eq("state", 1).like("type", "1").getEntity());
+                                if(driver1.getState() != 2 || null == driverWork){
+                                    continue;
+                                }
+    
                                 String text = "";
                                 Integer language = driver.getLanguage();
                                 switch (language){
@@ -1192,7 +1190,7 @@
             return ResultUtil.error(language == 1 ? "订单不在待支付状态,不允许支付" : language == 2 ? "The order is no longer with Pending Payment, making payments is not allowed." : "La commande n’est plus en attente de paiement, il n’est pas permis d’effectuer des paiements.", "");
         }
         Integer uid = orderPrivateCar.getUserId();
-        Double orderMoney = orderPrivateCar.getOrderMoney();
+        BigDecimal orderMoney = new BigDecimal(orderPrivateCar.getOrderMoney());
         UserInfo userInfo = userInfoService.selectById(uid);
         ResultUtil resultUtil = ResultUtil.success("");
         orderPrivateCar.setCouponMoney(0D);//初始化历史数据
@@ -1206,9 +1204,9 @@
                 Double special = query2.getSpecial();
                 if(null != special){
                     orderPrivateCar.setDiscount(special);
-                    double v = new BigDecimal(orderMoney).multiply(new BigDecimal(special / 10)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
+                    BigDecimal v = orderMoney.multiply(new BigDecimal(special / 10)).setScale(2, RoundingMode.HALF_EVEN);
                     if(orderMoney.compareTo(v) > 0){
-                        orderPrivateCar.setDiscountMoney(orderMoney - v);
+                        orderPrivateCar.setDiscountMoney(orderMoney.subtract(v).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                         orderPrivateCar.setActivityId(query2.getId());
                         orderMoney = v;
                     }
@@ -1235,14 +1233,13 @@
             if(userCouponRecord.getCouponUseType() != 0 && userCouponRecord.getCouponUseType() != 1){
                 return ResultUtil.error(language == 1 ? "优惠券不能用于此订单" : language == 2 ? "Coupon cannot be used for this order." : "Le coupon ne peut pas être utilisé pour cette commande.", "");
             }
-            if(userCouponRecord.getCouponType() == 2 && orderMoney.compareTo(userCouponRecord.getFullMoney()) < 0){
+            if(userCouponRecord.getCouponType() == 2 && orderMoney.compareTo(new BigDecimal(userCouponRecord.getFullMoney())) < 0){
                 return ResultUtil.error(language == 1 ? "优惠券不能用于此订单" : language == 2 ? "Coupon cannot be used for this order." : "Le coupon ne peut pas être utilisé pour cette commande.", "");
             }
-            orderMoney = orderMoney - userCouponRecord.getMoney();
+            orderMoney = orderMoney.subtract(new BigDecimal(userCouponRecord.getMoney())).setScale(2, RoundingMode.HALF_EVEN);
             orderPrivateCar.setCouponMoney(userCouponRecord.getMoney());
             orderPrivateCar.setCouponId(couponId);
         }
-        orderMoney=new BigDecimal(orderMoney).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
 
         //计算红包
         if(null != redDeduction && 1 == redDeduction && null == orderPrivateCar.getRedPacketId()){
@@ -1253,10 +1250,10 @@
                         .eq("state", 1).eq("companyId", orderPrivateCar.getCompanyId()).gt("remainingAmount", 0).orderBy("insertTime", false));
     
                 BigDecimal deductionRatio = redEnvelopePaymentSettings.getDeductionRatio();
-                BigDecimal multiply1 = new BigDecimal(orderMoney).multiply(deductionRatio.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_EVEN);
-                if(total.compareTo(multiply1.doubleValue()) >= 0){
+                BigDecimal multiply1 = orderMoney.multiply(deductionRatio.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_EVEN);
+                if(total > 0 && multiply1.doubleValue() > 0 && total.compareTo(multiply1.doubleValue()) >= 0){
                     orderPrivateCar.setRedPacketMoney(multiply1.doubleValue());
-                    orderMoney = orderMoney - multiply1.doubleValue();
+                    orderMoney = orderMoney.subtract(multiply1).setScale(2, RoundingMode.HALF_EVEN);
                     
                     //获取红包id
                     JSONArray jsonArray = new JSONArray();
@@ -1264,6 +1261,9 @@
                         JSONObject jsonObject = new JSONObject();
                         jsonObject.put("id", userRedPacketRecord.getId());
                         BigDecimal remainingAmount = new BigDecimal(userRedPacketRecord.getRemainingAmount());
+                        if(multiply1.compareTo(BigDecimal.ZERO) == 0){
+                            break;
+                        }
                         if(multiply1.compareTo(remainingAmount) >= 0){
                             userRedPacketRecord.setRemainingAmount(0D);
                             userRedPacketRecord.setEndTime(new Date());
@@ -1272,25 +1272,29 @@
                             jsonObject.put("money", remainingAmount);
                             jsonArray.add(jsonObject);
                             userRedPacketRecordService.updateById(userRedPacketRecord);
-                        }else{
+                        }else if(remainingAmount.compareTo(multiply1) > 0){
                             userRedPacketRecord.setRemainingAmount(remainingAmount.subtract(multiply1).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                             jsonObject.put("money", multiply1);
                             jsonArray.add(jsonObject);
                             userRedPacketRecordService.updateById(userRedPacketRecord);
-                            break;
+                            multiply1 = BigDecimal.ZERO;
                         }
                     }
                     orderPrivateCar.setRedPacketId(jsonArray.toJSONString());
-                }else{
+                }
+                if(total > 0 && total.compareTo(multiply1.doubleValue()) < 0){
                     orderPrivateCar.setRedPacketMoney(total);
-                    orderMoney = orderMoney - total;
+                    orderMoney = orderMoney.subtract(new BigDecimal(total)).setScale(2, RoundingMode.HALF_EVEN);
                     //获取红包id
                     JSONArray jsonArray = new JSONArray();
                     BigDecimal multiply = new BigDecimal(total);
                     for (UserRedPacketRecord userRedPacketRecord : userRedPacketRecords) {
                         JSONObject jsonObject = new JSONObject();
                         jsonObject.put("id", userRedPacketRecord.getId());
-                        BigDecimal remainingAmount = new BigDecimal(userRedPacketRecord.getRemainingAmount());
+                        BigDecimal remainingAmount = BigDecimal.valueOf(userRedPacketRecord.getRemainingAmount());
+                        if(multiply.compareTo(BigDecimal.ZERO) == 0){
+                            break;
+                        }
                         if(multiply.compareTo(remainingAmount) >= 0){
                             userRedPacketRecord.setRemainingAmount(0D);
                             userRedPacketRecord.setEndTime(new Date());
@@ -1299,12 +1303,12 @@
                             jsonObject.put("money", remainingAmount);
                             jsonArray.add(jsonObject);
                             userRedPacketRecordService.updateById(userRedPacketRecord);
-                        }else{
+                        }else if(remainingAmount.compareTo(multiply) > 0){
                             userRedPacketRecord.setRemainingAmount(remainingAmount.subtract(multiply).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                             jsonObject.put("money", multiply);
                             jsonArray.add(jsonObject);
                             userRedPacketRecordService.updateById(userRedPacketRecord);
-                            break;
+                            multiply = BigDecimal.ZERO;
                         }
                     }
                     orderPrivateCar.setRedPacketId(jsonArray.toJSONString());
@@ -1322,7 +1326,7 @@
             checkoutRequest.setAccountNumber(userInfo.getPhone());
             checkoutRequest.setCustomerFirstName(userInfo.getFirstName());
             checkoutRequest.setCustomerLastName(userInfo.getLastName());
-            checkoutRequest.setRequestAmount(orderMoney);
+            checkoutRequest.setRequestAmount(orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue());
             checkoutRequest.setMerchantTransactionId(merchantTransactionId);
             checkoutRequest.setRequestDescription("Travel completion payment");
             checkoutRequest.setCallbackUrl(callbackPath + "/base/wxPayOrderTaxi");
@@ -1332,7 +1336,8 @@
             resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest);
 
             if(resultUtil.getCode()==200){
-                paymentRecordService.saveData(1, null, null, orderId, 1, 1, orderMoney, null, 1);//添加预支付数据
+                paymentRecordService.saveData(1, null, null, orderId, 1, 1,
+                        orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(), null, 1);//添加预支付数据
             }else{
                 resultUtil = ResultUtil.error(language == 1 ? "支付失败" : language == 2 ? "Payment failure" : "Paiement échoué", "");
             }
@@ -1348,7 +1353,7 @@
             checkoutRequest.setAccountNumber(bankCard.getCode());
             checkoutRequest.setCustomerFirstName(bankCard.getFirstName());
             checkoutRequest.setCustomerLastName(bankCard.getLastName());
-            checkoutRequest.setRequestAmount(orderMoney);
+            checkoutRequest.setRequestAmount(orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue());
             checkoutRequest.setMerchantTransactionId(merchantTransactionId);
             checkoutRequest.setRequestDescription("Travel completion payment");
             checkoutRequest.setCallbackUrl(callbackPath + "/base/wxPayOrderTaxi");
@@ -1358,28 +1363,30 @@
             resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest);
 
             if(resultUtil.getCode()==200){
-                paymentRecordService.saveData(1, null, null, orderId, 1, 2, orderMoney, null, 1);//添加预支付数据
+                paymentRecordService.saveData(1, null, null, orderId, 1, 2,
+                        orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(), null, 1);//添加预支付数据
             }else{
                 resultUtil = ResultUtil.error(language == 1 ? "支付失败" : language == 2 ? "Payment failure" : "Paiement échoué", "");
             }
         }
         if(payType == 3){//余额支付
-            if(userInfo.getBalance() == null || userInfo.getBalance() < orderMoney){
+            if(userInfo.getBalance() == null || new BigDecimal(userInfo.getBalance()).compareTo(orderMoney) < 0){
                 return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient balance" : "Solde insuffisant", "");
             }
 
-            userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(orderMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+            userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(orderMoney).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
 
             SysIntegral query1 = sysIntegralMapper.query(orderPrivateCar.getCompanyId());
             userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分
 
             //添加交易明细
-            transactionDetailsService.saveData(uid, "完成订单", orderMoney, 2, 1, 1, 1, orderId);
+            transactionDetailsService.saveData(uid, "完成订单", orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(),
+                    2, 1, 1, 1, orderId);
             userInfoService.updateById(userInfo);
 
             orderPrivateCar.setState(8);
             orderPrivateCar.setPayType(3);
-            orderPrivateCar.setPayMoney(orderMoney);
+            orderPrivateCar.setPayMoney(orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue());
             
             //处理优惠券和红包
             if(null != userCouponRecord){
@@ -1813,13 +1820,14 @@
             userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分
 
             //添加交易明细
-            transactionDetailsService.saveData(uid, "完成订单", orderMoney, 2, 1, 1, 1, orderId);
+            transactionDetailsService.saveData(uid, "完成订单", orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(),
+                    2, 1, 1, 1, orderId);
             userInfoService.updateById(userInfo);
 
             orderPrivateCar.setState(8);
             orderPrivateCar.setPayType(4);
             orderPrivateCar.setDriverPay(2);
-            orderPrivateCar.setPayMoney(orderMoney);
+            orderPrivateCar.setPayMoney(orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue());
 
             Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
 
@@ -1916,7 +1924,7 @@
                                     settlementRecord.setInsertTime(new Date());
                                     settlementRecordService.insert(settlementRecord);
                                 }else{
-                                    settlementRecord.setPayMoney(total.doubleValue());
+                                    settlementRecord.setPayMoney(settlementRecord.getPayMoney() + total.doubleValue());
                                     settlementRecordService.updateById(settlementRecord);
                                 }
                                 for (SettlementDetail detail : settlementDetailList) {
@@ -3173,7 +3181,7 @@
                 //读取文件(字符流)
                 BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"));
                 //循环取出数据
-                String str = null;
+                String str;
                 StringBuffer sb = new StringBuffer();
                 while ((str = in.readLine()) != null) {
                     sb.append(str);

--
Gitblit v1.7.1