公众号菜单
这篇解决什么
微信底部自定义菜单落哪张表、保存时有没有「草稿」。读完能对上 mp_menu 和 menuCreate,不要去改后台 system_menu。
默认端口 48080。先接入账号见 公众号接入。
示意图:保存同时写本地树、推微信。没有单独发布接口。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 菜单 | @RequestMapping("/mp/menu") | ruoyi-office/yudao-module-mp/yudao-module-mp-server/.../controller/admin/menu/MpMenuController.java |
| 保存 | POST /save | 同步微信后重建本地树 |
| 清空 | DELETE /delete?accountId= | 先 menuDelete 再删库 |
| 列表 | GET /list?accountId= | 读本地 |
| 菜单表 | mp_menu | MpMenuDO |
| 管理端 | 编辑器、预览 | ruoyi-office-vben/apps/web-antd/src/views/mp/menu/ |
官方菜单:菜单管理 2119。权限 mp:menu:save、mp:menu:delete。
saveMenu 调 mpService.getMenuService().menuCreate(wxMenu),成功后再 deleteByAccountId 并递归插入。点击类按钮由 MenuHandler 按 menuKey 回消息。
字段
顶级 parentId 是 0。按钮 type 用微信字符串,不是整数枚举。
| 名称 | 说明 | 仓库路径 |
|---|---|---|
accountId / appId | 归属账号 | MpMenuDO |
menuKey | 点击 key,列名 menu_key | 同上 |
type | click / view / miniprogram 等 | 同上 |
url | 网页、小程序跳转 | 同上 |
miniProgramAppId / miniProgramPagePath | 小程序 | 同上 |
articleId | 跳转已发表图文 | 同上 |
replyMessageType + replyContent / replyMediaId | 点击回复载荷 | 同上 |
常见 type:click 点击回复,view 网页,miniprogram 小程序,article_view_limited 图文,scancode_waitmsg 扫码回复。扫码推、拍照、选位置等校验后直接放行。
不是后台导航
system_menu 2119 只是管理端入口。改角色菜单不会改微信底部栏。每个公众号一份 mp_menu。
保存即上线
没有草稿态。点保存就推到微信。回复素材规则和 自动回复 同构,点击后走 MpMessageService.sendOutMessage。
按本仓库 DO 生成的 ER。菜单是树,按账号隔离。
配置与操作
走 菜单管理(2119)。权限 mp:menu:save、mp:menu:delete。选账号后编树:顶级 parentId 为 0,按钮 type 用微信字符串(click / view / miniprogram 等),点击类填 menuKey 和回复载荷。
点保存走 POST /save:先 menuCreate 推微信,成功后再重建本地 mp_menu。没有草稿态。清空 DELETE /delete?accountId= 先 menuDelete 再删库。改角色的 system_menu 不会改微信底部栏。开启见 公众号功能设计。

本系统截图:公众号管理 → 菜单管理(/mp/menu)。点保存就推到微信,没有草稿。
