黑马点评中商铺地址查询前端显示问题

黑马点评中商铺地址查询前端显示问题

这个页面存在以下前端问题,这个页面中选择美食之后往下翻是不能自动滚动分页查询所有的美食店铺数据的。前端往下翻没反应

但是还有个很奇怪的点就是前端点击距离之后滚动查询第一页查询了两次,如下图,点击距离之后除了第一页的数据查询了两次之外就其他就正常了

 

最后看了好久才知道是查询页面数据大小的问题

我的后端代码如下:

controller层

/** * 根据商铺类型分页查询商铺信息 * @param typeId 商铺类型 * @param current 页码 * @param x 经度 * @param y 纬度 * @return 商铺列表 */ @GetMapping("/of/type") public Result queryShopByType( @RequestParam("typeId") Integer typeId, @RequestParam(value = "current", defaultValue = "1") Integer current, @RequestParam("x") Double x, @RequestParam("y") Double y ) { // 调用Service层方法(修正方法名驼峰规范) return shopService.queryShopByType(typeId, current, x, y); }

 

 

serviceImpl层:

@Override public Result queryShopByType(Integer typeId, Integer current, Double x, Double y) { if(x==null || y==null){ //直接返回对应类型的店铺就行了 // 根据类型分页查询 Page<Shop> page = query() .eq("type_id", typeId) .page(new Page<>(current, SystemConstants.DEFAULT_PAGE_SIZE)); return Result.ok(page.getRecords()); } int from=(current-1)*SystemConstants.DEFAULT_PAGE_SIZE; int end=current*SystemConstants.DEFAULT_PAGE_SIZE; String key="geo:shop:type:"+typeId; // 2. 构造5000米的距离对象(核心:指定米为单位,5000m) Distance distance = new Distance(5000, Metrics.METERS); // 3. 完整的GEO圆形区域查询(补全所有参数) GeoResults<RedisGeoCommands.GeoLocation<String>> geoResults = stringRedisTemplate.opsForGeo() .search( key, // Redis的GEO集合Key(按商铺类型分组) GeoReference.fromCoordinate(new Point(x, y)), // 圆心坐标(x经度,y纬度) distance, // 圆形半径:5000米 // 查询参数配置:按距离由近到远+预查足够数据(为后续分页准备) RedisGeoCommands.GeoRadiusCommandArgs.newGeoRadiusArgs() .sortAscending() // 按距离从近到远排序(附近商户必备) .limit(end) .includeDistance() // 核心:让Redis返回每个元素到圆心的距离 .includeCoordinates() // 预查数据,避免分页漏条 ); // 4. 判空:geoResults为空 或 无内容,直接返回空列表(修复原判空不完整问题) if (geoResults == null || geoResults.getContent().isEmpty()) { return Result.ok(Collections.emptyList()); } // 5. 核心:Stream分页(skip+limit)并接收结果,提取【商铺ID+距离】 List<GeoResult<RedisGeoCommands.GeoLocation<String>>> pageGeoList = geoResults.getContent().stream() .skip(from) // 跳过前from条,实现分页 .limit(SystemConstants.DEFAULT_PAGE_SIZE) // 截取分页条数(一页的数量) .collect(Collectors.toList()); // 必须collect接收结果,否则跳过不生效 // 6. 提取商铺ID(批量查库,替代循环单查,提升性能10倍+) List<Long> shopIds = pageGeoList.stream() .map(geoResult -> Long.valueOf(geoResult.getContent().getName())) .collect(Collectors.toList()); if (shopIds.isEmpty()) { return Result.ok(Collections.emptyList()); } String shopIdstr = StringUtil.join(shopIds, ","); // 7. 批量查询商铺详情(MyBatis-Plus批量查,避免循环eq单查) List<Shop> shopList = query().in("id", shopIds).last(("ORDER BY FIELD(id, " +shopIdstr + ")")).list(); // 8. 给商铺赋值距离(并保证shopList顺序和pageGeoList一致) for (int i = 0; i < pageGeoList.size(); i++) { GeoResult<RedisGeoCommands.GeoLocation<String>> geoResult = pageGeoList.get(i); Shop shop = shopList.get(i); // 距离转Double,加非空判断(防止空指针) Double distValue = geoResult.getDistance().getValue(); shop.setDistance(distValue); // 给Shop的distance字段赋值 } return Result.ok(shopList); }

 

 

 

将DEFAULT_PAGE_SIZE的大小改为5以上就行了

 

 

 

 

 

 

 

Read more

AI提示词:零基础入门与核心概念

AI提示词:零基础入门与核心概念

AI提示词:零基础入门与核心概念 📝 本章学习目标:理解什么是提示词,掌握提示词的核心概念,建立正确的AI对话思维,为后续学习打下坚实基础。 一、什么是提示词? 1.1 提示词的定义 提示词(Prompt),简单来说,就是你发给AI的指令或问题。它是人类与人工智能沟通的桥梁,是你告诉AI"我想要什么"的方式。 想象一下,你雇佣了一位超级聪明但对你的需求一无所知的助手。这位助手知识渊博、能力强大,但它需要你清晰地告诉它要做什么。提示词就是你给这位助手的工作指令。 💡 核心认知:提示词不是简单的"提问",而是一种结构化的指令设计。好的提示词能让AI精准理解你的意图,输出高质量的结果;糟糕的提示词则会让AI"答非所问",浪费你的时间。 1.2 提示词的重要性 为什么提示词如此重要?让我们通过一个对比来说明: ❌ 糟糕的提示词: 帮我写点东西 ✅ 好的提示词: 请帮我写一篇关于&

【保姆级教程】爆火开源项目 Next AI Draw.io 上手指南:一句话画流程图

【保姆级教程】爆火开源项目 Next AI Draw.io 上手指南:一句话画流程图

目录 一、部署方式选择说明(先看这个) 二、部署前准备(非常重要) 三、方式一:Docker 一行命令启动(最推荐) 四、方式二:源码本地运行(适合二次开发) 五、配置API_Key 六、案例展示 七、写到最后 最近一个开源项目 Next AI Draw.io 在 GitHub 上迅速走红,只需要一句自然语言,就能自动生成流程图、架构图,甚至是完整的 AWS / GCP / Azure 云架构示意图,引发了不少开发者和产品经理的关注。它将大模型能力与 draw.io 深度结合,把“画图”这件原本又慢又累的事情,直接变成了“对话即出图”,无论是技术方案梳理、

Claude Code安装与使用完全指南:2026 年最前沿的 AI 编程助手

Claude Code安装与使用完全指南:2026 年最前沿的 AI 编程助手

文章目录 * 前言 * 一、什么是 Claude Code? * 1.1 定义与定位 * 1.2 技术优势 * 二、安装前的环境准备 * 2.1 系统要求 * 2.2 前置依赖 * 三、Claude Code 全平台安装教程 * 3.1 安装方式对比 * 3.2 Windows 系统安装 * 3.3 macOS 系统安装 * 3.5 安装后初始化 * 四、配置与优化 * 4.1 配置文件位置 * 4.2 跳过新手引导 * 4.3 接入国产大模型(免翻墙方案)