Pu Zhibing
2025-02-08 f1c81c66b4ce666e61a3604e299ea41b874fa8b7
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
@@ -20,6 +20,7 @@
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.*;
import com.stylefeng.guns.modular.system.util.GoogleMap.DistancematrixVo;
import com.stylefeng.guns.modular.system.util.GoogleMap.FleetEngineUtil;
import com.stylefeng.guns.modular.system.util.GoogleMap.GoogleMapUtil;
import com.stylefeng.guns.modular.system.util.GoogleMap.ReverseGeocodeVo;
import com.stylefeng.guns.modular.system.util.Tingg.TinggPayUtil;
@@ -32,6 +33,8 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -103,6 +106,12 @@
    
    @Resource
    private IBalanceUsageRecordService balanceUsageRecordService;
    @Resource
    private FleetEngineUtil fleetEngineUtil;
    @Autowired
    private IOrderPositionService orderPositionService;
@@ -265,11 +274,11 @@
                OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId);
                String tripId = redisUtil.getValue("trip" + orderPrivateCar.getUserId());
                DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(Double.valueOf(map.get("startLat").toString()), Double.valueOf(map.get("startLon").toString()), Double.valueOf(lat), Double.valueOf(lon), tripId);
                map.put("startDistance", null != distancematrix ? distancematrix.getDistance() / 1000 : 0);
                map.put("startDistance", null != distancematrix ? new BigDecimal(distancematrix.getDistance()).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue() : 0);
                //总距离
                distancematrix = GoogleMapUtil.getDistancematrix(Double.valueOf(map.get("startLat").toString()), Double.valueOf(map.get("startLon").toString()), Double.valueOf(map.get("endLat").toString()), Double.valueOf(map.get("endLon").toString()), tripId);
                map.put("totalDistance", null != distancematrix ? distancematrix.getDistance() / 1000 : 0);
                map.put("totalDistance", null != distancematrix ? new BigDecimal(distancematrix.getDistance()).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue() : 0);
                Integer orderSource = Integer.valueOf(String.valueOf(map.get("orderSource")));
                if(orderSource == 1 || orderSource == 2 || orderSource == 3){
@@ -376,11 +385,11 @@
                OrderLogistics orderLogistics = orderLogisticsService.selectById(orderId);
                String tripId1 = redisUtil.getValue("trip" + orderLogistics.getUserId());
                DistancematrixVo distancematrix1 = GoogleMapUtil.getDistancematrix(Double.valueOf(map.get("startLat").toString()), Double.valueOf(map.get("startLon").toString()), Double.valueOf(lat), Double.valueOf(lon), tripId1);
                map.put("startDistance", null != distancematrix1 ? distancematrix1.getDistance() / 1000 : 0);
                map.put("startDistance", null != distancematrix1 ? new BigDecimal(distancematrix1.getDistance()).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue() : 0);
                //总距离
                distancematrix1 = GoogleMapUtil.getDistancematrix(Double.valueOf(map.get("startLat").toString()), Double.valueOf(map.get("startLon").toString()), Double.valueOf(map.get("endLat").toString()), Double.valueOf(map.get("endLon").toString()), tripId1);
                map.put("totalDistance", null != distancematrix1 ? distancematrix1.getDistance() / 1000 : 0);
                map.put("totalDistance", null != distancematrix1 ? new BigDecimal(distancematrix1.getDistance()).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue() : 0);
                Integer orderSource3 = Integer.valueOf(String.valueOf(map.get("orderSource")));
                if(orderSource3 == 1 || orderSource3 == 2 || orderSource3 == 3){
@@ -1164,8 +1173,8 @@
                checkoutRequest.setRequestDescription("Travel completion payment");
                checkoutRequest.setCallbackUrl(callbackPath + "/base/wxPayOrderTaxi");
                checkoutRequest.setPendingRedirectUrl("");
                checkoutRequest.setSuccessRedirectUrl("http://182.160.16.251:81/payMoney/pages/success.html");
                checkoutRequest.setFailRedirectUrl("http://182.160.16.251:81/payMoney/pages/fail.html");
                checkoutRequest.setSuccessRedirectUrl("https://igo.i-go.group/payMoney/pages/success.html");
                checkoutRequest.setFailRedirectUrl("https://igo.i-go.group/payMoney/pages/fail.html");
                ResultUtil resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest);
                if(resultUtil.getCode()==200){
                    paymentRecordService.saveData(1, uid, 2, orderId, orderType, 1, money, null, 1);//添加预支付数据
@@ -1190,8 +1199,8 @@
                checkoutRequest.setRequestDescription("Travel completion payment");
                checkoutRequest.setCallbackUrl(callbackPath + "/base/wxPayOrderTaxi");
                checkoutRequest.setPendingRedirectUrl("");
                checkoutRequest.setSuccessRedirectUrl("http://182.160.16.251:81/payMoney/pages/success.html");
                checkoutRequest.setFailRedirectUrl("http://182.160.16.251:81/payMoney/pages/fail.html");
                checkoutRequest.setSuccessRedirectUrl("https://igo.i-go.group/payMoney/pages/success.html");
                checkoutRequest.setFailRedirectUrl("https://igo.i-go.group/payMoney/pages/fail.html");
                ResultUtil resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest);
                if(resultUtil.getCode()==200){
@@ -1232,6 +1241,57 @@
        }
        return ResultUtil.success();
    }
    @Override
    public void getDriverNowPosition() {
        for (OrderPrivateCar orderPrivateCar : orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>().eq("state", 5))) {
            String trackId = orderPrivateCar.getTrackId();
            if(ToolUtil.isNotEmpty(trackId)){
                String trip = fleetEngineUtil.getTrip(trackId);
                JSONObject lastLocation = JSON.parseObject(trip).getJSONObject("lastLocation");
                JSONObject location = lastLocation.getJSONObject("location");
                Double latitude = location.getDouble("latitude");
                Double longitude = location.getDouble("longitude");
                OrderPosition orderPosition = new OrderPosition();
                orderPosition.setOrderId(orderPrivateCar.getId());
                orderPosition.setOrderType(1);
                orderPosition.setDriverId(orderPrivateCar.getDriverId());
                orderPosition.setLat(latitude.toString());
                orderPosition.setLon(longitude.toString());
                orderPosition.setInsertTime(new Date());
                try {
                    orderPositionService.saveData(orderPosition);
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
        }
        List<OrderLogistics> orderLogisticsList = orderLogisticsService.selectList(new EntityWrapper<OrderLogistics>().eq("state", 5));
        for (OrderLogistics orderLogistics : orderLogisticsList) {
            String trackId = orderLogistics.getTrackId();
            if(ToolUtil.isNotEmpty(trackId)){
                String trip = fleetEngineUtil.getTrip(trackId);
                JSONObject lastLocation = JSON.parseObject(trip).getJSONObject("lastLocation");
                JSONObject location = lastLocation.getJSONObject("location");
                Double latitude = location.getDouble("latitude");
                Double longitude = location.getDouble("longitude");
                OrderPosition orderPosition = new OrderPosition();
                orderPosition.setOrderId(orderLogistics.getId());
                orderPosition.setOrderType(1);
                orderPosition.setDriverId(orderLogistics.getDriverId());
                orderPosition.setLat(latitude.toString());
                orderPosition.setLon(longitude.toString());
                orderPosition.setInsertTime(new Date());
                try {
                    orderPositionService.saveData(orderPosition);
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }
}