|
|
@@ -3028,59 +3028,6 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
|
|
|
return storeInfoVoList;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 根据距离过滤并排序店铺列表
|
|
|
- *
|
|
|
- * @param storeInfoVoList 原始店铺列表
|
|
|
- * @param lon 用户经度
|
|
|
- * @param lat 用户纬度
|
|
|
- * @return 距离范围内的店铺列表
|
|
|
- */
|
|
|
- private List<StoreInfoVo> filterStoresWithinDistance(List<StoreInfoVo> storeInfoVoList, double lon, double lat) {
|
|
|
- List<StoreInfoVo> filteredList = storeInfoVoList.stream()
|
|
|
- .filter(store -> isWithinDistance(store, lon, lat, StoreInfoServiceImpl.DEFAULT_DISTANCE_METER))
|
|
|
- .sorted(Comparator.comparingDouble(StoreInfoVo::getDistance3))
|
|
|
- .collect(Collectors.toList());
|
|
|
-
|
|
|
- if (log.isInfoEnabled()) {
|
|
|
- log.info("距离筛选完成,原始店铺数量={},筛选后店铺数量={},筛选距离={}米",
|
|
|
- storeInfoVoList.size(), filteredList.size(), StoreInfoServiceImpl.DEFAULT_DISTANCE_METER);
|
|
|
- }
|
|
|
- return filteredList;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 判断店铺是否在指定距离范围内
|
|
|
- *
|
|
|
- * @param store 店铺信息
|
|
|
- * @param lon 用户经度
|
|
|
- * @param lat 用户纬度
|
|
|
- * @param maxDistance 最大距离(米)
|
|
|
- * @return true 表示在范围内
|
|
|
- */
|
|
|
- private boolean isWithinDistance(StoreInfoVo store, double lon, double lat, int maxDistance) {
|
|
|
- if (StringUtils.isEmpty(store.getStorePosition())) {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- String[] positionArray = store.getStorePosition().split(",");
|
|
|
- if (positionArray.length != 2) {
|
|
|
- log.warn("店铺坐标格式异常,storeId={},storePosition={}", store.getId(), store.getStorePosition());
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- try {
|
|
|
- double storeLon = Double.parseDouble(positionArray[0].trim());
|
|
|
- double storeLat = Double.parseDouble(positionArray[1].trim());
|
|
|
- double distanceMeters = DistanceUtil.haversineCalculateDistance(lon, lat, storeLon, storeLat) * 1000;
|
|
|
- store.setDistance3(distanceMeters);
|
|
|
- return distanceMeters <= maxDistance;
|
|
|
- } catch (NumberFormatException ex) {
|
|
|
- log.warn("店铺坐标解析失败,storeId={},storePosition={},error={}", store.getId(), store.getStorePosition(), ex.getMessage());
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
@Override
|
|
|
public Map<String, Object> getStoreOcrData(String storeId, String imageUrl) {
|
|
|
Map<String, Object> map = new HashMap<>();
|