From 9e8c542caf11c0b72639a8e323fa81fd3b4f594e Mon Sep 17 00:00:00 2001
From: huliguo <2023611923@qq.com>
Date: 星期二, 01 四月 2025 19:00:09 +0800
Subject: [PATCH] 首页

---
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java |   95 ++++++++++++++++++++++++++++-------------------
 1 files changed, 57 insertions(+), 38 deletions(-)

diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java
index 8a43b04..9c47115 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java
@@ -1,5 +1,6 @@
 package com.ruoyi.other.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -8,12 +9,14 @@
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.GeodesyUtil;
-import com.ruoyi.common.core.utils.ServletUtils;
-import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.security.service.TokenService;
-import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.other.api.domain.Phone;
 import com.ruoyi.other.api.domain.Shop;
+import com.ruoyi.other.api.domain.ShopScore;
+import com.ruoyi.other.mapper.PhoneMapper;
 import com.ruoyi.other.mapper.ShopMapper;
+import com.ruoyi.other.mapper.ShopScoreMapper;
+import com.ruoyi.other.service.ShopScoreService;
 import com.ruoyi.other.service.ShopService;
 import com.ruoyi.other.vo.NearbyShopVO;
 import com.ruoyi.other.vo.SaveWithdrawalAccount;
@@ -41,13 +44,26 @@
     @Resource
     private ShopMapper shopMapper;
     @Resource
+    private PhoneMapper phoneMapper;
+    @Resource
+    private ShopScoreService shopScoreService;
+    @Resource
     private AppUserClient appUserClient;
     @Resource
     private TokenService tokenService;
     @Resource
     private SysUserClient sysUserClient;
+    @Resource
+    private ShopScoreMapper scoreMapper;
 
 
+    /**
+     *  获取门店列表
+     * @param PageNum
+     * @param pageSize
+     * @param shop
+     * @return
+     */
     @Override
     public IPage<Shop> getShopList(Integer PageNum, Integer pageSize, Shop shop) {
         Page<Shop> page = new Page<>();
@@ -56,52 +72,33 @@
         return shopMapper.selectShopList(page, shop);
     }
 
-    @Override
-    public List<NearbyShopVO> nearbyShopList(BigDecimal longitude, BigDecimal latitude) {
-        String token = SecurityUtils.getToken(ServletUtils.getRequest());
-        AppUser appUser = null;
-        if(StringUtils.isNotEmpty(token)){
-            Long userid = tokenService.getLoginUserApplet().getUserid();
-            appUser = appUserClient.getAppUserById(userid);
-        }
 
-        List<NearbyShopVO> nearbyShopVOS = shopMapper.selectNearbyShopList();
+    /**
+     * 获取最近的门店
+     * @param longitude
+     * @param latitude
+     * @return
+     */
+    @Override
+    public List<NearbyShopVO> nearbyShopList(BigDecimal longitude, BigDecimal latitude,Shop shop) {
+        //获取所有店
+        List<NearbyShopVO> nearbyShopVOS = shopMapper.selectNearbyShopList(shop);
+        if (nearbyShopVOS == null || nearbyShopVOS.isEmpty()) {
+            return Collections.emptyList();
+        }
+        //计算距离
         for (NearbyShopVO nearbyShopVO : nearbyShopVOS) {
             Double wgs84 = GeodesyUtil.getDistance(nearbyShopVO.getLongitude() + "," + nearbyShopVO.getLatitude(), longitude + "," + latitude).get("WGS84");
             nearbyShopVO.setDistance(new BigDecimal(wgs84).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
         }
+        /*//排序
         nearbyShopVOS.sort(new Comparator<NearbyShopVO>() {
             @Override
             public int compare(NearbyShopVO o1, NearbyShopVO o2) {
                 return o1.getDistance().compareTo(o2.getDistance());
             }
-        });
+        });*/
 
-        if(null != appUser && null != appUser.getShopId()){
-            AppUser finalAppUser = appUser;
-            Optional<NearbyShopVO> first = nearbyShopVOS.stream().filter(s -> s.getId().equals(finalAppUser.getShopId().longValue())).findFirst();
-            if(first.isPresent()){
-                NearbyShopVO nearbyShopVO = first.get();
-                if(null != nearbyShopVO){
-                    nearbyShopVOS.remove(nearbyShopVO);
-                }
-            }
-
-            Shop shop = shopMapper.selectById(appUser.getShopId());
-            if(null != shop && shop.getDelFlag() == 0 && shop.getStatus() == 1){
-                NearbyShopVO vo = new NearbyShopVO();
-                vo.setId(appUser.getShopId().longValue());
-                vo.setName(shop.getName());
-                vo.setAddress(shop.getAddress());
-                vo.setHomePicture(shop.getHomePicture());
-                Double wgs84 = GeodesyUtil.getDistance(longitude.toString() + "," + latitude.toString(), shop.getLongitude() + "," + shop.getLatitude()).get("WGS84");
-                vo.setDistance(new BigDecimal(wgs84).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
-                nearbyShopVOS.add(0, vo);
-            }
-        }
-        if (nearbyShopVOS == null || nearbyShopVOS.isEmpty()) {
-            return Collections.emptyList();
-        }
         return sortByDistance(nearbyShopVOS);
     }
 
@@ -122,6 +119,24 @@
         if (shopDetailVO == null) {
             throw new ServiceException("查询店铺不存在");
         }
+        //查询客服电话
+        Phone phone = phoneMapper.selectOne(new LambdaQueryWrapper<Phone>().eq(Phone::getShopId, shopDetailVO.getId()));
+        ArrayList<String> phones = new ArrayList<>();
+        if (phone != null) {
+            if (phone.getPhoneOne() != null) {
+                phones.add(phone.getPhoneOne());
+            }
+            if (phone.getPhoneTwo() != null) {
+                phones.add(phone.getPhoneTwo());
+            }
+        }
+        shopDetailVO.setPhones(phones);
+
+        //我的评分
+        if (userid != null){
+            ShopScore one = shopScoreService.getOne(new LambdaQueryWrapper<ShopScore>().eq(ShopScore::getAppUserId, userid).eq(ShopScore::getShopId, shopId).last(" order by create_time desc limit 0, 1"));
+            shopDetailVO.setMyScore(null == one ? BigDecimal.ZERO : one.getScore());
+        }
 
         // 计算距离
         if (shopDetailVO.getLongitude() != null && shopDetailVO.getLatitude() != null){
@@ -133,6 +148,8 @@
         }
         return shopDetailVO;
     }
+
+
 
     @Override
     public Boolean cheUserByPhone(String phone) {
@@ -161,4 +178,6 @@
             this.updateById(shop);
         }
     }
+
+
 }

--
Gitblit v1.7.1