| ¶Ô±ÈÐÂÎļþ |
| | |
| | | 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")){ |
| | | memberService.ddPushMemberInfo(eventType,bizData); |
| | | } |
| | | //å¤çäºä»¶ |
| | | // process(bizData); |
| | | //æ¶è´¹æå |
| | | return EventAckStatus.SUCCESS; |
| | | } catch (Exception e) { |
| | | //æ¶è´¹å¤±è´¥ |
| | | return EventAckStatus.LATER; |
| | | } |
| | | } |
| | | }) |
| | | .build().start(); |
| | | } |
| | | |
| | | |
| | | |
| | | } |