package com.doumee.core.dingTalk;
|
|
import com.dingtalk.open.app.api.GenericEventListener;
|
import com.dingtalk.open.app.api.OpenDingTalkStreamClientBuilder;
|
import com.dingtalk.open.app.api.message.GenericOpenDingTalkEvent;
|
import com.dingtalk.open.app.api.security.AuthClientCredential;
|
import com.dingtalk.open.app.stream.protocol.event.EventAckStatus;
|
import com.doumee.biz.system.SystemDictDataBiz;
|
import com.doumee.core.utils.Constants;
|
import com.doumee.dao.business.dao.CompanyMapper;
|
import com.doumee.dao.business.dao.MemberMapper;
|
import com.doumee.service.business.CompanyService;
|
import com.doumee.service.business.MemberService;
|
import lombok.extern.slf4j.Slf4j;
|
import me.chanjar.weixin.mp.config.WxMpConfigStorage;
|
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
import shade.com.alibaba.fastjson2.JSONObject;
|
|
/**
|
* 钉钉 订阅事件通知
|
*
|
* @Author : Rk
|
* @create 2025/9/24 17:14
|
*/
|
@Slf4j
|
@Configuration
|
public class DingTalkStream {
|
|
@Autowired
|
private SystemDictDataBiz systemDictDataBiz;
|
|
@Autowired
|
private MemberService memberService;
|
|
@Autowired
|
private CompanyService companyService;
|
|
|
@Bean
|
public void DingTalkStreamRun() throws Exception {
|
String appKey = systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.APP_KEY).getCode();
|
String appSecret = systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.APP_SECRET).getCode();
|
|
OpenDingTalkStreamClientBuilder
|
.custom()
|
.credential(new AuthClientCredential(appKey, appSecret))
|
//注册事件监听
|
.registerAllEventListener(new GenericEventListener() {
|
@Override
|
public EventAckStatus onEvent(GenericOpenDingTalkEvent event) {
|
try {
|
//事件唯一Id
|
String eventId = event.getEventId();
|
log.error("钉钉推送事件Id:{}"+eventId);
|
//事件类型
|
String eventType = event.getEventType();
|
log.error("钉钉推送事件类型:{}"+eventType);
|
// org_dept_create 部门新建 {"timeStamp":"1758783935796","eventId":"0c779adba04143958a3960e8e36bbce5","deptId":[1040735458]}
|
// org_dept_modify 部门修改 {"timeStamp":"1758785791639","eventId":"6c2d8c7a61a7419e8928fda3effb3bf4","deptId":[1040735458]}
|
// org_dept_remove 部门删除 {"timeStamp":"1758785817760","eventId":"47e289f334e041719ed354052da474de","deptId":[1040735458]}
|
|
// user_add_org 员工添加
|
// user_modify_org 员工修改 {"timeStamp":"1758786235842","diffInfo":[{"prev":{"extFields":"{}","hiredDate":"2022-03-30","name":"任康","telephone":"145","remark":"","workPlace":"莲花科创园 F401","jobNumber":"","email":"rk@doumee.com"},"curr":{"extFields":"{}","hiredDate":"2022-03-30","name":"任康","telephone":"145","remark":"","workPlace":"莲花科创园 F401","jobNumber":"","email":"rk@doumee.com"},"userid":"1568490244651036"}],"eventId":"e54d8991aed14c669e22e460459433f6","optStaffId":"045831294126209983","userId":["1568490244651036"]}
|
// user_leave_org 员工删除
|
|
//事件产生时间
|
Long bornTime = event.getEventBornTime();
|
log.error("钉钉推送事件产生时间:{}"+bornTime);
|
//获取事件体
|
JSONObject bizData = event.getData();
|
log.error("钉钉推送事件详情:{}"+bizData);
|
|
if(eventType.startsWith("org")){
|
companyService.ddPushCompanyInfo(eventType,bizData);
|
}else if(eventType.startsWith("user")){
|
|
}
|
//处理事件
|
// process(bizData);
|
//消费成功
|
return EventAckStatus.SUCCESS;
|
} catch (Exception e) {
|
//消费失败
|
return EventAckStatus.LATER;
|
}
|
}
|
})
|
.build().start();
|
}
|
|
|
|
}
|