分支
用户 liu <2021943741@qq.com>
星期二, 九月 29, 2026 13:51 +0800
提交者 liu <2021943741@qq.com>
星期二, 九月 29, 2026 13:51 +0800
提交811b3a6e9e584b5e85145707b8f220d1e3965943
目录 191f895932309d1c5c0aff2a7d8ab4a51b2f75b2 目录 | zip | gz
上一版本 89047691ffb3b503e484606e1781d48577b9935d 查看 | 对比
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>
已添加51个文件
已修改5个文件
16111 ■■■■■ 文件已修改
docs/sql/config_export_all_20260929.sql 11638 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
docs/sql/wxcp_menu.sql 92 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
docs/sql/wxcp_module.sql 88 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
docs/wxcp_activity_integration.md 248 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
docs/wxcp_login_integration.md 130 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
pom.xml 2 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-dependencies/pom.xml 21 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/enums/storage/StorageRecordTypeEnum.java 5 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/event/SocialLoginEvent.java 43 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java 103 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/pom.xml 65 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/controller/admin/activity/WxCpActivityController.java 220 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/controller/admin/activity/WxCpActivityPublicController.java 252 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/controller/admin/activity/vo/WxCpActivityPageReqVO.java 36 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/controller/admin/activity/vo/WxCpActivityRespVO.java 72 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/controller/admin/activity/vo/WxCpActivitySaveReqVO.java 64 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/controller/admin/activity/vo/WxCpActivityStatsRespVO.java 67 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/controller/admin/activity/vo/WxCpSignupPageReqVO.java 30 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/controller/admin/activity/vo/WxCpSignupPublicReqVO.java 48 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/controller/admin/activity/vo/WxCpSignupRespVO.java 51 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/controller/admin/callback/WxCpCallbackController.java 169 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/controller/admin/member/WxCpMemberController.java 60 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/controller/admin/member/vo/WxCpDepartmentRespVO.java 28 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/controller/admin/member/vo/WxCpMemberRespVO.java 42 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/controller/admin/notice/WxCpNoticeController.java 124 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/controller/admin/notice/vo/WxCpNoticePageReqVO.java 36 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/controller/admin/notice/vo/WxCpNoticeRespVO.java 48 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/controller/admin/notice/vo/WxCpNoticeSaveReqVO.java 38 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/controller/admin/vo/WxCpPushReqVO.java 26 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/controller/admin/vo/WxCpPushResultVO.java 29 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/dal/dataobject/activity/WxCpActivityDO.java 107 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/dal/dataobject/activity/WxCpActivitySignupDO.java 80 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/dal/dataobject/notice/WxCpNoticeDO.java 73 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/dal/mysql/activity/WxCpActivityMapper.java 27 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/dal/mysql/activity/WxCpActivitySignupMapper.java 55 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/dal/mysql/notice/WxCpNoticeMapper.java 27 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/enums/ErrorCodeConstants.java 47 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/enums/activity/WxCpActivityStatusEnum.java 46 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/enums/activity/WxCpPushScopeEnum.java 45 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/enums/activity/WxCpSignupStatusEnum.java 45 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/enums/notice/WxCpNoticeStatusEnum.java 45 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/framework/config/WxCpProperties.java 59 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/framework/config/YudaoWxCpConfiguration.java 57 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/framework/core/WxCpClientFactory.java 55 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/framework/qrcode/WxCpQrCodeUtil.java 60 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/service/activity/WxCpActivityService.java 165 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/service/activity/WxCpActivityServiceImpl.java 473 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/service/listener/WxCpLoginEventListener.java 50 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/service/member/WxCpMemberService.java 41 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/service/member/WxCpMemberServiceImpl.java 141 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/service/notice/WxCpNoticeService.java 78 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/service/notice/WxCpNoticeServiceImpl.java 164 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/service/notify/WxCpNotifyService.java 133 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/service/push/WxCpMessagePushService.java 38 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/service/push/WxCpMessagePushServiceImpl.java 118 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-server/pom.xml 7 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史