增加监听器

This commit is contained in:
jinqiming 2020-09-18 10:49:04 +08:00
parent 6a940a0bb0
commit 0d723be4ba
5 changed files with 86 additions and 13 deletions

View File

@ -81,6 +81,12 @@
<version>4.3.1</version>
</dependency>
<dependency>
<groupId>com.snow</groupId>
<artifactId>snow-dingtalk</artifactId>
<version>4.3.1</version>
</dependency>
</dependencies>
<build>

View File

@ -0,0 +1,32 @@
package com.snow.common.enums;
/**
* @author qimingjin
* @Title:
* @Description:
* @date 2020/9/18 10:18
*/
public enum DingTalkListenerType {
DEPARTMENT_CREATE(1, "部门创建"),
DEPARTMENT_UPDATE(2, "部门更新"),
DEPARTMENT_DELETED(3, "部门删除");
private final Integer code;
private final String info;
DingTalkListenerType(Integer code, String info)
{
this.code = code;
this.info = info;
}
public Integer getCode()
{
return code;
}
public String getInfo()
{
return info;
}
}

View File

@ -7,6 +7,7 @@ import com.dingtalk.api.request.OapiGettokenRequest;
import com.dingtalk.api.response.OapiGettokenResponse;
import com.snow.common.constant.Constants;
import com.snow.common.enums.BusinessType;
import com.snow.common.json.JSON;
import com.snow.common.utils.StringUtils;
import com.snow.system.domain.SysOperLog;
import com.snow.system.service.ISysConfigService;
@ -47,15 +48,16 @@ public class BaseService {
try {
OapiGettokenResponse response = client.execute(request);
if(response.getErrcode()==0){
timedCache.put( TOKEN,response.getAccessToken());
timedCache.put(TOKEN,response.getAccessToken());
syncDingTalkErrorOperLog(BaseConstantUrl.GET_TOKEN_URL,response.getMessage(),"getDingTalkToken()", com.alibaba.fastjson.JSON.toJSONString(request));
return response.getAccessToken();
}else {
//记录获取token失败日志
syncDingTalkErrorOperLog(BaseConstantUrl.GET_TOKEN_URL,response.getErrmsg(),"getDingTalkToken()");
syncDingTalkErrorOperLog(BaseConstantUrl.GET_TOKEN_URL,response.getErrmsg(),"getDingTalkToken()", com.alibaba.fastjson.JSON.toJSONString(request));
return null;
}
} catch (ApiException e) {
syncDingTalkErrorOperLog(BaseConstantUrl.GET_TOKEN_URL,e.getMessage(),"getDingTalkToken()");
syncDingTalkErrorOperLog(BaseConstantUrl.GET_TOKEN_URL,e.getMessage(),"getDingTalkToken()",com.alibaba.fastjson.JSON.toJSONString(request));
e.printStackTrace();
}
return null;
@ -71,7 +73,7 @@ public class BaseService {
* @param errorMessage
* @param method
*/
public void syncDingTalkErrorOperLog(String url,String errorMessage,String method){
public void syncDingTalkErrorOperLog(String url,String errorMessage,String method,String operParam){
SysOperLog sysOperLog=new SysOperLog();
sysOperLog.setOperTime(new Date());
sysOperLog.setErrorMsg(errorMessage);
@ -79,7 +81,30 @@ public class BaseService {
sysOperLog.setOperName("系统自动记录");
sysOperLog.setOperUrl(url);
sysOperLog.setMethod(method);
sysOperLog.setOperParam(operParam);
sysOperLog.setTitle("系统调用钉钉异常");
sysOperLog.setStatus(1);
iSysOperLogService.insertOperlog(sysOperLog);
}
/**
* 成功
* @param url
* @param successMessage
* @param method
* @param operParam
*/
public void syncDingTalkSuccessOperLog(String url,String successMessage,String method,String operParam){
SysOperLog sysOperLog=new SysOperLog();
sysOperLog.setOperTime(new Date());
sysOperLog.setBusinessType(BusinessType.SYNCHRONIZATION.ordinal());
sysOperLog.setJsonResult(successMessage);
sysOperLog.setOperName("系统自动记录");
sysOperLog.setOperUrl(url);
sysOperLog.setMethod(method);
sysOperLog.setOperParam(operParam);
sysOperLog.setTitle("调用钉钉成功");
sysOperLog.setStatus(0);
iSysOperLogService.insertOperlog(sysOperLog);
}

View File

@ -1,32 +1,40 @@
package com.snow.dingtalk;
package com.snow.dingtalk.listener;
import com.alibaba.fastjson.JSON;
import com.snow.common.enums.DingTalkListenerType;
import com.snow.dingtalk.model.DepartmentDTO;
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
*/
@Component
@Slf4j
public class SyncEventListener implements ApplicationListener<SyncEvent> {
@Autowired
private DepartmentService departmentService;
@Override
public void onApplicationEvent(SyncEvent syncEvent) {
log.info("进入监听器.....");
Integer eventType = syncEvent.getEventType();
SysDept sysDept=(SysDept)syncEvent.getT();
DepartmentDTO departmentDTO = DepartmentDTO.builder().name(sysDept.getDeptName()).order(sysDept.getOrderNum())
.parentid(sysDept.getParentName()).build();
departmentService.createDepartment(departmentDTO);
System.out.println("监听到的事件类型:"+eventType+JSON.toJSONString(syncEvent));
if(eventType==DingTalkListenerType.DEPARTMENT_CREATE.getCode()){
SysDept sysDept=(SysDept)syncEvent.getT();
DepartmentDTO departmentDTO = DepartmentDTO.builder().name(sysDept.getDeptName()).order(sysDept.getOrderNum())
.parentid(sysDept.getParentName()).build();
departmentService.createDepartment(departmentDTO);
}
log.info("监听到的事件类型:"+eventType+JSON.toJSONString(syncEvent));
}
}

View File

@ -1,5 +1,6 @@
package com.snow.dingtalk.service;
import com.alibaba.fastjson.JSON;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiDepartmentCreateRequest;
@ -37,12 +38,13 @@ public class DepartmentService extends BaseService {
try {
OapiDepartmentCreateResponse response = client.execute(request,getDingTalkToken());
if(response.getErrcode()==0){
syncDingTalkErrorOperLog(BaseConstantUrl.DEPARTMENT_CREATE,response.getMessage(),"createDepartment",JSON.toJSONString(request));
return response.getId();
}else {
syncDingTalkErrorOperLog(BaseConstantUrl.DEPARTMENT_CREATE,response.getErrmsg(),"createDepartment");
syncDingTalkErrorOperLog(BaseConstantUrl.DEPARTMENT_CREATE,response.getErrmsg(),"createDepartment",JSON.toJSONString(request));
}
} catch (ApiException e) {
syncDingTalkErrorOperLog(BaseConstantUrl.DEPARTMENT_CREATE,e.getMessage(),"createDepartment");
syncDingTalkErrorOperLog(BaseConstantUrl.DEPARTMENT_CREATE,e.getMessage(),"createDepartment",JSON.toJSONString(request));
e.printStackTrace();
}
return null;