Kaynağa Gözat

chore: 标记百度/Mapbox 地图接口停用(GetArea @Deprecated + 调用点注释,setYjsdTime 一并停用)并新增 docs/map-api-usage.md 使用现状清单,零行为变化

qmj 3 hafta önce
ebeveyn
işleme
315c6422bf

+ 39 - 0
docs/map-api-usage.md

@@ -0,0 +1,39 @@
+# 地图功能使用现状
+
+面向后端维护者的地图能力清单。2026-09-29 起,**百度、Mapbox 的外部接口已标记停用**:代码保留、行为未变,仅加注解与本文记录,禁止新增调用。
+
+## 外部地图服务状态
+
+| 服务 | 能力 | 封装位置 | 状态 |
+|---|---|---|---|
+| Google | Directions 路线 | `GetArea.getluxian` → `/utils/getluxianjvli` | 在用(key 硬编码,切换计划中作废) |
+| Google | Nearby/Geocoding 逆地理 | `GetArea.getgoogle` / `getgoogleadd` → `/utils/getLocationAddr`(type=1)、`/utils/getAddr` | 在用(key 硬编码) |
+| Google | Routes API v2 | `GoogleRoutesDistanceProvider`(闪送报价距离) | 在用(key 走字典 `sys_googlemap_key`) |
+| Mapbox | Directions cycling | `GetArea.getmpluxian` → `/utils/getluxianjvliMp` | **已停用**(@Deprecated,端点保留) |
+| Mapbox | Directions driving 耗时 | `GetArea.getMotorbikeDuration` | **已停用**(见下方存量调用点) |
+| 百度 | 逆地理 reverse_geocoding | `GetArea.getarearess` → `/utils/getLocationAddr`(type=0) | **已停用**(分支保留兜底) |
+| 百度 | 坐标转换 geoconv | `GetArea.setlatlng` → `/utils/setLocat` | **已停用**(端点保留) |
+
+## 不依赖外部地图的能力(纯数学 / 纯 DB)
+
+| 能力 | 位置 | 实现 |
+|---|---|---|
+| 外卖运费估算 | `/utils/getyunfei` | `GetJvli.getDistance` Haversine 直线 + `pos_freight` 跳表 |
+| 打车计价 | `TaxiPricesController /ganyunfei` | 直线距离 + `taxi_prices` 表 |
+| 两点距离 | `UserOrderController /getDistance`、`GetArea.getDistance` | Haversine 纯数学 |
+| GCJ02→WGS84 | `/utils/GCJ2TOWGS` | 纯数学转换 |
+| 地址簿最近地址 | `/system/address/getzuijinaddress` | DB 排序 |
+| 骑手派单 / 附近订单 | `PosOrderMapper.getqisjvli` / `getstate` | MySQL `st_distance` DB 半径 |
+| 闪送报价兜底 | `FlashDeliveryRouteService` | Google 路线失败时直线距离 + `distanceSource=STRAIGHT_LINE` 落库 |
+
+## 存量调用点警示
+
+- `PosOrderController.setYjsdTime`(state=4 订单的预计送达时间,调用方为改单状态取餐分支与测试端点 `/testYjsdTime`)**已停用**(2026-09-29 标记):方法不再使用,保留调用不影响状态流转;其依赖的 `getMotorbikeDuration`(Mapbox driving ×1.5)因此实际无在用调用。切自部署路线源(032)时可一并清理。
+- `/utils/getLocationAddr` 的 `type=0` 百度分支保留兜底;App 端应使用 `type=1` 谷歌分支。
+- `GetJvli.getOptimalRoute`(Google Routes v2)全库无调用方,属死代码,不在本次标注范围。
+- `GetArea`/`GetJvli` 硬编码的 Google key 与 Mapbox token 已随 git 历史泄漏,切换自部署后应全部作废。
+
+## 关联
+
+- 切换计划:`specs/032-self-hosted-map-integration/spec.md`(自部署 Foodie_HCM_Map:PostGIS 搜索 + OSRM 算路 + OpenFreeMap 底图;plan/tasks 未生成,未开工)
+- 自部署地图仓库:`D:\QtwCode\foodie\Foodie_HCM_Map`

+ 6 - 1
ruoyi-admin/src/main/java/com/ruoyi/app/order/PosOrderController.java

@@ -268,7 +268,7 @@ public class PosOrderController extends BaseController {
                 System.out.println("进入设置paytype等于1");
                 posOrder.setPayType("1");
             }
-            //取餐时设置预计送达时间
+            //取餐时设置预计送达时间(已停用 2026-09-29:setYjsdTime 不再使用,保留调用不影响状态流转)
             setYjsdTime(posOrder);
             if (posOrder.getState() == 5) {
                 return setOrderState5(posOrder);
@@ -600,6 +600,9 @@ public class PosOrderController extends BaseController {
      * @param posOrder
      * @return
      */
+    //已停用(2026-09-29 标记):本方法已不再使用,保留代码备查;
+    //内部依赖已停用(2026-09-29 标记)的 Mapbox 耗时接口
+    @Deprecated
     private String setYjsdTime(PosOrder posOrder) {
         try {
             if (posOrder.getState() == 4) {
@@ -609,6 +612,7 @@ public class PosOrderController extends BaseController {
                 InfoAddress shDz = infoAddressService.getById(order.getShdzId());
 
                 String shlat = shDz.getLongitude() + "," + shDz.getLatitude();
+                //依赖已停用(2026-09-29 标记)的 Mapbox 耗时接口;存量逻辑暂保留,待切自部署路线源时一并更换
                 double time = getArea.getMotorbikeDuration(mdlat, shlat);
                 DateUtil dateUtil = new DateUtil();
                 String start = dateUtil.getHourAndMinute((long) time);
@@ -625,6 +629,7 @@ public class PosOrderController extends BaseController {
     }
 
     //修改订单
+    //已停用(2026-09-29 标记):测试端点,随 setYjsdTime 一并停用,保留备查
     @Anonymous
     @PostMapping("/testYjsdTime")
     public String testYjsdTime(@RequestBody PosOrder order) {

+ 3 - 1
ruoyi-admin/src/main/java/com/ruoyi/app/utils/SysFileInfoController.java

@@ -63,6 +63,7 @@ public class SysFileInfoController extends BaseController {
         GetArea area = new GetArea();
         String lang = jedis.get(id) == null ? "zh-TW" : jedis.get(id);
         JSONObject reg;
+        //type=0 百度逆地理分支已停用(2026-09-29 标记),保留兜底不删;当前在用的是 type=1 谷歌分支
         if (type == 0) {
             reg = area.getarearess(latlng, lang);
         } else {
@@ -83,7 +84,7 @@ public class SysFileInfoController extends BaseController {
         return success(reg);
     }
 
-    //坐标转换
+    //已停用(2026-09-29 标记):百度坐标转换接口,端点保留未删,勿再新增调用
     @Anonymous
     @GetMapping("/setLocat")
     public AjaxResult setLocat(@RequestParam String latlng,
@@ -218,6 +219,7 @@ public class SysFileInfoController extends BaseController {
      * @param id
      * @return
      */
+    //已停用(2026-09-29 标记):Mapbox 路线接口,端点保留未删,勿再新增调用
     @Anonymous
     @GetMapping("/getluxianjvliMp")
     public AjaxResult getluxianjvliMp(@RequestParam String lnglat1,

+ 10 - 2
ruoyi-system/src/main/java/com/ruoyi/system/utils/GetArea.java

@@ -32,6 +32,8 @@ public class GetArea {
         return jsonObject;
     }
 
+    //已停用(2026-09-29 标记):Mapbox 骑行路线接口,保留代码备查,勿新增调用
+    @Deprecated
     public JSONObject getmpluxian(String latlng1,String latlng2){
 
         String url = "https://api.mapbox.com/directions/v5/mapbox/cycling/"+latlng1+";"+latlng2+"?access_token=pk.eyJ1IjoiY2l0eWV4cHJlc3MxNjg4IiwiYSI6ImNsd2xpcHBtZTA1dzIyanBvenBkcGI2aW0ifQ.azi4w1LoND2oYlJFkpFchg";
@@ -41,7 +43,9 @@ public class GetArea {
         return jsonObject;
     }
 
-    //获取电动车耗时
+    //已停用(2026-09-29 标记):Mapbox 驾车耗时接口,保留代码备查,勿新增调用;
+    //唯一调用方 PosOrderController.setYjsdTime 亦已停用(2026-09-29 标记),本方法实际无在用调用
+    @Deprecated
     public double getMotorbikeDuration(String latlng1, String latlng2) {
         String url = "https://api.mapbox.com/directions/v5/mapbox/driving/"+latlng1+";"+latlng2+"?access_token=pk.eyJ1IjoiY2l0eWV4cHJlc3MxNjg4IiwiYSI6ImNsd2xpcHBtZTA1dzIyanBvenBkcGI2aW0ifQ.azi4w1LoND2oYlJFkpFchg";
 
@@ -71,7 +75,7 @@ public class GetArea {
         return totalMotorbikeTime;
     }
 
-    // 根据道路类型选择电动车速度
+    //已停用(2026-09-29 标记):随 getMotorbikeDuration 停用,当前仅剩注释引用
     private double getEVSpeed(JSONObject step) {
         JSONArray classes = step.getJSONArray("classes");
         if (classes != null && classes.contains("motorway")) return 50;  // 高速/国道
@@ -82,6 +86,8 @@ public class GetArea {
     }
 
 
+    //已停用(2026-09-29 标记):百度逆地理接口,保留代码备查,勿新增调用
+    @Deprecated
     public JSONObject getarearess(String latlng,String lang){
 
         String url = "https://api.map.baidu.com/reverse_geocoding/v3/?" +
@@ -133,6 +139,8 @@ public class GetArea {
         org.put("address",obj.getString("formatted_address"));
         return org;
     }
+    //已停用(2026-09-29 标记):百度坐标转换接口,保留代码备查,勿新增调用
+    @Deprecated
     public JSONObject setlatlng(String latlng,Integer from,Integer to){
 
         String url = "https://api.map.baidu.com/geoconv/v1/?" +