Appearance
第三方平台对接 ¶
TIP
在系统中分别对应的是common-starter-dingtalk
(钉钉对接)、common-starter-wechat
(微信公众平台和开放平台)和common-starter-wecom
(企业微信)三个模块
微信(公众平台) ¶
消息模板 ¶
同步微信公众平台对应的模板消息模板,进行查看和管理,见
WeChatTemplateController
类
自定义菜单 ¶
管理微信的自定义菜单,可以导入微信平台现有菜单到系统中进行配置,也可以在系统中创建菜单模板,支持配置菜单的各项属性后保存为草稿或发布。见
WeChatMenuService
类
素材管理 ¶
管理语音
、视频
、图片
三类资源,见WeChatMediaService
类
后台接入 ¶
通过在微信公众平台管理系统中,将用户消息设置为发送到我们指定的服务器上,项目中接收微信消息的接口地址是:项目ip:端口/wechat/portal
。可以查看系统中对应的下列类:
WeChatPortalService
微信门户处理WeChatMessageRouterConfiguration
微信信息路由配置,对不同的消息类型进行了绑定处理服务WxMpMessageHandler
的一众实现类 如WeChatMsgHandler
文本消息处理、WeChatQrScanHandler
微信扫码事件处理等WeChatMpMessageHandler
WxMpMessageHandler
的子接口,用来支持自动关联不同的消息类型处理
微信扫码登录 ¶
需要微信公众平台设置为将用户消息设置为发送到我们指定的服务器上。详细使用见认证鉴权登录认证模块
支持微信扫码进行登录,通过WeChatQrLoginController
进行接收,结合WeChatQrScanHandler
扫码事件处理器,来实现系统的登录,整体的工作流程如下:
- 前端通过
/token/wechat/qr/applyQrCode
接口来获取用于登录用QR码,在页面上进行展示供用户进行扫码 - 同时开启轮训任务,通过QR码的Key值,来判断是否扫码成功,也可以建立一个
Websocket
连接,通过服务端主动推送扫码事件的状态 - 用户扫码后,微信公共平台会推送给后台服务端一条消息,系统通过
WeChatQrScanHandler
处理器接收后,会将要进行登录用户OpenId
写入到缓存中 - 前端获取到登陆成功的状态后,将QR码作为
authCode
参数并调用登录接口进行登录 - 系统会分配到
WeChatLoginHandler
微信登录处理器进行处理,通过接收到的QR码,从缓存中获取关联的微信OpenId
,然后通过OpenId
获取关联用户生成Token返回给前端,登录完成
消息事件处理 ¶
需要微信公众平台设置为将用户消息设置为发送到我们指定的服务器上。
在微信用户和公众号产生交互的过程中,用户的某些操作会使得微信服务器通过事件推送的形式通知到开发者在开发者中心处设置的服务器地址,从而开发者可以获取到该信息并进进行处理。 通过实现WeChatMpMessageHandler
接口并注入到Bean容器中
,系统会自动跟相关类型的消息进行绑定,相关的类见上方后台接入
企业微信 ¶
TIP
主要是使用WxJava
工具包对接企业微信的消息发送能力,分为机器人通知和工作通知,见企业微信通知
钉钉 ¶
DingAccessService ¶
钉钉访问凭证服务,用来获取企业内部应用的
access_token
,调用钉钉各种能力之前,都需要先获取到access_token
。
DingMediaService ¶
钉钉媒体文件管理,主要用来发送带有媒体或文件的消息时,上传对应的文件获取它的媒体ID(发送媒体消息参数需要传媒体ID),注意:发现钉钉媒体id只能使用一次, 和文档描述不一致,不确定现在有没有修复。
消息通知 ¶
分为机器人通知和工作通知,见通知服务
配置方式 ¶
TIP
主要分为两种配置方式,分别是配置文件配置和管理后台进行配置,通过配置文件配置的,通常在系统中都基于这份配置进行操作,例如微信、钉钉、小程序等。 界面配置的通常为企微、钉钉机器人一类的,可以有多个。
配置文件方式 ¶
yaml
bootx:
starter:
# 三方平台
third:
# 钉钉
ding-talk:
# AppKey
app-key: ??
# AppSecret
app-secret: ??
# 应用id
agent-id: 1001
#微信(公众平台)
wechat:
# AppKey
app-id: ??
# AppSecret
app-secret: ??
# token
token: ??
# 消息加解密密钥
encoding-aes-key: ??
# 企业微信
wecom:
# 应用id
agent-id: 1000003
# 企业id
corp-id: ??
# 企业Secret
corp-secret: ??
# token
token: ??
# 消息加解密密钥
encoding-aes-key: ??
# 微信小程序
wechat-applet:
# AppKey
app-id: ??
# AppSecret
app-secret: ??