From 925268f83a72fd7c69ff39c5c135a01c83c7cfd7 Mon Sep 17 00:00:00 2001 From: jinqiming <45981669@qq.com> Date: Mon, 28 Sep 2020 10:37:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=8A=E7=9B=91=E5=90=AC=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E6=94=B9=E6=88=90=E5=B7=A5=E5=8E=82=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DepartmentCreateEventService.java | 27 +++++++++++++++++ .../dingtalk/listener/ISyncDingTalkInfo.java | 17 +++++++++++ .../listener/SyncDingTalkInfoFactory.java | 29 +++++++++++++++++++ .../dingtalk/listener/SyncEventListener.java | 27 ++++------------- .../listener/UserCreateEventService.java | 16 ++++++++++ .../snow/dingtalk/service/UserService.java | 2 -- 6 files changed, 95 insertions(+), 23 deletions(-) create mode 100644 snow-dingtalk/src/main/java/com/snow/dingtalk/listener/DepartmentCreateEventService.java create mode 100644 snow-dingtalk/src/main/java/com/snow/dingtalk/listener/ISyncDingTalkInfo.java create mode 100644 snow-dingtalk/src/main/java/com/snow/dingtalk/listener/SyncDingTalkInfoFactory.java create mode 100644 snow-dingtalk/src/main/java/com/snow/dingtalk/listener/UserCreateEventService.java diff --git a/snow-dingtalk/src/main/java/com/snow/dingtalk/listener/DepartmentCreateEventService.java b/snow-dingtalk/src/main/java/com/snow/dingtalk/listener/DepartmentCreateEventService.java new file mode 100644 index 0000000..75bdbce --- /dev/null +++ b/snow-dingtalk/src/main/java/com/snow/dingtalk/listener/DepartmentCreateEventService.java @@ -0,0 +1,27 @@ +package com.snow.dingtalk.listener; + +import com.snow.dingtalk.model.DepartmentCreateRequest; +import com.snow.dingtalk.service.DepartmentService; +import com.snow.system.domain.SysDept; +import com.snow.system.event.SyncEvent; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @author qimingjin + * @Title: 创建部门数据同步 + * @Description: + * @date 2020/9/28 9:33 + */ +public class DepartmentCreateEventService implements ISyncDingTalkInfo { + + @Autowired + private DepartmentService departmentService; + + @Override + public void syncDingTalkInfoEvent(SyncEvent syncEvent) { + SysDept sysDept=(SysDept)syncEvent.getT(); + DepartmentCreateRequest departmentDTO = DepartmentCreateRequest.builder().name(sysDept.getDeptName()).order(sysDept.getOrderNum()) + .parentid(sysDept.getParentName()).build(); + departmentService.createDepartment(departmentDTO); + } +} diff --git a/snow-dingtalk/src/main/java/com/snow/dingtalk/listener/ISyncDingTalkInfo.java b/snow-dingtalk/src/main/java/com/snow/dingtalk/listener/ISyncDingTalkInfo.java new file mode 100644 index 0000000..1790b4f --- /dev/null +++ b/snow-dingtalk/src/main/java/com/snow/dingtalk/listener/ISyncDingTalkInfo.java @@ -0,0 +1,17 @@ +package com.snow.dingtalk.listener; + +import com.snow.system.event.SyncEvent; + +/** + * @author qimingjin + * @Title: + * @Description: + * @date 2020/9/28 9:31 + */ +public interface ISyncDingTalkInfo { + /** + * 同步钉钉事件 + * @param syncEvent + */ + void syncDingTalkInfoEvent(SyncEvent syncEvent); +} diff --git a/snow-dingtalk/src/main/java/com/snow/dingtalk/listener/SyncDingTalkInfoFactory.java b/snow-dingtalk/src/main/java/com/snow/dingtalk/listener/SyncDingTalkInfoFactory.java new file mode 100644 index 0000000..249eacc --- /dev/null +++ b/snow-dingtalk/src/main/java/com/snow/dingtalk/listener/SyncDingTalkInfoFactory.java @@ -0,0 +1,29 @@ +package com.snow.dingtalk.listener; + +import com.snow.common.enums.DingTalkListenerType; +import com.snow.system.event.SyncEvent; +import lombok.extern.slf4j.Slf4j; + +/** + * @author qimingjin + * @Title: 创建同步钉钉数据工厂类 + * @Description: + * @date 2020/9/28 9:43 + */ +@Slf4j +public class SyncDingTalkInfoFactory { + + public ISyncDingTalkInfo getSyncDingTalkService(SyncEvent syncEvent){ + + Integer eventType = syncEvent.getEventType(); + if(eventType.equals(DingTalkListenerType.DEPARTMENT_CREATE.getCode())){ + return new DepartmentCreateEventService(); + } + else if(eventType.equals(DingTalkListenerType.USER_CREATED.getCode())){ + return new UserCreateEventService(); + }else { + throw new RuntimeException("不存在的监听类型"); + } + + } +} diff --git a/snow-dingtalk/src/main/java/com/snow/dingtalk/listener/SyncEventListener.java b/snow-dingtalk/src/main/java/com/snow/dingtalk/listener/SyncEventListener.java index 4174a8d..b567aae 100644 --- a/snow-dingtalk/src/main/java/com/snow/dingtalk/listener/SyncEventListener.java +++ b/snow-dingtalk/src/main/java/com/snow/dingtalk/listener/SyncEventListener.java @@ -1,19 +1,14 @@ package com.snow.dingtalk.listener; import com.alibaba.fastjson.JSON; -import com.snow.common.enums.DingTalkListenerType; -import com.snow.dingtalk.model.DepartmentCreateRequest; -import com.snow.dingtalk.service.DepartmentService; -import com.snow.system.domain.SysDept; import com.snow.system.event.SyncEvent; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; /** * @author qimingjin - * @Title: 同步事件监听器 + * @Title: 同步事件监听器工厂 * @Description: * @date 2020/9/17 17:40 */ @@ -21,23 +16,13 @@ import org.springframework.stereotype.Component; @Slf4j public class SyncEventListener implements ApplicationListener { - @Autowired - private DepartmentService departmentService; - @Override public void onApplicationEvent(SyncEvent syncEvent) { log.info("进入监听器....."); - Integer eventType = syncEvent.getEventType(); - if(eventType==DingTalkListenerType.DEPARTMENT_CREATE.getCode()){ - SysDept sysDept=(SysDept)syncEvent.getT(); - DepartmentCreateRequest departmentDTO = DepartmentCreateRequest.builder().name(sysDept.getDeptName()).order(sysDept.getOrderNum()) - .parentid(sysDept.getParentName()).build(); - departmentService.createDepartment(departmentDTO); - } - else if(eventType == DingTalkListenerType.USER_CREATED.getCode()){ - - } - - log.info("监听到的事件类型:"+eventType+JSON.toJSONString(syncEvent)); + SyncDingTalkInfoFactory syncEventListenerFactory = new SyncDingTalkInfoFactory(); + syncEventListenerFactory.getSyncDingTalkService(syncEvent); + log.info("监听到的事件类型:"+JSON.toJSONString(syncEvent)); } + + } diff --git a/snow-dingtalk/src/main/java/com/snow/dingtalk/listener/UserCreateEventService.java b/snow-dingtalk/src/main/java/com/snow/dingtalk/listener/UserCreateEventService.java new file mode 100644 index 0000000..29e44dc --- /dev/null +++ b/snow-dingtalk/src/main/java/com/snow/dingtalk/listener/UserCreateEventService.java @@ -0,0 +1,16 @@ +package com.snow.dingtalk.listener; + +import com.snow.system.event.SyncEvent; + +/** + * @author qimingjin + * @Title: 创建用户 + * @Description: + * @date 2020/9/28 9:34 + */ +public class UserCreateEventService implements ISyncDingTalkInfo { + @Override + public void syncDingTalkInfoEvent(SyncEvent syncEvent) { + + } +} diff --git a/snow-dingtalk/src/main/java/com/snow/dingtalk/service/UserService.java b/snow-dingtalk/src/main/java/com/snow/dingtalk/service/UserService.java index 16d41b3..b5c469b 100644 --- a/snow-dingtalk/src/main/java/com/snow/dingtalk/service/UserService.java +++ b/snow-dingtalk/src/main/java/com/snow/dingtalk/service/UserService.java @@ -4,9 +4,7 @@ import com.alibaba.fastjson.JSON; import com.dingtalk.api.DefaultDingTalkClient; import com.dingtalk.api.DingTalkClient; import com.dingtalk.api.request.OapiUserCreateRequest; -import com.dingtalk.api.request.OapiWorkrecordAddRequest; import com.dingtalk.api.response.OapiUserCreateResponse; -import com.dingtalk.api.response.OapiWorkrecordAddResponse; import com.snow.dingtalk.common.BaseConstantUrl; import com.snow.dingtalk.common.BaseService; import com.snow.dingtalk.model.WorkrecordAddRequest;