Quellcode durchsuchen

列出许过愿望的树

tanlie vor 2 Wochen
Ursprung
Commit
cf3e885559

+ 6 - 0
wishing-platform/platform-service/platform-service-mobile/src/main/java/cn/qinys/platform/mobile/mapper/UserWishMapper.java

@@ -12,6 +12,8 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
+import java.util.List;
+
 @Mapper
 public interface UserWishMapper extends BaseMapper<UserWish> {
 
@@ -28,4 +30,8 @@ public interface UserWishMapper extends BaseMapper<UserWish> {
             "WHERE user_id = #{userId} AND is_deleted = 0")
     UserWishSummaryResp selectWishSummary(@Param("userId") Integer userId);
 
+
+    @Select("SELECT  DISTINCT (tree_id) FROM user_wish WHERE  user_id = #{userId} AND is_deleted = 0")
+    List<Integer> selectUserTrees(@Param("userId") Integer userId);
+
 }

+ 18 - 1
wishing-platform/platform-service/platform-service-mobile/src/main/java/cn/qinys/platform/mobile/service/impl/TreeServiceImpl.java

@@ -1,5 +1,7 @@
 package cn.qinys.platform.mobile.service.impl;
 
+import cn.qinys.platform.base.security.utils.CurrentUtils;
+import cn.qinys.platform.mobile.mapper.UserWishMapper;
 import cn.qinys.platform.mobile.mapper.WishingTreeMapper;
 import cn.qinys.platform.mobile.req.TreeDetailReq;
 import cn.qinys.platform.mobile.req.WishingTreeListReq;
@@ -11,6 +13,7 @@ import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -26,6 +29,8 @@ public class TreeServiceImpl implements TreeService {
 
     @Resource
     private WishingTreeMapper treeMapper;
+    @Resource
+    UserWishMapper wishMapper;
 
     private static final int EARTH_RADIUS = 6371000; // 地球半径(米)
 
@@ -41,10 +46,11 @@ public class TreeServiceImpl implements TreeService {
             tree.setIsInRange(dist <= (tree.getRadius() != null ? tree.getRadius() : 100));
         });
 
+        List<Integer> integers = this.userTrees();
         // 按距离排序,限制返回数量
         return trees.stream()
                 .sorted(Comparator.comparingInt(TreeListResp::getDistance))
-                .filter(it -> it.getDistance() <= req.getMaxDistance())
+                .filter(it -> it.getDistance() <= req.getMaxDistance() || integers.contains(it.getId()))
                 .limit(req.getLimit())
                 .collect(Collectors.toList());
     }
@@ -72,4 +78,15 @@ public class TreeServiceImpl implements TreeService {
         double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
         return (int) Math.round(EARTH_RADIUS * c);
     }
+
+    private List<Integer> userTrees(){
+        Integer userId = Integer.valueOf(CurrentUtils.getCurrentUserId());
+        List<Integer> trees = wishMapper.selectUserTrees(userId);
+        if(trees == null || trees.isEmpty()){
+            trees = new ArrayList<>();
+            trees.add(0);
+        }
+        return trees;
+
+    }
 }