主题
常见问题
版本:v3.0 | 最后更新:2026-07 | 文档状态:已同步代码
项目开发和使用中经常遇到的问题,以及解决方法。
环境相关
Q: 启动后端时报数据库连接失败
原因:MySQL 服务未启动,或数据库配置不匹配。
解决:
- 确认 MySQL 服务已启动
- 检查
application.yml中的数据库地址、用户名、密码 - 确认
mall数据库已创建并导入了docs/sql/mall.sql
Q: Redis 连接超时
原因:Redis 服务未启动。
解决:运行 redis-server 启动 Redis,默认端口 6379。
Q: 前端页面显示"暂无数据"但数据库有数据
原因:后端服务未启动或端口不对。
解决:
- 确认
mall-admin(8080)和mall-portal(8085)都已启动 - 打开浏览器控制台看是否有网络请求报错
- 检查 Vite 代理配置是否正确
功能相关
Q: 后台登录后侧边栏菜单为空
原因:当前管理员账号没有分配角色,或角色没有分配菜单权限。
解决:用超级管理员(admin)登录 → 权限管理 → 给该管理员分配角色 → 给角色分配菜单。
Q: 商品分类"是否显示"开关切换后自动弹提示
原因:这是 el-switch 组件的已知行为,初始化时会触发 change 事件。
解决:已在代码中处理,通过标记位防止初始化时误触发。
Q: 前台商城页面打不开
原因:前台需要 mall-portal(8085)服务运行。
解决:确保同时启动了 mall-admin 和 mall-portal 两个后端服务。
Q: 退货申请审核按钮点了没反应
原因:可能是 keep-alive 缓存导致页面数据未刷新。
解决:离开页面后重新进入,或刷新页面后再操作。
开发相关
Q: 新增的 API 返回 401 未授权
原因:新接口没有加入安全白名单。
解决:在对应的 application.yml 中的 secure.ignored.urls 里添加新接口路径。
Q: 前端编译报 TypeScript 错误
解决:
- 运行
cd mall-admin-web && npx tsc --noEmit查看具体错误 - 检查是否有新增的类型未定义
- 确认
src/types/下的类型文件是否完整
Q: 修改了代码但页面没变化
原因:可能是浏览器缓存或 Vue keep-alive 缓存。
解决:
- 浏览器硬刷新(Ctrl + Shift + R)
- 如果是列表页,检查是否需要在
onActivated中重新加载数据
Q: 后台商品图片 / 富文本传图失败(404)
原因:前端上传地址与后端端点不一致。上传地址取自 .env 的 VITE_MINIO_UPLOAD_URL,必须等于后端 MinioController 的 /api/minio/upload,否则请求既匹配不到 Vite 代理、后端也会 404。
解决:确认 mall-admin-web/.env 中 VITE_MINIO_UPLOAD_URL=/api/minio/upload(曾误配为 /minio/upload,已修复)。改完需重启 npm run dev 让 Vite 重新读取 .env。
Q: 订单超过超时时间没有自动关闭
原因:超时取消有两条路径,任一出问题都会导致订单挂住。
解决:
- 主路径 —— RabbitMQ 死信延迟队列:下单时发送延迟消息,到期后由
CancelOrderReceiver消费。请确认 RabbitMQ 已启动(未启动则延迟消息无法投递)。 - 兜底路径 ——
OrderTimeOutCancelTask每 10 分钟扫描一次超时未支付订单(status = 0且超过oms_order_setting.normal_order_overtime),已启用。 - 也可手动触发:
POST /api/order/cancelTimeOutOrder。
Q: 前台搜索没有走 Elasticsearch
原因:mall-search 模块虽有完整的 ES 代码,但与 mall-portal / mall-admin / 前端均未接线,且没有 ES 服务实例。
解决:当前设计如此,前台搜索走 MySQL LIKE。ES 接入属于 Phase 3+ 规划。
Q: 支付宝/微信支付点了就直接成功
原因:支付整体是模拟实现——paySuccess 直接置订单状态为已支付并扣减库存,无支付网关调用、无签名校验。前台支付页的「微信支付」按钮是占位(后端 0 实现),支付宝后端 SDK 代码完整但凭据为 your appId 占位符、前端未接线。
解决:这是预期行为(演示环境)。真实支付接入见 docs/guide/roadmap.md 的 Phase 3+。
数据相关
Q: 数据库有多少张表、在哪里看
所有表结构定义在 docs/sql/mall.sql 文件中。业务实体及关联关系可参考 数据字典。
表数量只有一个权威来源 ——
docs/dev/context.md的「3.1 关键数字」小节。其他文档不再复述该数字,避免改一处漏十处。
Q: 可以新增数据库表吗
当前阶段不新增表,所有功能基于现有表实现(表数量见 docs/dev/context.md 第 3.1 节)。
Q: 测试数据在哪里
数据库脚本已包含基础数据(管理员、角色、菜单、部分商品等)。如需更多测试数据,可参考数据字典手动添加。