公众号菜单
公众号菜单页用于设计并发布自定义菜单。当前页面位于 apps/web-antd/src/views/mp/menu,采用左侧手机预览、右侧菜单编辑器的方式维护一级/二级菜单,后端接口由 MpMenuController 提供。
页面结构
| 区域 | 作用 |
|---|---|
| 公众号选择 | 选择要维护菜单的公众号账号 |
| 手机预览 | 展示一级菜单和二级菜单结构,支持点击选中 |
| 菜单编辑器 | 编辑菜单名称、类型、跳转链接或回复内容 |
| 操作按钮 | 保存并发布菜单、清空菜单 |
接口链路
| 操作 | 接口 | 权限 |
|---|---|---|
| 查询菜单 | GET /mp/menu/list?accountId= | mp:menu:query |
| 保存并发布 | POST /mp/menu/save | mp:menu:save |
| 清空菜单 | DELETE /mp/menu/delete?accountId= | mp:menu:delete |
菜单类型与回复内容
前端会把编辑器中的 reply 转换为后端字段,例如 replyMessageType、replyContent、replyMediaId、replyTitle、replyArticles 等。二开菜单类型时,要同时调整:
views/mp/menu/modules/editor.vue的表单交互;menuToBackend/menuListToFrontend的字段转换;- 后端
MpMenuSaveReqVO与MpMenuDO字段; - 微信侧菜单类型限制。
使用建议
- 先在本地预览结构:一级菜单最多 3 个,二级菜单最多 5 个,命名要短。
- 发布前确认公众号:菜单是按
accountId保存和发布的,误选账号会影响线上公众号。 - 素材类菜单先准备素材:跳转图文、图片、语音等回复应先在素材或图文模块准备好。
- 清空菜单慎用:清空会删除当前公众号菜单,建议发布前截图或导出当前配置。
排查清单
| 现象 | 优先检查 |
|---|---|
| 菜单列表为空 | 是否选择了公众号;后端 /mp/menu/list 是否有数据 |
| 保存发布失败 | 权限 mp:menu:save;微信菜单数量和类型是否符合限制 |
| 回复内容丢失 | 前后端字段转换是否覆盖 reply* 字段;素材 ID 是否有效 |
| 清空后微信侧仍显示旧菜单 | 微信侧缓存或发布失败;查看后端日志和微信接口返回 |
