From 3ed8156b12d445bb4e374a7ee43696c60c10c58c Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期二, 20 五月 2025 15:50:53 +0800
Subject: [PATCH] 修改bug

---
 UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java      |    6 +-
 UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineSiteMapper.xml                  |    2 
 UserOKTravel/guns-admin/pom.xml                                                                                            |   10 +++
 UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoJson.java                            |    9 +++
 UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java  |   11 ++-
 UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoFencingPolygon.java                  |   35 +++++++++++
 UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/LocationQuery.java                      |   23 +++++++
 UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java               |   11 ++-
 UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java |   34 +++++++++-
 UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/SiteServiceImpl.java                |   20 ++++--
 UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml                       |    2 
 UserOKTravel/guns-admin/src/main/resources/application.yml                                                                 |    5 +
 12 files changed, 141 insertions(+), 27 deletions(-)

diff --git a/UserOKTravel/guns-admin/pom.xml b/UserOKTravel/guns-admin/pom.xml
index 5d99f93..d342b24 100644
--- a/UserOKTravel/guns-admin/pom.xml
+++ b/UserOKTravel/guns-admin/pom.xml
@@ -190,7 +190,15 @@
             <artifactId>geodesy</artifactId>
             <version>1.1.3</version>
         </dependency>
-
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-mongodb</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+    
         <!--引入本地工行支付jar start-->
         <!--<dependency>-->
             <!--<groupId>com.icbc</groupId>-->
diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineSiteMapper.xml b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineSiteMapper.xml
index 81993a6..993d3ca 100644
--- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineSiteMapper.xml
+++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineSiteMapper.xml
@@ -43,7 +43,7 @@
         left join t_car_model f on (d.carModelId = f.id)
         left join t_car_service g on (d.id = g.carId and g.`type` = 3)
         left join t_line_price h on (g.serverCarModelId = h.serverCarModelId and a.lineId = h.lineId)
-        where 1 = 1
+        where b.driverId in (select driverId from t_driver_work where state = 1 and type like '%3%')
         <if test="null != lineId">
             and a.lineId = #{lineId}
         </if>
diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
index 2e86a2b..d10463d 100644
--- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
+++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -587,9 +587,9 @@
         orderCrossCity.setRemark(orderCrossCityWarpper.getRemark());
         orderCrossCity.setIsReassign(1);
         //调用高德创建轨迹
-        String s = gdFalconUtil.selectTerminal(driver.getPhone());
-        String track = gdFalconUtil.createTrack(s);
-        orderCrossCity.setTrackId(track);
+//        String s = gdFalconUtil.selectTerminal(driver.getPhone());
+//        String track = gdFalconUtil.createTrack(s);
+//        orderCrossCity.setTrackId(track);
         if(orderCrossCity.getTravelMode() == 2){//包车
             orderCrossCity.setSeatNumber(lineShiftDriver.getLaveSeatNumber());
             orderCrossCity.setPeopleNumber(lineShiftDriver.getLaveSeat());
diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/SiteServiceImpl.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/SiteServiceImpl.java
index 1bf87c0..1bceb66 100644
--- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/SiteServiceImpl.java
+++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/SiteServiceImpl.java
@@ -8,11 +8,17 @@
 import com.stylefeng.guns.modular.crossCity.server.ISiteService;
 import com.stylefeng.guns.modular.crossCity.warpper.SiteWarpper;
 import com.stylefeng.guns.modular.system.util.GDMapElectricFenceUtil;
+import com.stylefeng.guns.modular.system.util.model.GeoFencingPolygon;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.stream.Collectors;
 
 
 @Service
@@ -23,9 +29,9 @@
 
     @Resource
     private LocationMapper locationMapper;
-
+    
     @Autowired
-    private GDMapElectricFenceUtil gdMapElectricFenceUtil;
+    private MongoTemplate mongoTemplate;
 
 
     /**
@@ -109,12 +115,14 @@
                 }
             }
             if(Integer.valueOf(map.get("type").toString()) == 2){//电子围栏
-                String gid = map.get("gid").toString();
-                List<String> list1 = gdMapElectricFenceUtil.monitorElectricFenc("", lonLat);
-                if(list1.contains(gid)){
+                String[] split = lonLat.split(",");
+                GeoJsonPoint point = new GeoJsonPoint(Double.valueOf(split[0]), Double.valueOf(split[1]));
+                Query query = Query.query(Criteria.where("geoJsonPolygon").intersects(point));
+                List<GeoFencingPolygon> geoFencingPolygons = mongoTemplate.find(query, GeoFencingPolygon.class);
+                List<Integer> s_sites = geoFencingPolygons.stream().map(GeoFencingPolygon::getSiteId).collect(Collectors.toList());
+                if(s_sites.contains(siteId)){
                     return true;
                 }
-                continue;
             }
         }
         return false;
diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
index f92e95e..1961dbb 100644
--- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
+++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
@@ -10,10 +10,7 @@
 import com.stylefeng.guns.modular.smallLogistics.model.OrderLogisticsSpread;
 import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService;
 import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsSpreadService;
-import com.stylefeng.guns.modular.system.dao.RegionMapper;
-import com.stylefeng.guns.modular.system.dao.SensitiveWordsMapper;
-import com.stylefeng.guns.modular.system.dao.SysIntegralMapper;
-import com.stylefeng.guns.modular.system.dao.SystemPriceMapper;
+import com.stylefeng.guns.modular.system.dao.*;
 import com.stylefeng.guns.modular.system.model.*;
 import com.stylefeng.guns.modular.system.service.*;
 import com.stylefeng.guns.modular.system.util.*;
@@ -66,6 +63,12 @@
 
     @Autowired
     private IUserInfoService userInfoService;
+    
+    @Autowired
+    private IUserRedPacketRecordService userRedPacketRecordService;
+    
+    @Resource
+    private UserActivityDiscount1Mapper userActivityDiscount1Mapper;
 
     @Autowired
     private IPaymentRecordService paymentRecordService;
@@ -342,6 +345,12 @@
             if(dist.compareTo(jsonObject.getDouble("num20")) >= 0 && dist.compareTo(jsonObject.getDouble("num21")) < 0){
                 price2 = jsonObject.getDouble("num22");
             }
+            if(dist.compareTo(jsonObject.getDouble("num10")) >= 0){
+                price1 = jsonObject.getDouble("num11");
+            }
+            if(dist.compareTo(jsonObject.getDouble("num21")) >= 0){
+                price2 = jsonObject.getDouble("num22");
+            }
         }else{
             Map<String, Object> query1 = systemPriceMapper.query(query.getId(), type, null);
             String content = String.valueOf(query1.get("content"));
@@ -435,6 +444,21 @@
         Double orderMoney = orderLogistics.getOrderMoney();
         UserInfo userInfo = userInfoService.selectById(uid);
         ResultUtil resultUtil = ResultUtil.success();
+        orderLogistics.setCouponMoney(0D);//初始化历史数据
+        orderLogistics.setCouponId(null);
+    
+        //计算折扣
+        UserActivityDiscount1 query2 = userActivityDiscount1Mapper.query(orderLogistics.getCompanyId());
+        if(null != query2){
+            Double special = query2.getLogistics();
+            orderLogistics.setDiscount(special);
+            double v = new BigDecimal(orderMoney).multiply(new BigDecimal(special / 10)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
+            if(orderMoney.compareTo(v) > 0){
+                orderLogistics.setDiscountMoney(orderMoney - v);
+                orderLogistics.setActivityId(query2.getId());
+                orderMoney = v;
+            }
+        }
 
         if(payType == 1){//微信支付
             String app = type == 1 ? "APP" : "JSAPI";
@@ -812,7 +836,7 @@
         if(null == orderLogistics){
             return ResultUtil.error("取消订单失败,订单信息有误");
         }
-        if(orderLogistics.getState() > 5 && orderLogistics.getState() != 7 && orderLogistics.getState() != 8  && orderLogistics.getState() != 11){
+        if(orderLogistics.getState() >= 5 && orderLogistics.getState() != 7 && orderLogistics.getState() != 8  && orderLogistics.getState() != 11){
             return ResultUtil.error("取消订单失败,不合法的操作");
         }
 
diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
index 603d6a5..c184fb1 100644
--- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
+++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -37,6 +37,7 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 
 
@@ -286,9 +287,9 @@
             orderPrivateCar.setSnatchOrderTime(new Date());
 
             //调用高德创建轨迹
-            String s = gdFalconUtil.selectTerminal(driver.getPhone());
-            String track = gdFalconUtil.createTrack(s);
-            orderPrivateCar.setTrackId(track);
+//            String s = gdFalconUtil.selectTerminal(driver.getPhone());
+//            String track = gdFalconUtil.createTrack(s);
+//            orderPrivateCar.setTrackId(track);
 
             //调用移动的小号接口
             Map<String, String> geocode1 = gdMapGeocodingUtil.geocode(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
@@ -1190,7 +1191,7 @@
             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() + "";
+            t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), 2, RoundingMode.HALF_UP).setScale(2, BigDecimal.ROUND_HALF_EVEN).intValue() + "";
         }
         OrderServerWarpper orderServerWarpper = new OrderServerWarpper();
         orderServerWarpper.setOrderId(orderPrivateCar.getId());
@@ -1213,7 +1214,7 @@
                 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() + "";
+                t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), 2, RoundingMode.HALF_UP).setScale(2, BigDecimal.ROUND_HALF_EVEN).intValue() + "";
             }
             orderServerWarpper.setReservationMileage("0");
             orderServerWarpper.setReservationTime("0");
diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml
index 67abe6e..2c74ed0 100644
--- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml
+++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml
@@ -265,7 +265,7 @@
         a.headImgUrl as avatar,
         a.phone as phone,
         c.carLicensePlate as carCode,
-        CONCAT(F.`name`, d.`name`,  '.', c.carColor) as carName,
+        CONCAT(f.`name`, d.`name`,  '.', c.carColor) as carName,
         (select sum(fraction) / count(id) from t_order_evaluate where driverId = a.id) as score,
         (
         (select count(id) from t_order_private_car where state in (7, 8, 9) and driverId = a.id) +
diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoFencingPolygon.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoFencingPolygon.java
new file mode 100644
index 0000000..5a2f93b
--- /dev/null
+++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoFencingPolygon.java
@@ -0,0 +1,35 @@
+package com.stylefeng.guns.modular.system.util.model;
+
+import lombok.Data;
+import org.springframework.data.mongodb.core.geo.GeoJsonPolygon;
+import org.springframework.data.mongodb.core.index.GeoSpatialIndexType;
+import org.springframework.data.mongodb.core.index.GeoSpatialIndexed;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.io.Serializable;
+
+/**
+ * 地理围栏-多边形
+ * @author zhibing.pu
+ * @date 2023/4/29 23:53
+ */
+@Data
+@Document(collection = "geo_fencing")
+public class GeoFencingPolygon implements Serializable {
+    private static final long serialVersionUID = 4508868382007529971L;
+
+    private String id;
+    /**
+     * 站点id
+     */
+    private Integer siteId;
+    /**
+     * 站点名称
+     */
+    private String name;
+    /**
+     * 多边形经纬度
+     */
+    @GeoSpatialIndexed(type = GeoSpatialIndexType.GEO_2DSPHERE)
+    private GeoJsonPolygon geoJsonPolygon;
+}
diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoJson.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoJson.java
new file mode 100644
index 0000000..bb04b82
--- /dev/null
+++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoJson.java
@@ -0,0 +1,9 @@
+package com.stylefeng.guns.modular.system.util.model;
+
+import lombok.Data;
+
+@Data
+public class GeoJson {
+    private String type;
+    private Double[] coordinates;
+}
diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/LocationQuery.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/LocationQuery.java
new file mode 100644
index 0000000..a7f14dc
--- /dev/null
+++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/LocationQuery.java
@@ -0,0 +1,23 @@
+package com.stylefeng.guns.modular.system.util.model;
+
+import lombok.Data;
+
+@Data
+public class LocationQuery {
+    /**
+     * 当前经纬度[xxx,xxx]
+     **/
+    private Double[] coordinates;
+    /**
+     * 距离,如:200,500,1,3,5,10,20
+     **/
+    private Double distance;
+    /**
+     * 距离单位,如:m,km
+     **/
+    private String unit;
+    /**
+     * 位置类型:1-景点,2-加油站,3-酒店
+     **/
+    private Integer type;
+}
\ No newline at end of file
diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
index 86b2167..3044f40 100644
--- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
+++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -40,6 +40,7 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 
 @Service
@@ -268,9 +269,9 @@
             orderTaxi.setState(2);//待出发
             orderTaxi.setSnatchOrderTime(new Date());
             //调用高德创建轨迹
-            String s = gdFalconUtil.selectTerminal(driver.getPhone());
-            String track = gdFalconUtil.createTrack(s);
-            orderTaxi.setTrackId(track);
+//            String s = gdFalconUtil.selectTerminal(driver.getPhone());
+//            String track = gdFalconUtil.createTrack(s);
+//            orderTaxi.setTrackId(track);
 
             //调用移动的小号接口
             Map<String, String> geocode1 = gdMapGeocodingUtil.geocode(orderTaxi.getStartLon().toString(), orderTaxi.getStartLat().toString());
@@ -1028,7 +1029,7 @@
             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() + "";
+            t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), 2, RoundingMode.HALF_UP).setScale(2, BigDecimal.ROUND_HALF_EVEN).intValue() + "";
         }
         OrderServerWarpper orderServerWarpper = new OrderServerWarpper();
         orderServerWarpper.setOrderId(orderTaxi.getId());
@@ -1051,7 +1052,7 @@
                 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() + "";
+                t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), 2, RoundingMode.HALF_UP).setScale(2, BigDecimal.ROUND_HALF_EVEN).intValue() + "";
             }
             orderServerWarpper.setReservationMileage("0");
             orderServerWarpper.setReservationTime("0");
diff --git a/UserOKTravel/guns-admin/src/main/resources/application.yml b/UserOKTravel/guns-admin/src/main/resources/application.yml
index 98dde73..330baf8 100644
--- a/UserOKTravel/guns-admin/src/main/resources/application.yml
+++ b/UserOKTravel/guns-admin/src/main/resources/application.yml
@@ -80,7 +80,12 @@
     dataSourceNames:
       - dataSourceGuns
       - dataSourceBiz
+---
 
+spring:
+  data:
+    mongodb:
+      uri: mongodb://127.0.0.1:27017/admin
 ---
 
 

--
Gitblit v1.7.1