# dingtalk-adapter **Repository Path**: show123456/dingtalk-adapter ## Basic Information - **Project Name**: dingtalk-adapter - **Description**: 钉钉开放平台适配器 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2024-12-31 - **Last Updated**: 2024-12-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 钉钉开放平台适配器 本模块是钉钉开放平台适配器,主要实现钉钉开放平台得stream事件订阅和钉钉开放接口调用。 钉钉开放平台接口具体分为两种类型:1. 企业内部应用 2. 第三方企业应用 如果需要开发企业内部应用时,可以对企业信息和数据进行更新操作; 如果开发第三方企业应用时,则不能对企业信息做更新操作,例如通讯录权限只可以查询不能增删改。 接口详细说明请参考:[钉钉开放平台接口文档](https://open-doc.dingtalk.com/microapp/serverapi/qzvydw) ### 目录结构图 ``` ├── /doc # 开发文档 ├── /src # 源码目录 │ ├── /main # 主代码目录 │ ├── /test # 测试目录 ``` ### 包结构 ``` |--annotation # 注解 |--config # 配置 |--constant # 常量 |--events # 事件 | |--event # 所有事件分类-按模块分类(应用,认证,通讯录,商店,日志,群会话) | |--listener # 事件监听接口 | |--model # 事件回调后的模型类 | |--publisher # 事件发布接口 | |--stream # stream模式事件订阅配置 |--openapi # 钉钉开放平台接口 | |--client # 客户端 | |--model # 模型 | |--service # 服务 ``` ### 已实现功能 一、钉钉开放平台对接: 1. 钉钉认证接口对接 2. 通讯录-用户模块查询接口对接 3. 通讯录-部门查询接口对接 4. 通讯录-角色查询接口对接 5. 消息发送接口对接(工作通知、群通知、机器人群消息) 二、stream事件订阅: 1. stream模式钉钉事件回调接收-包含通讯录相关分类、im群会话相关分类、应用商店相关分类 2. stream订阅的钉钉事件处理-发布springboot事件监听,具体业务系统对接后实现 3. 钉钉stream模式事件订阅配置-通过websocket方式建立长连接, 可以实现多应用订阅 ### 开发完成后打包发布 #### 快照 发布命令 ``` mvn clean install org.apache.maven.plugins:maven-deploy-plugin:2.8:deploy -DskipTests -P rdc ``` ### 钉钉适配器的具体使用方式 1. 引入依赖 ```angular2html cn.chinaunicom.mini.program dingtalk-adapter 1.0.2-SNAPSHOT ``` 2. 配置stream事件订阅配置 ```java @Slf4j @Configuration public class DingTalkConfig { @Value("${dingtalk.clientId}") private String clientId; @Value("${dingtalk.clientSecret}") private String clientSecret; @Autowired private DingTalkPublisher publisher; /** * 对象实例化时,调用此对象的方法进行stream事件配置的启动 * @throws Exception */ @PostConstruct public void buildEventPublisher() throws Exception { DingTalkEventStreamConfig.builder().clientId(clientId).clientSecret(clientSecret).publisher(publisher).build().start(); log.info("[DingTalk Config] buildEventPublisher success!!!"); } } ``` 3. 实现事件监听接口或自定义监听, 接收钉钉事件回调的处理(应用下单、应用套票下发、通讯录同步数据) ```text AppMarketEventListener; #应用商店事件 AuthEventListener; #认证事件 LogEventListener; #钉钉stream订阅事件 OrgEventListener; #通讯录事件 ``` 实现代码如下: ```java @Slf4j @Component public class EventLogListener implements LogEventListener { @Autowired private MongoTemplate mongoTemplate; /** * 事件监听处理,所有钉钉事件回调都会触发这个日志事件,进行日志记录 * @param event */ @EventListener @Override public void handleLogEvent(DingTalkEventLogEvent event) { log.info("log event : {}", event); mongoTemplate.insert(event.getDingTalkEvent(), "dingtalk_event_log"); } } ``` 4. 通过适配器中的openapi认证接口实现钉钉认证免登录 5. 最后实现自己的业务应用和小程序功能即可