钉钉集成说明
可以先看下官方文档:钉钉集成流程。
1、系统自带了同步钉钉的功能,先在yaml中配置开启第三方APP对接功能。
#第三方APP对接
third-app:
enabled: true
type:
#钉钉
DINGTALK:
enabled: true
# appKey
client-id: ??
# appSecret
client-secret: ??
agent-id: ??
2、部门同步组件,使用方式:将部门管理组件替换成:system/DepartListSync,然后点击同步钉钉到本地即可。
相关接口:/sys/thirdApp/sync/dingtalk/depart/toLocal
3、用户同步组件,在用户管理中可自动同步,点击同步钉钉到本地即可。TODO 这里用户同步过来,接入部门信息暂未测试,以后有空优化。
相关接口:/sys/thirdApp/sync/dingtalk/user/toLocal
4、扩展消息推送接口
相关接口:/sys/api/sendTemplateAnnouncement、/sys/api/sendBusTemplateAnnouncement
想要使用自动推送第三方消息的功能,需要额外添加request参数:?THIRD_APP_TYPE=DINGTALK
完整URL:POST /sys/api/sendTemplateAnnouncement?THIRD_APP_TYPE=DINGTALK
目前支持的类型有:(不传就不会推送)
DINGTALK:推送钉钉WECHAT_ENTERPRISE:推送微信企业ALL:都推送
问题与解决
解决Nginx代理下回调地址无端口问题
线上的Nginx代理环境中,后端获取domain会去掉端口号,如果非默认端口,会导致一些回调地址报错, 比如 http://aa.bb.com:8888 会变成 http://aa.bb.com。
因此最好换成配置形式,这里还有一个解决方案,参考 SpringContextUtils.getDomain() 的逻辑中 可以看到他优先获取 X_GATEWAY_BASE_PATH 的值,
因此在Nginx的代理中,手动设置header即可,如:proxy_set_header "X_GATEWAY_BASE_PATH" http://aa.bb.com:8888;,配置块示例:
# 后端负载
upstream backendServerGongye {
server 127.0.0.1:8786;
}
server {
# 后端
location ^~ /main/ {
proxy_pass http://backendServerGongye/main/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# 这里去解决
proxy_set_header "X_GATEWAY_BASE_PATH" http://aa.bb.com:8888;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#socket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 60s;
proxy_read_timeout 7200s;
proxy_send_timeout 60s;
}
}
依赖问题
依赖包需要升级到1.5.2+,旧版本有点问题(此分支已更新):
<dependency>
<groupId>org.jeecgframework</groupId>
<artifactId>jeewx-api</artifactId>
<version>1.5.2</version>
</dependency>