5.8 KiB
5.8 KiB
二维码功能修复说明(最终版)
修复时间
2025年1月
修复内容
一、删除快速生成功能
修改内容:
- 删除前端"快速生成"按钮和相关方法
- 删除后端快速生成接口(
/quick/register和/quick/login) - 删除前端API调用方法
说明:用户可以通过"新增"按钮手动创建注册和登录二维码。
二、修复本地环境二维码URL生成问题
问题:扫描二维码后显示的地址是 localhost:30081,这会导致手机无法访问。
原因分析:
- 本地环境:前端运行在80端口,后端运行在30081端口
- 二维码URL应该使用前端地址(
localhost,80端口),而不是后端地址(localhost:30081) - 之前的逻辑在某些情况下仍然会生成包含30081端口的URL
修复方案:
- 优化
buildServerAddress()方法,确保在本地环境下正确识别前端地址 - 如果检测到后端端口(30081),自动改为前端端口(80,不显示端口号)
- 优先从
Referer头获取前端地址,如果失败则使用请求的服务器地址并转换端口
修复后的URL格式:
- 本地环境:
http://localhost/psychology/qrcode/scan/xxx(不包含端口号,默认80端口) - 生产环境:
http://1.15.149.240/psychology/qrcode/scan/xxx(不包含端口号,默认80端口)
三、二维码功能实现方式说明
当前实现方式:
- 手动创建二维码:通过"新增"按钮创建二维码,选择类型(测评、查看报告、注册、登录)
- 二维码生成:系统自动生成二维码编码和Base64图片
- 扫码跳转:扫描二维码后自动跳转到对应页面
本地环境使用建议:
-
使用本机IP地址:如果需要在手机上扫码,建议:
- 获取本机IP地址(如:192.168.1.100)
- 在浏览器中通过
http://192.168.1.100访问前端页面 - 这样生成的二维码URL会是
http://192.168.1.100/psychology/qrcode/scan/xxx - 手机和电脑在同一局域网内,可以正常扫码访问
-
使用localhost:如果只在电脑上测试:
- 使用
http://localhost访问前端页面 - 生成的二维码URL会是
http://localhost/psychology/qrcode/scan/xxx - 只能在电脑上访问,手机无法访问
- 使用
新的实现方式建议(可选): 如果需要更好的本地开发体验,可以考虑:
- 配置前端地址:在
application.yml中添加前端地址配置 - 使用环境变量:通过环境变量区分开发环境和生产环境
- 使用配置文件:在配置文件中明确指定前端和后端地址
测试步骤
1. 重启后端服务
重要:修改代码后必须重启后端服务才能生效。
2. 测试二维码生成
- 登录管理系统
- 进入"二维码管理"页面
- 点击"新增"按钮
- 选择二维码类型(如:注册、登录、测评、查看报告)
- 填写相关信息
- 保存后应成功生成二维码
3. 测试二维码扫码功能
- 使用手机扫描生成的二维码
- 应能正常打开扫码页面
- 根据二维码类型自动跳转到对应页面:
- 注册二维码 → 跳转到注册页面
- 登录二维码 → 跳转到登录页面
- 测评二维码 → 跳转到测评开始页面
- 报告二维码 → 跳转到报告详情页面
4. 检查二维码URL
生成的二维码URL应该:
- 不包含30081端口:应该是
http://localhost/...或http://192.168.1.100/... - 使用前端地址:指向前端页面(80端口),而不是后端API(30081端口)
- 手机可以访问:如果使用本机IP地址,手机在同一局域网内可以正常访问
关键代码位置
后端
-
Controller:
ry-xinli-admin/src/main/java/com/ddnai/web/controller/psychology/PsyQrcodeController.javabuildServerAddress()- 构建服务器地址(已修复,确保使用前端地址)enrichQrcodeWithBase64()- 为二维码添加Base64图片scan()- 扫码接口buildRedirectUrl()- 构建跳转地址
-
Service:
ry-xinli-system/src/main/java/com/ddnai/system/service/impl/psychology/PsyQrcodeServiceImpl.javagenerateQrcode()- 生成二维码Base64buildQrcodeContent()- 构建二维码内容URL
前端
-
页面:
xinli-ui/src/views/psychology/qrcode/index.vue- 二维码管理页面(已删除快速生成功能)xinli-ui/src/views/psychology/qrcode/scan.vue- 扫码页面
-
API:
xinli-ui/src/api/psychology/qrcode.js(已删除快速生成相关方法)
注意事项
- 必须重启后端服务:修改代码后必须重启后端服务才能生效
- 本地环境测试:
- 如果需要在手机上扫码,使用本机IP地址访问前端页面
- 如果只在电脑上测试,使用localhost即可
- 端口配置:前端运行在80端口,后端运行在30081端口
- 二维码URL:生成的二维码URL会自动使用前端地址(80端口),不包含30081端口
如果仍有问题
-
检查二维码URL:
- 查看生成的二维码URL是否包含30081端口
- 如果包含,说明
buildServerAddress()方法没有正确工作 - 检查后端日志,查看实际生成的URL
-
检查Referer头:
- 在浏览器开发者工具的Network面板中查看请求的Referer头
- 确保Referer头包含正确的前端地址
-
本地环境测试:
- 如果使用localhost,只能在电脑上访问
- 如果需要在手机上扫码,使用本机IP地址(如:192.168.1.100)
-
检查网络:
- 确保手机和电脑在同一局域网内
- 确保防火墙没有阻止访问
修复完成
所有问题已修复完成:
- ✅ 删除快速生成功能
- ✅ 修复本地环境二维码URL生成(确保使用前端地址,不包含30081端口)
- ✅ 完善扫码跳转功能