feat(wxcp): 新增企业微信模块,支持成员扫码登录、活动通知与通讯录
一、独立模块 yudao-module-wxcp
- 企业微信扫码登录(JustAuth)+ 首次扫码自动注册账号(用户名 wx_ 前缀)
- 应用消息推送,抽成 WxCpMessagePushService 供活动/通知复用
- 通讯录查看:部门树、部门平铺、成员列表,用于推送时挑选目标
- 回调接口(URL 验证 + 消息接收),本次未启用接收消息
二、活动管理
- 创建/编辑/发布/结束/取消,活动状态 草稿-已发布-已结束-已取消
- 推送:企业微信文本卡片消息,按钮直达报名页
- 报名二维码:后端生成 PNG,扫码打开 H5 报名页
- 报名页支持填写参与说明并上传图片/附件,免登录
- 报名统计:总数、状态分布、按部门与日期分布、来源分布、签到率
三、通知管理
- 创建/编辑/发布/撤回/推送,与活动共用推送服务
- 通知用纯文本推送(textcard 类型强制要求 url,通知无详情页)
四、跨模块与规范
- 报名附件走 system 模块附件中间表,未新增 upload 接口、未加文件地址字段
- StorageRecordTypeEnum 注册 wxcp_activity_signup,否则绑定报「无效的记录类型」
- 登录通知通过 Spring 事件解耦,避免 wxcp 与 system 循环依赖
- 监听用 AFTER_COMMIT,避免异步线程读不到未提交的绑定记录
五、数据库脚本(docs/sql)
- wxcp_module.sql:活动/报名/通知三张表
- wxcp_menu.sql:菜单与角色授权,幂等
- config_export_all_20260929.sql:全库初始化脚本,新增「阶段三」企业微信增量段
(因企业微信菜单只存在于业务库 mom-jssm,源库无此数据,无法按阶段二的跨库方式补导)
六、注意:以下配置未包含在本提交中,部署时需自行补齐
yudao-server/src/main/resources/application-local.yaml
- wx.cp.corp-id / agent-id / secret / token / aes-key
(企业微信企业ID、应用ID、应用密钥、回调令牌、回调加解密密钥)
- wx.cp.signup-url-prefix(活动报名页外网地址前缀,二维码指向它)
- wx.cp.qrcode-size
以上均为环境相关配置,刻意不入库。
yudao-server/src/main/resources/application.yaml
- yudao.security.permit-all_urls 需追加三条免登录白名单,否则对应功能不可用:
/admin-api/wxcp/callback/** 企业微信回调
/admin-api/wxcp/activity/signup-page 活动报名落地页(扫码打开)
/admin-api/wxcp/activity/signup 活动报名提交
/admin-api/system/storage-blob/public-upload 报名页附件上传
Co-Authored-By: Claude <noreply@anthropic.com>