From d4c3427bbd111f4a005c77a9cc1f131b455fc6cf Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期一, 30 十月 2023 11:30:40 +0800
Subject: [PATCH] 新增加腾讯地图工具类

---
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java |   30 ++++++++++++++++++++++++++++--
 1 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
index 24a94d1..76a6a30 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -36,6 +36,9 @@
 import com.ruoyi.shop.service.task.ShopTaskService;
 import com.ruoyi.shop.util.HuiFuTianXiaUtil;
 import com.ruoyi.shop.util.WechatPayUtils;
+import com.ruoyi.shop.util.map.MapUtil;
+import com.ruoyi.shop.util.map.vo.TencentDistanceMatrix;
+import com.ruoyi.shop.util.map.vo.TencentDistanceMatrixElements;
 import com.ruoyi.system.api.constant.AppErrorConstant;
 import com.ruoyi.system.api.constant.SecurityConstant;
 import com.ruoyi.system.api.domain.dto.*;
@@ -759,8 +762,31 @@
             //获取绑定商户
             shop = this.getById(member.getRelationShopId());
         }else if(StringUtils.isNotBlank(appNearbyShopDto.getLatitude())&&StringUtils.isNotBlank(appNearbyShopDto.getLongitude())){
-            AppNearShopVo appNearShopVo = shopMapper.getNearbyShop(appNearbyShopDto);
-            shop = this.getById(appNearShopVo.getShopId());
+            List<AppNearShopVo> appNearShopVos = shopMapper.getNearbyShops(appNearbyShopDto);
+            if(appNearShopVos.size() > 0){
+                StringBuffer to = new StringBuffer();
+                for (AppNearShopVo appNearShopVo : appNearShopVos) {
+                    to.append(appNearShopVo.getLatitude() + "," + appNearShopVo.getLongitude() + ";");
+                }
+                String form = appNearbyShopDto.getLatitude() + "," + appNearbyShopDto.getLongitude();
+                R<List<TencentDistanceMatrix>> r = MapUtil.tencentDistanceMatrix(form, to.substring(0, to.length() - 1), "walking");
+                if(r.getCode() != 200){
+                    throw new ServiceException(r.getMsg());
+                }
+                List<TencentDistanceMatrix> data = r.getData();
+                //存储最短距离
+                BigDecimal dis = new BigDecimal(0);
+                AppNearShopVo appNearShopVo = null;
+                List<TencentDistanceMatrixElements> elements = data.get(0).getElements();
+                for (int i = 0; i < elements.size(); i++) {
+                    TencentDistanceMatrixElements matrix = elements.get(i);
+                    if(dis.compareTo(BigDecimal.ZERO) == 0 || dis.compareTo(new BigDecimal(matrix.getDistance())) > 0){
+                        dis = new BigDecimal(matrix.getDistance());
+                        appNearShopVo = appNearShopVos.get(i);
+                    }
+                }
+                shop = this.getById(appNearShopVo.getShopId());
+            }
         }else{
             return appNearbyShopVo;
         }

--
Gitblit v1.7.1