微信运营架构与账号模型
模块关系
微信运营后台由以下部分组成:
| 模块 | 位置 | 职责 |
|---|---|---|
| 微信公共模型 | joolun-weixin-common |
微信账号实体、常量、凭据类型处理器和公共 DTO |
| 微信后台服务 | joolun-weixin-admin |
管理接口、微信 API 调用、回调处理、任务与运维能力 |
| 后台 UI | joolun-plus-ui/src/views/wx* |
公众号、小程序、第三方平台和运营中心工作台 |
| 小程序端 | joolun-plus-app |
商城小程序、客服、订阅消息和直播入口 |
| 微信业务库 | joolun_plus_wx |
微信账号、本地任务、事件、日志和必要回调快照 |
| 权限库 | joolun_plus_upms |
微信菜单、按钮权限和角色授权 |
| Nacos | joolun-weixin-admin-*.yml |
第三方平台、凭据密钥环、任务和告警配置 |
后台 UI 经网关使用 /weixin/** 访问微信后台服务。控制器内部路径不带 /weixin,例如控制器 /wxmalivemember/page 的前端地址为 /weixin/wxmalivemember/page。
微信账号主模型
所有公众号和小程序都复用 wx_app:
| 字段 | 说明 |
|---|---|
id |
微信 AppID,也是账号主键 |
tenant_id |
所属租户,后台操作必须按租户校验 |
app_type=1 |
微信小程序 |
app_type=2 |
微信公众号 |
is_component=0 |
手动接入、直接使用 AppSecret 的账号 |
is_component=1 |
通过第三方平台授权的账号 |
secret/token/aes_key |
微信密钥、回调 Token 和 EncodingAESKey,数据库中使用密文 |
shop_id |
Pro 店铺归属,保留现有店铺数据权限 |
Pro 微信账号表不保存支付商户密钥或支付证书。支付配置由独立的 joolun-pay 模块管理。
页面账号下拉只返回 AppID 和名称等非敏感字段。服务端不能只相信前端传入的 AppID,必须同时校验 tenant_id 和 app_type。
接入模式
手动接入
适合少量公众号或小程序:
- 在微信公众平台取得 AppID、AppSecret、Token 和 EncodingAESKey。
- 在后台对应的公众号或小程序账号管理中新增账号。
- 将后台提供的消息地址配置到微信公众平台。
- 执行凭据检测,确认 access token 和回调配置有效。
手动接入账号依赖自身 AppSecret 获取 access token。
第三方平台授权接入
适合批量代运营:
- 配置
wx.component。 - 在第三方平台授权账号页面生成授权地址。
- 公众号或小程序管理员扫码完成授权。
- 微信回调写入或更新同一条
wx_app,并标记is_component=1。 - 后续 access token、发布、域名等能力通过第三方平台授权链路执行。
重新授权不会先删除原账号和用户关系。授权账号管理提供同步、令牌刷新和微信侧全量对账。
微信服务选择
- 公众号能力通过微信公众平台接口调用。
- 小程序能力通过微信小程序接口调用。
- 第三方平台能力通过微信开放平台接口调用。
- 直连账号和第三方平台授权账号由配置层选择相应服务,业务页面不要求运营人员区分 SDK 调用方式。
租户与平台边界
- 公众号和小程序业务页面只允许管理当前租户账号。
- 平台级第三方平台配置、代码模板库和平台域名默认属于系统平台管理员能力。
- 授权账号本身仍有租户归属,不能因为由同一个第三方平台托管而跨租户读取。
ROLE_ADMIN只是角色类型,仍必须结合租户和父菜单授权判断。
状态来源
| 类型 | 状态来源 |
|---|---|
| 插件、体验成员、直播成员、附近地点、物流账号 | 微信实时接口 |
| 草稿、发布状态、投诉详情、客服会话 | 微信实时接口或微信回调 |
| 消息任务、受众方案、推广入口 | 本地流程记录 + 微信执行结果 |
| 事件中心、API 日志、告警 | 本地可观测性数据 |
| 投诉列表 | 本地回调快照,详情和处置动作访问微信现行接口 |
判断问题时先确认该页面的数据来源,避免把微信尚未返回的数据误认为数据库同步失败。