|
|
@@ -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;
|
|
|
+
|
|
|
+ }
|
|
|
}
|