From 13b1838cfd7df8c49450e2529943a0f87fbd0354 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期四, 19 六月 2025 18:01:55 +0800
Subject: [PATCH] 推单距离优化

---
 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java |   50 +++++++++++++++++++++++++++++---------------------
 1 files changed, 29 insertions(+), 21 deletions(-)

diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
index e6c91c7..290426d 100644
--- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
+++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -40,6 +40,8 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.math.MathContext;
+import java.math.RoundingMode;
 import java.util.*;
 
 @Service
@@ -136,8 +138,8 @@
     @Autowired
     private IOrderPositionService orderPositionService;
 
-    @Autowired
-    private ChinaMobileUtil chinaMobileUtil;
+//    @Autowired
+//    private ChinaMobileUtil chinaMobileUtil;
 
     @Autowired
     private IDriverServiceService driverServiceService;
@@ -275,11 +277,11 @@
             //调用移动的小号接口
             Map<String, String> geocode1 = gdMapGeocodingUtil.geocode(orderTaxi.getStartLon().toString(), orderTaxi.getStartLat().toString());
             Region region = regionMapper.query(geocode1.get("districtCode"));
-            Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderTaxi.getPassengersPhone(), driver.getPhone(), Integer.valueOf(region.getCitycode().substring(1)));
-            if(String.valueOf(map.get("code")).equals("200")){
-                orderTaxi.setTelX(map.get("telX"));
-                orderTaxi.setBindId(map.get("bindId"));
-            }
+//            Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderTaxi.getPassengersPhone(), driver.getPhone(), Integer.valueOf(region.getCitycode().substring(1)));
+//            if(String.valueOf(map.get("code")).equals("200")){
+//                orderTaxi.setTelX(map.get("telX"));
+//                orderTaxi.setBindId(map.get("bindId"));
+//            }
 
             driver.setState(3);
             driverService.updateById(driver);
@@ -505,6 +507,9 @@
         CancleOrder query = cancleOrderService.query(orderTaxi.getOrderType(), 2, orderTaxi.getCompanyId());
         if(null != query){
             if(payType == 1){//微信支付
+                if(ToolUtil.isEmpty(userInfo.getAppletsOpenId())){
+                    return ResultUtil.error("未授权微信,无法完成支付");
+                }
                 orderCancel.setPayType(1);
                 orderCancelService.updateById(orderCancel);
                 resultUtil = payMoneyUtil.weixinpay("订单取消",id +"",id + "_2_fei",query.getMoney()+"","/base/wxCancelOrderTaxi","JSAPI",userInfo.getAppletsOpenId());
@@ -512,7 +517,7 @@
             if(payType == 2){//支付宝支付
                 orderCancel.setPayType(2);
                 orderCancelService.updateById(orderCancel);
-                resultUtil = payMoneyUtil.alipay("订单取消","订单取消",id + ",2",query.getMoney()+"","/base/aliCancelOrderTaxi");
+                resultUtil = payMoneyUtil.alipay("订单取消","订单取消", "",id + ",2",query.getMoney()+"","/base/aliCancelOrderTaxi");
             }
             if(payType == 3){//余额支付
                 if(userInfo.getBalance() != null && userInfo.getBalance() < query.getMoney()){
@@ -525,9 +530,9 @@
                 userInfoService.updateById(userInfo);
 
                 //解除小号绑定
-                if(orderTaxi.getBindId() != null){
-                    chinaMobileUtil.midAxbUnBindSend(orderTaxi.getBindId(),orderTaxi.getTelX());
-                }
+//                if(orderTaxi.getBindId() != null){
+//                    chinaMobileUtil.midAxbUnBindSend(orderTaxi.getBindId(),orderTaxi.getTelX());
+//                }
 
                 orderTaxi.setState(10);
                 orderTaxi.setTelX("");
@@ -685,10 +690,13 @@
         }
 
         if(payType == 1){//微信支付
+            if(ToolUtil.isEmpty(userInfo.getAppletsOpenId())){
+                return ResultUtil.error("未授权微信,无法完成支付");
+            }
             resultUtil =  payMoneyUtil.weixinpay("完成订单",orderId +"",orderId + "_2_fei",orderMoney+"","/base/wxPayOrderTaxi","JSAPI",userInfo.getAppletsOpenId());
         }
         if(payType == 2){//支付宝支付
-            resultUtil =  payMoneyUtil.alipay("完成订单","完成订单",orderId + ",2",orderMoney+"","/base/aliPayOrderTaxi");
+            resultUtil =  payMoneyUtil.alipay("完成订单","完成订单", "",orderId + ",2",orderMoney+"","/base/aliPayOrderTaxi");
         }
         if(payType == 3){//余额支付
             if(userInfo.getBalance() == null || userInfo.getBalance() < orderMoney){
@@ -730,7 +738,7 @@
                 c = new BigDecimal(orderTaxi.getOrderMoney()).subtract(d);//只有出行金额参与抽成,其余归属司机
             }
             if(company.getIsTaxiFixedOrProportional() == 1){//比例
-                d = new BigDecimal(orderTaxi.getTravelMoney()).multiply(new BigDecimal(taxi).divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_EVEN);
+                d = new BigDecimal(orderTaxi.getTravelMoney()).multiply(new BigDecimal(taxi).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN))).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                 c = new BigDecimal(orderTaxi.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
             }
             incomeService.saveData(1, orderTaxi.getCompanyId(), 2, orderTaxi.getId(), 2, d.doubleValue());
@@ -956,8 +964,8 @@
         if(null == distance){
             System.err.println("查询距离出错了");
         }else{
-            d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000)).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString();
-            t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60)).setScale(2, BigDecimal.ROUND_HALF_EVEN).intValue() + "";
+            d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000), new MathContext(2, RoundingMode.HALF_EVEN)).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString();
+            t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).setScale(2, BigDecimal.ROUND_HALF_EVEN).intValue() + "";
         }
         OrderServerWarpper orderServerWarpper = new OrderServerWarpper();
         orderServerWarpper.setOrderId(orderTaxi.getId());
@@ -979,8 +987,8 @@
             if(null == distance){
                 System.err.println("查询距离出错了");
             }else{
-                d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000)).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString();
-                t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60)).setScale(2, BigDecimal.ROUND_HALF_EVEN).intValue() + "";
+                d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000), new MathContext(2, RoundingMode.HALF_EVEN)).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString();
+                t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).setScale(2, BigDecimal.ROUND_HALF_EVEN).intValue() + "";
             }
             orderServerWarpper.setReservationMileage("0");
             orderServerWarpper.setReservationTime("0");
@@ -1151,7 +1159,7 @@
                 c = new BigDecimal(orderTaxi.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
             }
             if(company.getIsTaxiFixedOrProportional() == 1){//比例
-                d = new BigDecimal(orderTaxi.getTravelMoney()).multiply(new BigDecimal(taxi).divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_EVEN);
+                d = new BigDecimal(orderTaxi.getTravelMoney()).multiply(new BigDecimal(taxi).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN))).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                 c = new BigDecimal(orderTaxi.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
             }
             incomeService.saveData(1, orderTaxi.getCompanyId(), 2, orderTaxi.getId(), 2, d.doubleValue());
@@ -1208,9 +1216,9 @@
             transactionDetailsService.saveData(orderTaxi.getUserId(), "取消订单", query.getAmount(), 2, 1, 1, 2, query.getOrderId());
             orderTaxi.setState(10);
             //解除小号绑定
-            if(orderTaxi.getBindId() != null){
-                chinaMobileUtil.midAxbUnBindSend(orderTaxi.getBindId(),orderTaxi.getTelX());
-            }
+//            if(orderTaxi.getBindId() != null){
+//                chinaMobileUtil.midAxbUnBindSend(orderTaxi.getBindId(),orderTaxi.getTelX());
+//            }
             orderTaxi.setBindId("");
             orderTaxi.setTelX("");
             this.updateById(orderTaxi);

--
Gitblit v1.7.1