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

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

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

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

 

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

我的后端代码如下:

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

前端直连模型 vs 完整 MCP:大模型驱动地图的原理与实践(技术栈Vue + Cesium + Node.js + WebSocket + MCP)

适合读者:完全新手、前端开发者、对大模型工具调用感兴趣的工程师 技术栈示例:Vue + Cesium + Node.js + WebSocket + MCP 教程目标:看懂并搭建一套“用户通过聊天输入指令,大模型决定调用工具,再驱动地图执行动作”的完整链路 目录 * 1. 这篇教程要解决什么问题 * 2. 先别写代码:先搞懂两个很像但本质不同的方案 * 2.1 方案一:前端直连模型 * 2.2 方案二:真正完整的 MCP * 2.3 它们最核心的区别 * 3. 为什么很多人一开始会把两套方案混在一起 * 4. 先建立整体认知:完整 MCP 里有哪些角色 * 5. 完整 MCP 的时序图:一句“飞到上海”是怎么穿过整个系统的 * 6.

【测试理论与实践】(十)Web 项目自动化测试实战:从 0 到 1 搭建博客系统 UI 自动化框架

【测试理论与实践】(十)Web 项目自动化测试实战:从 0 到 1 搭建博客系统 UI 自动化框架

目录 前言 一、项目背景与测试规划:先明确 "测什么" 和 "怎么测" 1.1 项目介绍 1.2 测试目标 1.3 测试范围与用例设计 编辑 二、环境搭建:3 步搞定自动化测试前置准备 2.1 安装核心依赖包 2.2 浏览器配置 2.3 项目目录结构设计 三、核心模块开发:封装公共工具,提高代码复用性 3.1 驱动管理与截图工具封装(common/Utils.py) 3.2 代码说明与优化点 四、测试用例开发:

鸿蒙 HarmonyOS 6 | 混合开发 (01) Web 组件内核——ArkWeb 加载机制与 Cookie 管理

鸿蒙 HarmonyOS 6 | 混合开发 (01) Web 组件内核——ArkWeb 加载机制与 Cookie 管理

文章目录 * 前言 * 一、 Web 组件的控制核心:WebviewController * 二、 掌控加载生命周期:优化加载与异常反馈 * 三、 跨端状态同步:Cookie 管理与持久化 * 四、 实战 构建具备完整状态闭环的 ArkWeb 浏览器容器 * 五、 总结 前言 在移动应用开发中,原生开发(Native)与网页开发(Web)的融合方案(Hybrid)已成为商业应用的标配。营销活动页、动态协议、复杂的可视化报表等场景,通常依赖 Web 生态的灵活性与更新效率。因此,在鸿蒙原生应用中高性能地嵌入 H5 页面,是开发者必须掌握的核心能力。 在 HarmonyOS 6 (API 20) 中,系统提供了全新的 ArkWeb 内核。它基于

Qwen All-in-One用户体验优化:前端交互集成指南

Qwen All-in-One用户体验优化:前端交互集成指南 1. 为什么需要“一个模型干两件事”? 你有没有遇到过这样的场景: 想给用户加个情感分析功能,顺手又想做个智能对话助手——结果一查文档,得装两个模型:一个BERT做分类,一个Qwen做聊天。显存不够?报错;环境冲突?重装;部署到树莓派?直接放弃。 Qwen All-in-One 就是为这种“小而全”的需求生的。它不靠堆模型,而是让同一个 Qwen1.5-0.5B 模型,在不同提示(Prompt)下切换角色:前一秒是冷静的情感判官,后一秒变成有温度的对话伙伴。没有额外参数、不增一行权重、不换一次推理引擎——只靠输入指令的“语气”和结构,就完成任务切换。 这不是炫技,是实打实的工程减法: * 不用管模型版本对齐问题 * 不用协调多个服务的启动顺序 * 不用在CPU设备上反复权衡“该留多少内存给谁” 它把复杂性锁在Prompt设计里,把简洁性留给前端开发者。