新增脱敏
This commit is contained in:
parent
4cae415b9b
commit
0b90dc95a3
|
@ -273,6 +273,11 @@ public class SysOaTaskController extends BaseController
|
|||
@ResponseBody
|
||||
public AjaxResult editSave(SysOaTask sysOaTask)
|
||||
{
|
||||
|
||||
SysOaTaskDistribute sysOaTaskDistribute=new SysOaTaskDistribute();
|
||||
sysOaTaskDistribute.setSysOaTask(sysOaTask);
|
||||
SyncEvent<SysOaTaskDistribute> syncEvent = new SyncEvent(sysOaTaskDistribute, DingTalkListenerType.WORK_RECORD_UPDATE);
|
||||
applicationContext.publishEvent(syncEvent);
|
||||
return toAjax(sysOaTaskService.updateSysOaTask(sysOaTask));
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package com.snow.common.annotation;
|
||||
|
||||
import com.snow.common.enums.DingTalkListenerType;
|
||||
import com.snow.common.enums.DingTalkLogType;
|
||||
import com.snow.common.enums.DingTalkSyncType;
|
||||
import com.snow.common.enums.SyncLogType;
|
||||
|
||||
|
@ -18,10 +18,10 @@ public @interface SyncLog
|
|||
{
|
||||
|
||||
/**
|
||||
* 模块描述
|
||||
* 日志类型
|
||||
*/
|
||||
|
||||
public DingTalkListenerType dingTalkListenerType();
|
||||
public DingTalkLogType dingTalkLogType();
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
package com.snow.common.constant;
|
||||
|
||||
/**
|
||||
* @author qimingjin
|
||||
* @Title:
|
||||
* @Description:
|
||||
* @date 2021/11/12 14:26
|
||||
*/
|
||||
public class CacheConstants {
|
||||
|
||||
/**
|
||||
* 系统网址域名缓存key
|
||||
*/
|
||||
public static final String SYS_DOMAIN="sys_config:sys.website.domain";
|
||||
|
||||
/**
|
||||
* 钉钉企业内部APPkey
|
||||
*/
|
||||
public static final String ENTERPRICE_APP_KEY="sys_config:enterprice.app.key";
|
||||
/**
|
||||
* 钉钉企业内部ENTERPRICE_APP_SECRET
|
||||
*/
|
||||
public static final String ENTERPRICE_APP_SECRET="sys_config:enterprice.app.secret";
|
||||
}
|
|
@ -69,6 +69,9 @@ public enum DingTalkListenerType {
|
|||
*/
|
||||
BPMS_INSTANCE_CHANGE(6,20,"bpms_instance_change"),
|
||||
|
||||
/**
|
||||
* 发送钉钉工作通知
|
||||
*/
|
||||
ASYNCSEND_V2(10,20,"发送钉钉消息"),
|
||||
|
||||
|
||||
|
@ -76,7 +79,11 @@ public enum DingTalkListenerType {
|
|||
|
||||
BLACKBOARD_UPDATE(2,30,"公告更新"),
|
||||
|
||||
BLACKBOARD_DELETE(3,30,"公告删除")
|
||||
BLACKBOARD_DELETE(3,30,"公告删除"),
|
||||
|
||||
GET_TOKEN(1,40,"获取DingTalkToken"),
|
||||
|
||||
GET_TOKEN_V2(2,40,"获取DingTalkTokenV2")
|
||||
;
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,129 @@
|
|||
package com.snow.common.enums;
|
||||
|
||||
/**
|
||||
* @author qimingjin
|
||||
* @Title: 钉钉日志类型
|
||||
* @Description:
|
||||
* @date 2020/9/18 10:18
|
||||
*/
|
||||
public enum DingTalkLogType {
|
||||
|
||||
|
||||
DEPARTMENT_CREATE(1, 1,"新建部门"),
|
||||
|
||||
DEPARTMENT_UPDATE(1, 2,"更新部门"),
|
||||
|
||||
DEPARTMENT_DELETED(1,3,"删除部门"),
|
||||
|
||||
DEPARTMENT_QUERY(1,4,"查询"),
|
||||
|
||||
//*****************************用户相关
|
||||
|
||||
USER_CREATE(2,1,"新增用户"),
|
||||
|
||||
USER_DELETE(2,3,"删除(离职)用户"),
|
||||
|
||||
USER_UPDATE(2,2,"更新用户"),
|
||||
|
||||
|
||||
//*********************外部联系人
|
||||
CREATE_EXT_CONTACT_USER(3,1,"新增外部联系人"),
|
||||
|
||||
UPDATE_EXT_CONTACT_USER(3,2,"更新外部联系人"),
|
||||
|
||||
DELETE_EXT_CONTACT_USER(3,3,"删除外部联系人"),
|
||||
|
||||
EXT_CONTACT_USER_LIST(3,4,"获取外部联系人列表"),
|
||||
|
||||
GET_EXT_CONTACT_USER(3,4,"获取外部联系人详情"),
|
||||
|
||||
//*******************回调
|
||||
CALL_BACK_CHECK_URL(4,6, "回调check_url"),
|
||||
|
||||
CALL_BACK_REGISTER(4,1, "回调注册"),
|
||||
|
||||
CALL_BACK_UPDATE(4,2, "回调更新"),
|
||||
|
||||
CALL_BACK_DELETE(4,3, "回调删除"),
|
||||
|
||||
CALL_BACK_FAILED_RESULT(4,4, "获取回调失败结果"),
|
||||
|
||||
|
||||
//*****************待办
|
||||
WORK_RECODE_CREATE(5,1, "创建待办"),
|
||||
|
||||
GET_WORK_RECORD_USER(5,4,"获取用户待办"),
|
||||
|
||||
WORK_RECORD_UPDATE(5,2,"更新待办"),
|
||||
|
||||
WORK_RECORD_DELETE(5,3,"删除待办"),
|
||||
|
||||
UPDATE_TODO_TASK_EXECUTOR_STATUS(5,2,"更新任务执行状态"),
|
||||
|
||||
|
||||
/**
|
||||
* 发送钉钉工作通知
|
||||
*/
|
||||
ASYNCSEND_V2(6,5,"发送钉钉消息"),
|
||||
|
||||
|
||||
/**
|
||||
* 公告
|
||||
*/
|
||||
BLACKBOARD_CREATE(7,1,"公告创建"),
|
||||
|
||||
BLACKBOARD_UPDATE(7,2,"公告更新"),
|
||||
|
||||
BLACKBOARD_DELETE(7,3,"公告删除"),
|
||||
|
||||
/**
|
||||
* token
|
||||
*/
|
||||
GET_TOKEN(8,4,"获取DingTalkToken"),
|
||||
|
||||
GET_TOKEN_V2(8,4,"获取DingTalkTokenV2")
|
||||
;
|
||||
|
||||
|
||||
//模块
|
||||
private final Integer moduleType;
|
||||
/**
|
||||
* 操作类型 1--新增 2--更新 3--删除 4- 查询 5--发送消息
|
||||
*/
|
||||
private final Integer businessType;
|
||||
/**
|
||||
* 标题
|
||||
*/
|
||||
private final String title;
|
||||
|
||||
DingTalkLogType(Integer moduleType, Integer businessType, String title)
|
||||
{
|
||||
this.moduleType = moduleType;
|
||||
this.businessType = businessType;
|
||||
this.title=title;
|
||||
}
|
||||
|
||||
public Integer getModuleType()
|
||||
{
|
||||
return moduleType;
|
||||
}
|
||||
|
||||
public String getTitle()
|
||||
{
|
||||
return title;
|
||||
}
|
||||
|
||||
public Integer getBusinessType() {
|
||||
return businessType;
|
||||
}
|
||||
|
||||
public static DingTalkLogType getType(String title) {
|
||||
for (DingTalkLogType dingTalkListenerType: DingTalkLogType.values()){
|
||||
if(dingTalkListenerType.getTitle().equals(title)){
|
||||
return dingTalkListenerType;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
|
@ -8,7 +8,8 @@ package com.snow.common.enums;
|
|||
*/
|
||||
public enum DingTalkMessageType {
|
||||
TEXT(1, "text"),
|
||||
LINK(2, "link");
|
||||
LINK(2, "link"),
|
||||
MARKDOWN(3,"markdown");
|
||||
|
||||
private final Integer code;
|
||||
private final String info;
|
||||
|
|
|
@ -23,6 +23,8 @@ public class CacheUtils
|
|||
|
||||
private static final String SYS_CACHE = "sys-cache";
|
||||
|
||||
private static final String SYS_CONFIG = "sys-config";
|
||||
|
||||
/**
|
||||
* 获取SYS_CACHE缓存
|
||||
*
|
||||
|
@ -34,6 +36,16 @@ public class CacheUtils
|
|||
return get(SYS_CACHE, key);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取SYS_Config缓存
|
||||
*
|
||||
* @param key
|
||||
* @return
|
||||
*/
|
||||
public static Object getSysConfig(String key)
|
||||
{
|
||||
return get(SYS_CONFIG, key);
|
||||
}
|
||||
/**
|
||||
* 获取SYS_CACHE缓存
|
||||
*
|
||||
|
@ -47,6 +59,18 @@ public class CacheUtils
|
|||
return value != null ? value : defaultValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取SYS_Config缓存
|
||||
* @param key 缓存key
|
||||
* @param defaultValue 默认值
|
||||
* @return
|
||||
*/
|
||||
public static Object getSysConfig(String key, Object defaultValue)
|
||||
{
|
||||
Object value = getSysConfig(key);
|
||||
return value != null ? value : defaultValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* 写入SYS_CACHE缓存
|
||||
*
|
||||
|
|
|
@ -22,6 +22,7 @@ public class PatternUtils {
|
|||
* @param templateBody
|
||||
* @return
|
||||
*/
|
||||
@Deprecated
|
||||
public static String builderTemplateBody(Map<String,Object> map, String templateBody){
|
||||
String re = "(?<=\\$\\{).*?(?=\\})";
|
||||
Pattern p = Pattern.compile(re);
|
||||
|
|
|
@ -73,22 +73,17 @@ public class SyncLogAspect
|
|||
{
|
||||
// 获得注解
|
||||
SyncLog controllerLog = getAnnotationLog(joinPoint);
|
||||
if (controllerLog == null)
|
||||
{
|
||||
if (controllerLog == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取当前的用户
|
||||
SysUser currentUser = ShiroUtils.getSysUser();
|
||||
SysDingtalkSyncLog sysDingtalkSyncLog = new SysDingtalkSyncLog();
|
||||
if(StringUtils.isNotNull(currentUser)){
|
||||
sysDingtalkSyncLog.setOperName(currentUser.getUserName());
|
||||
if (StringUtils.isNotNull(currentUser.getDept())
|
||||
&& StringUtils.isNotEmpty(currentUser.getDept().getDeptName()))
|
||||
{
|
||||
if (StringUtils.isNotNull(currentUser.getDept()) && StringUtils.isNotEmpty(currentUser.getDept().getDeptName())) {
|
||||
sysDingtalkSyncLog.setDeptName(currentUser.getDept().getDeptName());
|
||||
}
|
||||
|
||||
// 请求的地址
|
||||
String ip = ShiroUtils.getIp();
|
||||
sysDingtalkSyncLog.setOperIp(ip);
|
||||
|
@ -102,15 +97,13 @@ public class SyncLogAspect
|
|||
// 返回参数
|
||||
sysDingtalkSyncLog.setJsonResult(StringUtils.substring(JSON.marshal(jsonResult), 0, 2000));
|
||||
Optional.ofNullable(ServletUtils.getRequest()).ifPresent(t->sysDingtalkSyncLog.setOperUrl(ServletUtils.getRequest().getRequestURI()));
|
||||
if (e != null)
|
||||
{
|
||||
if (e != null) {
|
||||
if(e instanceof SyncDataException){
|
||||
sysDingtalkSyncLog.setStatus(BusinessStatus.FAIL.ordinal());
|
||||
sysDingtalkSyncLog.setOperDingtalkParam(((SyncDataException) e).getRequestParam());
|
||||
sysDingtalkSyncLog.setErrorMsg(StringUtils.substring(e.getMessage(), 0, 2000));
|
||||
}else if(e instanceof ApiException){
|
||||
sysDingtalkSyncLog.setStatus(BusinessStatus.FAIL.ordinal());
|
||||
// sysDingtalkSyncLog.setOperDingtalkParam(((ApiException) e).getErrMsg());
|
||||
sysDingtalkSyncLog.setErrorMsg(StringUtils.substring(((ApiException) e).getErrMsg(), 0, 2000));
|
||||
}
|
||||
else {
|
||||
|
@ -149,9 +142,9 @@ public class SyncLogAspect
|
|||
*/
|
||||
public void getControllerMethodDescription(SyncLog log, JoinPoint joinPoint, SysDingtalkSyncLog sysDingtalkSyncLog) throws Exception
|
||||
{
|
||||
sysDingtalkSyncLog.setTitle(log.dingTalkListenerType().getInfo());
|
||||
sysDingtalkSyncLog.setModuleType(log.dingTalkListenerType().getType());
|
||||
sysDingtalkSyncLog.setBusinessType(log.dingTalkListenerType().getCode());
|
||||
sysDingtalkSyncLog.setTitle(log.dingTalkLogType().getTitle());
|
||||
sysDingtalkSyncLog.setModuleType(log.dingTalkLogType().getModuleType());
|
||||
sysDingtalkSyncLog.setBusinessType(log.dingTalkLogType().getBusinessType());
|
||||
// 设置操作人类别
|
||||
sysDingtalkSyncLog.setOperatorType(log.dingTalkSyncType().getCode());
|
||||
sysDingtalkSyncLog.setLogType(log.syncLogTpye().getCode());
|
||||
|
|
|
@ -32,6 +32,16 @@ public class BaseConstantUrl {
|
|||
*/
|
||||
public static final String GET_USERINFO_BY_DEPT= "https://oapi.dingtalk.com/topapi/v2/user/list";
|
||||
|
||||
/**
|
||||
* 获取用户UNION_ID
|
||||
*/
|
||||
public static final String GET_USER_UNION_ID= "https://oapi.dingtalk.com/topapi/user/getbyunionid";
|
||||
|
||||
/**
|
||||
* 通过临时授权码获取授权用户的个人信息
|
||||
*/
|
||||
public static final String GET_USER_BY_CODE="https://oapi.dingtalk.com/sns/getuserinfo_bycode";
|
||||
|
||||
/**
|
||||
* 获取token url
|
||||
*/
|
||||
|
@ -99,10 +109,15 @@ public class BaseConstantUrl {
|
|||
|
||||
|
||||
/**
|
||||
* 发送普通消息
|
||||
* 发送工作通知
|
||||
*/
|
||||
public static final String ASYNCSEND_V2="https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2";
|
||||
|
||||
/**
|
||||
* 发送普通消息
|
||||
*/
|
||||
public static final String SEND_TO_CONVERSATIO="https://oapi.dingtalk.com/message/send_to_conversation";
|
||||
|
||||
|
||||
/**
|
||||
* 创建公告
|
||||
|
|
|
@ -2,26 +2,26 @@ package com.snow.dingtalk.common;
|
|||
|
||||
import cn.hutool.cache.CacheUtil;
|
||||
import cn.hutool.cache.impl.TimedCache;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.aliyun.dingtalkoauth2_1_0.Client;
|
||||
import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenRequest;
|
||||
import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenResponse;
|
||||
import com.aliyun.tea.TeaException;
|
||||
import com.aliyun.teaopenapi.models.Config;
|
||||
import com.aliyun.teautil.Common;
|
||||
import com.dingtalk.api.DefaultDingTalkClient;
|
||||
import com.dingtalk.api.request.OapiGettokenRequest;
|
||||
import com.dingtalk.api.response.OapiGettokenResponse;
|
||||
import com.snow.common.annotation.SyncLog;
|
||||
import com.snow.common.constant.CacheConstants;
|
||||
import com.snow.common.constant.Constants;
|
||||
import com.snow.common.enums.BusinessType;
|
||||
import com.snow.common.enums.DingTalkListenerType;
|
||||
import com.snow.common.enums.DingTalkLogType;
|
||||
import com.snow.common.exception.SyncDataException;
|
||||
import com.snow.common.utils.CacheUtils;
|
||||
import com.snow.common.utils.StringUtils;
|
||||
import com.snow.common.utils.spring.SpringUtils;
|
||||
import com.snow.system.domain.SysOperLog;
|
||||
import com.snow.system.service.impl.SysConfigServiceImpl;
|
||||
import com.snow.system.service.impl.SysOperLogServiceImpl;
|
||||
import com.taobao.api.ApiException;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author qimingjin
|
||||
* @Title:
|
||||
|
@ -36,37 +36,32 @@ public class BaseService {
|
|||
|
||||
private SysConfigServiceImpl sysConfigService=SpringUtils.getBean("sysConfigServiceImpl");
|
||||
|
||||
private SysOperLogServiceImpl iSysOperLogService=SpringUtils.getBean("sysOperLogServiceImpl");
|
||||
|
||||
/**
|
||||
* 获取token
|
||||
* @return
|
||||
*/
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.GET_TOKEN,dingTalkUrl=BaseConstantUrl.GET_TOKEN_URL)
|
||||
public String getDingTalkToken(){
|
||||
//创建缓存,缓存默认是7100S
|
||||
TimedCache<String, String> timedCache = CacheUtil.newTimedCache(7100);
|
||||
if(StringUtils.isEmpty(timedCache.get(TOKEN))){
|
||||
DefaultDingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.GET_TOKEN_URL);
|
||||
OapiGettokenRequest request = new OapiGettokenRequest();
|
||||
request.setAppkey(sysConfigService.selectConfigByKey(Constants.ENTERPRICE_APP_KEY));
|
||||
request.setAppsecret(sysConfigService.selectConfigByKey(Constants.ENTERPRICE_APP_SECRET));
|
||||
request.setAppkey(CacheUtils.getSysConfig(CacheConstants.ENTERPRICE_APP_KEY,sysConfigService.selectConfigByKey(Constants.ENTERPRICE_APP_KEY)).toString());
|
||||
request.setAppsecret(CacheUtils.getSysConfig(CacheConstants.ENTERPRICE_APP_SECRET,sysConfigService.selectConfigByKey(Constants.ENTERPRICE_APP_SECRET)).toString());
|
||||
request.setHttpMethod(Constants.GET);
|
||||
try {
|
||||
OapiGettokenResponse response = client.execute(request);
|
||||
if(response.getErrcode()==0){
|
||||
timedCache.put(TOKEN,response.getAccessToken());
|
||||
syncDingTalkSuccessOperLog(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()", com.alibaba.fastjson.JSON.toJSONString(request));
|
||||
return null;
|
||||
throw new SyncDataException(JSON.toJSONString(request),response.getErrmsg());
|
||||
}
|
||||
} catch (ApiException e) {
|
||||
syncDingTalkErrorOperLog(BaseConstantUrl.GET_TOKEN_URL,e.getMessage(),"getDingTalkToken()",com.alibaba.fastjson.JSON.toJSONString(request));
|
||||
e.printStackTrace();
|
||||
throw new SyncDataException(JSON.toJSONString(request),e.getMessage());
|
||||
}
|
||||
return null;
|
||||
}else {
|
||||
return timedCache.get(TOKEN);
|
||||
}
|
||||
|
@ -77,29 +72,21 @@ public class BaseService {
|
|||
* 钉钉新版服务费token获取
|
||||
* @return token值
|
||||
*/
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.GET_TOKEN_V2)
|
||||
public String getDingTalkTokenV2(){
|
||||
//创建缓存,缓存默认是7100S
|
||||
TimedCache<String, String> timedCache = CacheUtil.newTimedCache(7100);
|
||||
if(StringUtils.isEmpty(timedCache.get(TOKENV2))) {
|
||||
GetAccessTokenRequest getAccessTokenRequest = new GetAccessTokenRequest()
|
||||
.setAppKey(String.valueOf(CacheUtils.getSysConfig(CacheConstants.ENTERPRICE_APP_KEY,sysConfigService.selectConfigByKey(Constants.ENTERPRICE_APP_KEY))))
|
||||
.setAppSecret(String.valueOf(CacheUtils.getSysConfig(CacheConstants.ENTERPRICE_APP_SECRET,sysConfigService.selectConfigByKey(Constants.ENTERPRICE_APP_SECRET))));
|
||||
try {
|
||||
GetAccessTokenRequest getAccessTokenRequest = new GetAccessTokenRequest()
|
||||
.setAppKey(sysConfigService.selectConfigByKey(Constants.ENTERPRICE_APP_KEY))
|
||||
.setAppSecret(sysConfigService.selectConfigByKey(Constants.ENTERPRICE_APP_SECRET));
|
||||
try {
|
||||
GetAccessTokenResponse accessToken = createClient().getAccessToken(getAccessTokenRequest);
|
||||
timedCache.put(TOKENV2,accessToken.getBody().getAccessToken());
|
||||
return accessToken.getBody().getAccessToken();
|
||||
} catch (Exception exception) {
|
||||
TeaException err = new TeaException(exception.getMessage(), exception);
|
||||
if (!Common.empty(err.code) && !Common.empty(err.message)) {
|
||||
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
||||
syncDingTalkErrorOperLog(BaseConstantUrl.GET_TOKEN_URL,err.getMessage(),"getDingTalkToken()", com.alibaba.fastjson.JSON.toJSONString(getAccessTokenRequest));
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
GetAccessTokenResponse accessToken = createClient().getAccessToken(getAccessTokenRequest);
|
||||
timedCache.put(TOKENV2,accessToken.getBody().getAccessToken());
|
||||
return accessToken.getBody().getAccessToken();
|
||||
} catch (Exception err) {
|
||||
throw new SyncDataException(JSON.toJSONString(getAccessTokenRequest),err.getMessage());
|
||||
}
|
||||
return null;
|
||||
}else {
|
||||
return timedCache.get(TOKEN);
|
||||
}
|
||||
|
@ -117,44 +104,4 @@ public class BaseService {
|
|||
return new Client(config);
|
||||
}
|
||||
|
||||
/**
|
||||
* 记录钉钉异常信息
|
||||
* @param url
|
||||
* @param errorMessage
|
||||
* @param method
|
||||
*/
|
||||
public void syncDingTalkErrorOperLog(String url,String errorMessage,String method,String operParam){
|
||||
SysOperLog sysOperLog=new SysOperLog();
|
||||
sysOperLog.setOperTime(new Date());
|
||||
sysOperLog.setErrorMsg(errorMessage);
|
||||
sysOperLog.setBusinessType(BusinessType.SYNCHRONIZATION.ordinal());
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON;
|
|||
import com.aliyun.dingtalktodo_1_0.models.GetTodoTaskBySourceIdResponseBody;
|
||||
import com.snow.common.enums.DingTalkListenerType;
|
||||
import com.snow.common.utils.spring.SpringUtils;
|
||||
import com.snow.dingtalk.service.impl.MessageServiceImpl;
|
||||
import com.snow.dingtalk.service.impl.WorkRecodeServiceImpl;
|
||||
import com.snow.framework.web.domain.common.SysSendMessageDTO;
|
||||
import com.snow.system.domain.SysOaTask;
|
||||
|
@ -25,6 +26,8 @@ public class WorkRecodeEventService implements ISyncDingTalkInfo {
|
|||
|
||||
private WorkRecodeServiceImpl workRecodeService=SpringUtils.getBean(WorkRecodeServiceImpl.class);
|
||||
|
||||
private MessageServiceImpl messageService=SpringUtils.getBean(MessageServiceImpl.class);
|
||||
|
||||
@Override
|
||||
public void syncDingTalkInfoEvent(SyncEvent syncEvent) {
|
||||
log.info("调用工作通知传入的原始参数:{}",JSON.toJSONString(syncEvent));
|
||||
|
@ -60,9 +63,9 @@ public class WorkRecodeEventService implements ISyncDingTalkInfo {
|
|||
}
|
||||
//钉钉发送普通消息
|
||||
else if(code.equals(DingTalkListenerType.ASYNCSEND_V2.getCode())){
|
||||
|
||||
SysSendMessageDTO sysSendMessageDTO=(SysSendMessageDTO)syncEvent.getSource();
|
||||
workRecodeService.sendCommonMessage(sysSendMessageDTO);
|
||||
log.info("@@发送钉钉工作通知消息传入的参数:{}",JSON.toJSONString(sysSendMessageDTO));
|
||||
messageService.sendWorkNotice(sysSendMessageDTO);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
package com.snow.dingtalk.service;
|
||||
|
||||
import com.snow.framework.web.domain.common.SysSendMessageDTO;
|
||||
|
||||
/**
|
||||
* @author qimingjin
|
||||
* @Title: 钉钉消息服务
|
||||
* @Description:
|
||||
* @date 2021/11/12 13:22
|
||||
*/
|
||||
public interface MessageService {
|
||||
|
||||
/**
|
||||
* 发送工作通知消息
|
||||
* @param sysSendMessageDTO 请求参数
|
||||
* @return 任务id
|
||||
*/
|
||||
Long sendWorkNotice(SysSendMessageDTO sysSendMessageDTO);
|
||||
|
||||
}
|
|
@ -4,7 +4,10 @@ import com.alibaba.fastjson.JSON;
|
|||
import com.dingtalk.api.DefaultDingTalkClient;
|
||||
import com.dingtalk.api.request.OapiProcessinstanceCreateRequest;
|
||||
import com.dingtalk.api.response.OapiProcessinstanceCreateResponse;
|
||||
import com.snow.common.annotation.SyncLog;
|
||||
import com.snow.common.constant.Constants;
|
||||
import com.snow.common.enums.DingTalkListenerType;
|
||||
import com.snow.common.exception.SyncDataException;
|
||||
import com.snow.common.utils.spring.SpringUtils;
|
||||
import com.snow.dingtalk.common.BaseConstantUrl;
|
||||
import com.snow.dingtalk.common.BaseService;
|
||||
|
@ -37,15 +40,12 @@ public class ProcessInstanceService extends BaseService {
|
|||
try {
|
||||
OapiProcessinstanceCreateResponse response = client.execute(request,getDingTalkToken());
|
||||
if(response.getErrcode()==0){
|
||||
syncDingTalkErrorOperLog(BaseConstantUrl.FLOW_CREATE,response.getMessage(),"ProcessInstanceCreateRequest",JSON.toJSONString(request));
|
||||
return response.getProcessInstanceId();
|
||||
}else {
|
||||
syncDingTalkErrorOperLog(BaseConstantUrl.FLOW_CREATE,response.getErrmsg(),"ProcessInstanceCreateRequest",JSON.toJSONString(request));
|
||||
throw new SyncDataException(JSON.toJSONString(request),response.getMessage());
|
||||
}
|
||||
} catch (ApiException e) {
|
||||
syncDingTalkErrorOperLog(BaseConstantUrl.FLOW_CREATE,e.getMessage(),"ProcessInstanceCreateRequest",JSON.toJSONString(request));
|
||||
e.printStackTrace();
|
||||
throw new SyncDataException(JSON.toJSONString(request),e.getMessage());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@ import com.aliyun.dingtalktodo_1_0.models.GetTodoTaskBySourceIdResponseBody;
|
|||
import com.dingtalk.api.response.OapiWorkrecordGetbyuseridResponse;
|
||||
import com.snow.dingtalk.model.request.WorkrecordAddRequest;
|
||||
import com.snow.dingtalk.model.request.WorkrecordGetbyuseridRequest;
|
||||
import com.snow.framework.web.domain.common.SysSendMessageDTO;
|
||||
import com.snow.system.domain.SysOaTask;
|
||||
import com.snow.system.domain.SysOaTaskDistribute;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -79,9 +78,4 @@ public interface WorkRecodeService {
|
|||
@Deprecated
|
||||
Boolean update(String userId,String recordId);
|
||||
|
||||
/**
|
||||
* 钉钉发送消息
|
||||
* @param sysSendMessageDTO
|
||||
*/
|
||||
Long sendCommonMessage(SysSendMessageDTO sysSendMessageDTO);
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ import com.dingtalk.api.response.OapiBlackboardCreateResponse;
|
|||
import com.dingtalk.api.response.OapiBlackboardDeleteResponse;
|
||||
import com.dingtalk.api.response.OapiBlackboardUpdateResponse;
|
||||
import com.snow.common.annotation.SyncLog;
|
||||
import com.snow.common.enums.DingTalkListenerType;
|
||||
import com.snow.common.enums.DingTalkLogType;
|
||||
import com.snow.common.exception.SyncDataException;
|
||||
import com.snow.common.utils.spring.SpringUtils;
|
||||
import com.snow.dingtalk.common.BaseConstantUrl;
|
||||
|
@ -18,7 +18,6 @@ import com.snow.dingtalk.common.BaseService;
|
|||
import com.snow.dingtalk.service.BlackboardService;
|
||||
import com.snow.system.domain.SysNotice;
|
||||
import com.snow.system.domain.SysUser;
|
||||
import com.snow.system.mapper.SysNoticeMapper;
|
||||
import com.snow.system.service.impl.SysUserServiceImpl;
|
||||
import com.taobao.api.ApiException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
@ -40,10 +39,9 @@ public class BlackboardServiceImpl extends BaseService implements BlackboardServ
|
|||
|
||||
private SysUserServiceImpl sysUserService=SpringUtils.getBean(SysUserServiceImpl.class);
|
||||
|
||||
private SysNoticeMapper sysNoticeService=SpringUtils.getBean(SysNoticeMapper.class);
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.BLACKBOARD_CREATE,dingTalkUrl=BaseConstantUrl.BLACKBOARD_CREATE)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.BLACKBOARD_CREATE,dingTalkUrl=BaseConstantUrl.BLACKBOARD_CREATE)
|
||||
public String createBlackboard(SysNotice sysNotice) {
|
||||
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.BLACKBOARD_CREATE);
|
||||
|
@ -77,7 +75,7 @@ public class BlackboardServiceImpl extends BaseService implements BlackboardServ
|
|||
}
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.BLACKBOARD_DELETE,dingTalkUrl=BaseConstantUrl.DEPARTMENT_DELETE)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.BLACKBOARD_DELETE,dingTalkUrl=BaseConstantUrl.DEPARTMENT_DELETE)
|
||||
public void deleteBlackboard(String blackboardId) {
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.BLACKBOARD_DELETE);
|
||||
OapiBlackboardDeleteRequest req = new OapiBlackboardDeleteRequest();
|
||||
|
@ -95,7 +93,7 @@ public class BlackboardServiceImpl extends BaseService implements BlackboardServ
|
|||
}
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.BLACKBOARD_UPDATE,dingTalkUrl=BaseConstantUrl.BLACKBOARD_UPDATE)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.BLACKBOARD_UPDATE,dingTalkUrl=BaseConstantUrl.BLACKBOARD_UPDATE)
|
||||
public void updateBlackboard(SysNotice sysNotice) {
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.BLACKBOARD_UPDATE);
|
||||
OapiBlackboardUpdateRequest req = new OapiBlackboardUpdateRequest();
|
||||
|
|
|
@ -7,6 +7,7 @@ import com.dingtalk.api.request.*;
|
|||
import com.dingtalk.api.response.*;
|
||||
import com.snow.common.annotation.SyncLog;
|
||||
import com.snow.common.enums.DingTalkListenerType;
|
||||
import com.snow.common.enums.DingTalkLogType;
|
||||
import com.snow.common.enums.DingTalkSyncType;
|
||||
import com.snow.common.exception.SyncDataException;
|
||||
import com.snow.dingtalk.common.BaseConstantUrl;
|
||||
|
@ -32,7 +33,7 @@ public class CallBackServiceImpl extends BaseService implements CallBackService
|
|||
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.CALL_BACK_REGISTER,dingTalkUrl=BaseConstantUrl.REGISTER_CALL_BACK,dingTalkSyncType=DingTalkSyncType.AUTOMATIC)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.CALL_BACK_REGISTER,dingTalkUrl=BaseConstantUrl.REGISTER_CALL_BACK,dingTalkSyncType=DingTalkSyncType.AUTOMATIC)
|
||||
public void registerCallBack(DingtalkCallBack dingtalkCallBack) {
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.REGISTER_CALL_BACK);
|
||||
OapiCallBackRegisterCallBackRequest request = new OapiCallBackRegisterCallBackRequest();
|
||||
|
@ -52,7 +53,7 @@ public class CallBackServiceImpl extends BaseService implements CallBackService
|
|||
}
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.CALL_BACK_UPDATE,dingTalkUrl=BaseConstantUrl.UPDATE_CALL_BACK,dingTalkSyncType=DingTalkSyncType.AUTOMATIC)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.CALL_BACK_UPDATE,dingTalkUrl=BaseConstantUrl.UPDATE_CALL_BACK,dingTalkSyncType=DingTalkSyncType.AUTOMATIC)
|
||||
public Boolean updateCallBack(DingtalkCallBack dingtalkCallBack) {
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.UPDATE_CALL_BACK);
|
||||
OapiCallBackUpdateCallBackRequest request = new OapiCallBackUpdateCallBackRequest();
|
||||
|
@ -74,7 +75,7 @@ public class CallBackServiceImpl extends BaseService implements CallBackService
|
|||
}
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.CALL_BACK_DELETE,dingTalkUrl=BaseConstantUrl.DELETE_CALL_BACK,dingTalkSyncType=DingTalkSyncType.AUTOMATIC)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.CALL_BACK_DELETE,dingTalkUrl=BaseConstantUrl.DELETE_CALL_BACK,dingTalkSyncType=DingTalkSyncType.AUTOMATIC)
|
||||
public void deleteCallBack() {
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.DELETE_CALL_BACK);
|
||||
OapiCallBackDeleteCallBackRequest request = new OapiCallBackDeleteCallBackRequest();
|
||||
|
@ -91,6 +92,7 @@ public class CallBackServiceImpl extends BaseService implements CallBackService
|
|||
}
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.CALL_BACK_FAILED_RESULT,dingTalkUrl=BaseConstantUrl.CALL_BACK_FAILED_RESULT,dingTalkSyncType=DingTalkSyncType.AUTOMATIC)
|
||||
public List<OapiCallBackGetCallBackFailedResultResponse.Failed> getCallBackFailedResult() {
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.CALL_BACK_FAILED_RESULT);
|
||||
OapiCallBackGetCallBackFailedResultRequest request = new OapiCallBackGetCallBackFailedResultRequest();
|
||||
|
@ -99,17 +101,13 @@ public class CallBackServiceImpl extends BaseService implements CallBackService
|
|||
OapiCallBackGetCallBackFailedResultResponse response = client.execute(request, getDingTalkToken());
|
||||
if(response.getErrcode()==0){
|
||||
List<OapiCallBackGetCallBackFailedResultResponse.Failed> failedList = response.getFailedList();
|
||||
syncDingTalkSuccessOperLog(BaseConstantUrl.CALL_BACK_FAILED_RESULT,response.getMessage(),"getCallBackFailedResult()", JSON.toJSONString(request));
|
||||
return failedList;
|
||||
}else {
|
||||
//记录获取token失败日志
|
||||
syncDingTalkErrorOperLog(BaseConstantUrl.CALL_BACK_FAILED_RESULT,response.getErrmsg(),"getCallBackFailedResult()", JSON.toJSONString(request));
|
||||
throw new SyncDataException(JSON.toJSONString(request),response.getErrmsg());
|
||||
}
|
||||
} catch (ApiException e) {
|
||||
syncDingTalkErrorOperLog(BaseConstantUrl.CALL_BACK_FAILED_RESULT,e.getMessage(),"getCallBackFailedResult()", JSON.toJSONString(request));
|
||||
e.printStackTrace();
|
||||
throw new SyncDataException(JSON.toJSONString(request),e.getMessage());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ import com.dingtalk.api.request.*;
|
|||
import com.dingtalk.api.response.*;
|
||||
import com.snow.common.annotation.SyncLog;
|
||||
import com.snow.common.constant.Constants;
|
||||
import com.snow.common.enums.DingTalkListenerType;
|
||||
import com.snow.common.enums.DingTalkLogType;
|
||||
import com.snow.common.exception.SyncDataException;
|
||||
import com.snow.dingtalk.common.BaseConstantUrl;
|
||||
import com.snow.dingtalk.common.BaseService;
|
||||
|
@ -33,7 +33,7 @@ import java.util.stream.Collectors;
|
|||
public class DepartmentServiceImpl extends BaseService implements DepartmentService {
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.DEPARTMENT_CREATE,dingTalkUrl=BaseConstantUrl.DEPARTMENT_CREATE)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.DEPARTMENT_CREATE,dingTalkUrl=BaseConstantUrl.DEPARTMENT_CREATE)
|
||||
public Long createDepartment(DepartmentCreateRequest departmentDTO){
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.DEPARTMENT_CREATE);
|
||||
OapiDepartmentCreateRequest request = new OapiDepartmentCreateRequest();
|
||||
|
@ -57,7 +57,7 @@ public class DepartmentServiceImpl extends BaseService implements DepartmentServ
|
|||
}
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.DEPARTMENT_UPDATE,dingTalkUrl=BaseConstantUrl.DEPARTMENT_UPDATE)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.DEPARTMENT_UPDATE,dingTalkUrl=BaseConstantUrl.DEPARTMENT_UPDATE)
|
||||
public String updateDepartment(SysDept sysDept) {
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.DEPARTMENT_UPDATE);
|
||||
OapiV2DepartmentUpdateRequest req = new OapiV2DepartmentUpdateRequest();
|
||||
|
@ -91,7 +91,7 @@ public class DepartmentServiceImpl extends BaseService implements DepartmentServ
|
|||
}
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.DEPARTMENT_DELETED,dingTalkUrl=BaseConstantUrl.DEPARTMENT_DELETE)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.DEPARTMENT_DELETED,dingTalkUrl=BaseConstantUrl.DEPARTMENT_DELETE)
|
||||
public String deleteDepartment(Long id) {
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.DEPARTMENT_DELETE);
|
||||
OapiV2DepartmentDeleteRequest req = new OapiV2DepartmentDeleteRequest();
|
||||
|
@ -112,6 +112,7 @@ public class DepartmentServiceImpl extends BaseService implements DepartmentServ
|
|||
}
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.DEPARTMENT_QUERY,dingTalkUrl=BaseConstantUrl.GET_DEPARTMENT_BY_ID)
|
||||
public OapiV2DepartmentGetResponse.DeptGetResponse getDepartmentDetail(long id) {
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.GET_DEPARTMENT_BY_ID);
|
||||
OapiV2DepartmentGetRequest req = new OapiV2DepartmentGetRequest();
|
||||
|
@ -120,20 +121,18 @@ public class DepartmentServiceImpl extends BaseService implements DepartmentServ
|
|||
try {
|
||||
OapiV2DepartmentGetResponse rsp = client.execute(req, getDingTalkToken());
|
||||
if(rsp.getErrcode()==0){
|
||||
syncDingTalkSuccessOperLog(BaseConstantUrl.GET_DEPARTMENT_BY_ID,rsp.getMessage(),"getDepartmentDetail",JSON.toJSONString(req));
|
||||
return rsp.getResult();
|
||||
}else {
|
||||
syncDingTalkErrorOperLog(BaseConstantUrl.DEPARTMENT_LIST,rsp.getErrmsg(),"getDingTalkDepartmentList",JSON.toJSONString(req));
|
||||
throw new SyncDataException(JSON.toJSONString(req),rsp.getErrmsg());
|
||||
}
|
||||
} catch (ApiException e) {
|
||||
syncDingTalkErrorOperLog(BaseConstantUrl.GET_DEPARTMENT_BY_ID,e.getMessage(),"getDepartmentDetail",JSON.toJSONString(req));
|
||||
e.printStackTrace();
|
||||
throw new SyncDataException(JSON.toJSONString(req),e.getMessage());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.DEPARTMENT_QUERY,dingTalkUrl=BaseConstantUrl.DEPARTMENT_LIST)
|
||||
public List<OapiDepartmentListResponse.Department> getDingTalkDepartmentList(){
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.DEPARTMENT_LIST);
|
||||
OapiDepartmentListRequest request = new OapiDepartmentListRequest();
|
||||
|
@ -143,17 +142,13 @@ public class DepartmentServiceImpl extends BaseService implements DepartmentServ
|
|||
try {
|
||||
OapiDepartmentListResponse response = client.execute(request, getDingTalkToken());
|
||||
if(response.getErrcode()==0){
|
||||
syncDingTalkSuccessOperLog(BaseConstantUrl.DEPARTMENT_LIST,response.getMessage(),"getDingTalkDepartmentList",JSON.toJSONString(request));
|
||||
return response.getDepartment();
|
||||
}else {
|
||||
syncDingTalkErrorOperLog(BaseConstantUrl.DEPARTMENT_LIST,response.getErrmsg(),"getDingTalkDepartmentList",JSON.toJSONString(request));
|
||||
throw new SyncDataException(JSON.toJSONString(request),response.getErrmsg());
|
||||
}
|
||||
} catch (ApiException e) {
|
||||
syncDingTalkErrorOperLog(BaseConstantUrl.DEPARTMENT_LIST,e.getMessage(),"getDingTalkDepartmentList",JSON.toJSONString(request));
|
||||
e.printStackTrace();
|
||||
throw new SyncDataException(JSON.toJSONString(request),e.getMessage());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -204,10 +204,6 @@ public class DingOfficialFlowServiceImpl extends BaseService implements DingOffi
|
|||
|
||||
}
|
||||
|
||||
/*@Override
|
||||
public void addProcessInstanceComment() {
|
||||
|
||||
}*/
|
||||
|
||||
@Override
|
||||
public OapiProcessinstanceGetResponse.ProcessInstanceTopVo getProcessInstanceDetail(String processInstanceId) {
|
||||
|
|
|
@ -9,7 +9,7 @@ import com.dingtalk.api.DingTalkClient;
|
|||
import com.dingtalk.api.request.*;
|
||||
import com.dingtalk.api.response.*;
|
||||
import com.snow.common.annotation.SyncLog;
|
||||
import com.snow.common.enums.DingTalkListenerType;
|
||||
import com.snow.common.enums.DingTalkLogType;
|
||||
import com.snow.common.exception.SyncDataException;
|
||||
import com.snow.dingtalk.common.BaseConstantUrl;
|
||||
import com.snow.dingtalk.common.BaseService;
|
||||
|
@ -34,7 +34,7 @@ public class ExtContactUserServiceImpl extends BaseService implements ExtContact
|
|||
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.CREATE_EXT_CONTACT_USER,dingTalkUrl= BaseConstantUrl.CREATE_EXT_CONTACT_USER)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.CREATE_EXT_CONTACT_USER,dingTalkUrl= BaseConstantUrl.CREATE_EXT_CONTACT_USER)
|
||||
public String createExtContactUser(ExtContactUserRequest extContactUserRequest) {
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.CREATE_EXT_CONTACT_USER);
|
||||
OapiExtcontactCreateRequest req = new OapiExtcontactCreateRequest();
|
||||
|
@ -55,7 +55,7 @@ public class ExtContactUserServiceImpl extends BaseService implements ExtContact
|
|||
}
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.DELETE_EXT_CONTACT_USER,dingTalkUrl= BaseConstantUrl.DELETE_EXT_CONTACT_USER)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.DELETE_EXT_CONTACT_USER,dingTalkUrl= BaseConstantUrl.DELETE_EXT_CONTACT_USER)
|
||||
public boolean deleteExtContactUser(String userId) {
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.DELETE_EXT_CONTACT_USER);
|
||||
OapiExtcontactDeleteRequest req = new OapiExtcontactDeleteRequest();
|
||||
|
@ -76,7 +76,7 @@ public class ExtContactUserServiceImpl extends BaseService implements ExtContact
|
|||
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.UPDATE_EXT_CONTACT_USER,dingTalkUrl= BaseConstantUrl.UPDATE_EXT_CONTACT_USER)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.UPDATE_EXT_CONTACT_USER,dingTalkUrl= BaseConstantUrl.UPDATE_EXT_CONTACT_USER)
|
||||
public boolean updateExtContactUser(ExtContactUserRequest extContactUserRequest) {
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.UPDATE_EXT_CONTACT_USER);
|
||||
OapiExtcontactUpdateRequest req = new OapiExtcontactUpdateRequest();
|
||||
|
@ -96,7 +96,7 @@ public class ExtContactUserServiceImpl extends BaseService implements ExtContact
|
|||
}
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.EXT_CONTACT_USER_LIST,dingTalkUrl= BaseConstantUrl.EXT_CONTACT_USER_LIST)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.EXT_CONTACT_USER_LIST,dingTalkUrl= BaseConstantUrl.EXT_CONTACT_USER_LIST)
|
||||
public List<ExtContactUserRequest> getExtContactUserList(Long offset,Long size) {
|
||||
DingTalkClient client = new DefaultDingTalkClient( BaseConstantUrl.EXT_CONTACT_USER_LIST);
|
||||
OapiExtcontactListRequest req = new OapiExtcontactListRequest();
|
||||
|
@ -128,7 +128,7 @@ public class ExtContactUserServiceImpl extends BaseService implements ExtContact
|
|||
}
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.GET_EXT_CONTACT_USER,dingTalkUrl= BaseConstantUrl.GET_EXT_CONTACT_USER)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.GET_EXT_CONTACT_USER,dingTalkUrl= BaseConstantUrl.GET_EXT_CONTACT_USER)
|
||||
public ExtContactUserRequest getExtContactUserDetail(String userId) {
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.GET_EXT_CONTACT_USER);
|
||||
OapiExtcontactGetRequest req = new OapiExtcontactGetRequest();
|
||||
|
|
|
@ -0,0 +1,98 @@
|
|||
package com.snow.dingtalk.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.dingtalk.api.DefaultDingTalkClient;
|
||||
import com.dingtalk.api.DingTalkClient;
|
||||
import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request;
|
||||
import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response;
|
||||
import com.snow.common.annotation.SyncLog;
|
||||
import com.snow.common.constant.Constants;
|
||||
import com.snow.common.enums.DingTalkLogType;
|
||||
import com.snow.common.enums.DingTalkMessageType;
|
||||
import com.snow.common.exception.SyncDataException;
|
||||
import com.snow.common.utils.spring.SpringUtils;
|
||||
import com.snow.dingtalk.common.BaseConstantUrl;
|
||||
import com.snow.dingtalk.common.BaseService;
|
||||
import com.snow.dingtalk.service.MessageService;
|
||||
import com.snow.framework.util.FreemarkUtils;
|
||||
import com.snow.framework.web.domain.common.SysSendMessageDTO;
|
||||
import com.snow.system.domain.SysMessageTemplate;
|
||||
import com.snow.system.service.ISysMessageTemplateService;
|
||||
import com.snow.system.service.impl.SysConfigServiceImpl;
|
||||
import com.taobao.api.ApiException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author qimingjin
|
||||
* @Title:
|
||||
* @Description:
|
||||
* @date 2021/11/12 13:27
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class MessageServiceImpl extends BaseService implements MessageService {
|
||||
|
||||
private SysConfigServiceImpl isysConfigService= SpringUtils.getBean(SysConfigServiceImpl.class);
|
||||
|
||||
private ISysMessageTemplateService sysMessageTemplateService=SpringUtils.getBean(ISysMessageTemplateService.class);
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.ASYNCSEND_V2,dingTalkUrl=BaseConstantUrl.ASYNCSEND_V2)
|
||||
public Long sendWorkNotice(SysSendMessageDTO sysSendMessageDTO) {
|
||||
SysMessageTemplate sysMessageTemplate= sysMessageTemplateService.getSysMessageTemplateByCode(sysSendMessageDTO.getTemplateByCode());
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.ASYNCSEND_V2);
|
||||
OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request();
|
||||
|
||||
request.setAgentId(Long.parseLong(isysConfigService.selectConfigByKey(Constants.AGENT_ID)));
|
||||
|
||||
String userIdList = StringUtils.join(sysSendMessageDTO.getReceiverSet(), ",");
|
||||
request.setUseridList(userIdList);
|
||||
request.setToAllUser(sysSendMessageDTO.getToAllUser());
|
||||
|
||||
OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg();
|
||||
//组装消息内容
|
||||
String content= FreemarkUtils.process(sysSendMessageDTO.getTemplateByCode(),sysMessageTemplate.getTemplateBody(),sysSendMessageDTO.getParamMap());
|
||||
|
||||
if(sysSendMessageDTO.getDingTalkMessageType().equals(DingTalkMessageType.LINK)){
|
||||
msg.setMsgtype(DingTalkMessageType.LINK.getInfo());
|
||||
msg.setLink(new OapiMessageCorpconversationAsyncsendV2Request.Link());
|
||||
msg.getLink().setTitle(sysMessageTemplate.getTemplateName());
|
||||
msg.getLink().setText(content);
|
||||
msg.getLink().setMessageUrl(sysSendMessageDTO.getFilePath());
|
||||
msg.getLink().setPicUrl(sysSendMessageDTO.getFilePath());
|
||||
}
|
||||
|
||||
|
||||
if(sysSendMessageDTO.getDingTalkMessageType().equals(DingTalkMessageType.TEXT)){
|
||||
msg.setMsgtype(DingTalkMessageType.TEXT.getInfo());
|
||||
msg.setText(new OapiMessageCorpconversationAsyncsendV2Request.Text());
|
||||
msg.getText().setContent(content);
|
||||
|
||||
}
|
||||
|
||||
if(sysSendMessageDTO.getDingTalkMessageType().equals(DingTalkMessageType.MARKDOWN)){
|
||||
msg.setMsgtype(DingTalkMessageType.MARKDOWN.getInfo());
|
||||
msg.setMarkdown(new OapiMessageCorpconversationAsyncsendV2Request.Markdown());
|
||||
msg.getMarkdown().setText(content);
|
||||
msg.getMarkdown().setTitle(sysMessageTemplate.getTemplateName());
|
||||
}
|
||||
|
||||
request.setMsg(msg);
|
||||
OapiMessageCorpconversationAsyncsendV2Response rsp = null;
|
||||
try {
|
||||
rsp = client.execute(request, getDingTalkToken());
|
||||
if(rsp.getErrcode()==0){
|
||||
return rsp.getTaskId();
|
||||
}else {
|
||||
throw new SyncDataException(JSON.toJSONString(request),rsp.getErrmsg());
|
||||
}
|
||||
|
||||
} catch (ApiException e) {
|
||||
log.error("@@钉钉发送工作通知异常:{}",e.getErrMsg());
|
||||
throw new SyncDataException(JSON.toJSONString(request),e.getErrMsg());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -8,7 +8,7 @@ import com.dingtalk.api.request.*;
|
|||
import com.dingtalk.api.response.*;
|
||||
import com.snow.common.annotation.SyncLog;
|
||||
import com.snow.common.constant.Constants;
|
||||
import com.snow.common.enums.DingTalkListenerType;
|
||||
import com.snow.common.enums.DingTalkLogType;
|
||||
import com.snow.common.exception.SyncDataException;
|
||||
import com.snow.common.utils.StringUtils;
|
||||
import com.snow.common.utils.spring.SpringUtils;
|
||||
|
@ -50,7 +50,7 @@ public class UserServiceImpl extends BaseService implements UserService {
|
|||
String appId= isysConfigService.selectConfigByKey("ding.login.appid");
|
||||
String appSecret= isysConfigService.selectConfigByKey("ding.login.appSecret");
|
||||
// 通过临时授权码获取授权用户的个人信息
|
||||
DefaultDingTalkClient client2 = new DefaultDingTalkClient("https://oapi.dingtalk.com/sns/getuserinfo_bycode");
|
||||
DefaultDingTalkClient client2 = new DefaultDingTalkClient(BaseConstantUrl.GET_USER_BY_CODE);
|
||||
OapiSnsGetuserinfoBycodeRequest req = new OapiSnsGetuserinfoBycodeRequest();
|
||||
// 通过扫描二维码,跳转指定的redirect_uri后,向url中追加的code临时授权码
|
||||
req.setTmpAuthCode(authCode);
|
||||
|
@ -75,7 +75,7 @@ public class UserServiceImpl extends BaseService implements UserService {
|
|||
* @return
|
||||
*/
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.USER_CREATE,dingTalkUrl=BaseConstantUrl.USER_CREATE)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.USER_CREATE,dingTalkUrl=BaseConstantUrl.USER_CREATE)
|
||||
public OapiV2UserCreateResponse.UserCreateResponse createUser(SysUser sysUser) {
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.USER_CREATE);
|
||||
OapiV2UserCreateRequest req = new OapiV2UserCreateRequest();
|
||||
|
@ -125,7 +125,7 @@ public class UserServiceImpl extends BaseService implements UserService {
|
|||
}
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.USER_UPDATE,dingTalkUrl=BaseConstantUrl.USER_UPDATE)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.USER_UPDATE,dingTalkUrl=BaseConstantUrl.USER_UPDATE)
|
||||
public String updateUserV2(SysUser sysUser) {
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.USER_UPDATE);
|
||||
OapiV2UserUpdateRequest req = new OapiV2UserUpdateRequest();
|
||||
|
@ -164,7 +164,7 @@ public class UserServiceImpl extends BaseService implements UserService {
|
|||
* @param ids
|
||||
*/
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.USER_DELETE,dingTalkUrl=BaseConstantUrl.USER_DELETE)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.USER_DELETE,dingTalkUrl=BaseConstantUrl.USER_DELETE)
|
||||
public void deleteUser(String ids) {
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.USER_DELETE);
|
||||
OapiV2UserDeleteRequest req = new OapiV2UserDeleteRequest();
|
||||
|
@ -236,7 +236,7 @@ public class UserServiceImpl extends BaseService implements UserService {
|
|||
@Override
|
||||
public OapiUserGetbyunionidResponse.UserGetByUnionIdResponse getUserByUnionId(String unionId){
|
||||
|
||||
DingTalkClient clientDingTalkClient = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/user/getbyunionid");
|
||||
DingTalkClient clientDingTalkClient = new DefaultDingTalkClient(BaseConstantUrl.GET_USER_UNION_ID);
|
||||
OapiUserGetbyunionidRequest request = new OapiUserGetbyunionidRequest();
|
||||
request.setUnionid(unionId);
|
||||
try {
|
||||
|
|
|
@ -9,18 +9,16 @@ import com.aliyun.teaopenapi.models.Config;
|
|||
import com.aliyun.teautil.models.RuntimeOptions;
|
||||
import com.dingtalk.api.DefaultDingTalkClient;
|
||||
import com.dingtalk.api.DingTalkClient;
|
||||
import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request;
|
||||
import com.dingtalk.api.request.OapiWorkrecordAddRequest;
|
||||
import com.dingtalk.api.request.OapiWorkrecordGetbyuseridRequest;
|
||||
import com.dingtalk.api.request.OapiWorkrecordUpdateRequest;
|
||||
import com.dingtalk.api.response.*;
|
||||
import com.dingtalk.api.response.OapiV2UserGetResponse;
|
||||
import com.dingtalk.api.response.OapiWorkrecordAddResponse;
|
||||
import com.dingtalk.api.response.OapiWorkrecordGetbyuseridResponse;
|
||||
import com.dingtalk.api.response.OapiWorkrecordUpdateResponse;
|
||||
import com.snow.common.annotation.SyncLog;
|
||||
import com.snow.common.constant.Constants;
|
||||
import com.snow.common.enums.DingTalkListenerType;
|
||||
import com.snow.common.enums.DingTalkMessageType;
|
||||
import com.snow.common.enums.SyncLogType;
|
||||
import com.snow.common.enums.DingTalkLogType;
|
||||
import com.snow.common.exception.SyncDataException;
|
||||
import com.snow.common.utils.PatternUtils;
|
||||
import com.snow.common.utils.spring.SpringUtils;
|
||||
import com.snow.dingtalk.common.BaseConstantUrl;
|
||||
import com.snow.dingtalk.common.BaseService;
|
||||
|
@ -29,8 +27,6 @@ import com.snow.dingtalk.model.request.WorkrecordGetbyuseridRequest;
|
|||
import com.snow.dingtalk.service.UserService;
|
||||
import com.snow.dingtalk.service.WorkRecodeService;
|
||||
import com.snow.framework.util.ShiroUtils;
|
||||
import com.snow.framework.web.domain.common.SysSendMessageDTO;
|
||||
import com.snow.system.domain.SysMessageTemplate;
|
||||
import com.snow.system.domain.SysOaTask;
|
||||
import com.snow.system.domain.SysOaTaskDistribute;
|
||||
import com.snow.system.service.ISysMessageTemplateService;
|
||||
|
@ -38,7 +34,6 @@ import com.snow.system.service.ISysUserService;
|
|||
import com.snow.system.service.impl.SysConfigServiceImpl;
|
||||
import com.taobao.api.ApiException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
@ -71,7 +66,7 @@ public class WorkRecodeServiceImpl extends BaseService implements WorkRecodeServ
|
|||
* @param workrecordAddRequest
|
||||
* @return
|
||||
*/
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.WORK_RECODE_CREATE,dingTalkUrl=BaseConstantUrl.WORK_RECORD_CREATE)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.WORK_RECODE_CREATE,dingTalkUrl=BaseConstantUrl.WORK_RECORD_CREATE)
|
||||
@Override
|
||||
public String create(WorkrecordAddRequest workrecordAddRequest){
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.WORK_RECORD_CREATE);
|
||||
|
@ -217,7 +212,7 @@ public class WorkRecodeServiceImpl extends BaseService implements WorkRecodeServ
|
|||
* @return
|
||||
*/
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.GET_WORK_RECORD_USER,dingTalkUrl=BaseConstantUrl.GET_WORK_RECORD_USER_ID_)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.GET_WORK_RECORD_USER,dingTalkUrl=BaseConstantUrl.GET_WORK_RECORD_USER_ID_)
|
||||
public OapiWorkrecordGetbyuseridResponse.PageResult getWorkRecordByUserId(WorkrecordGetbyuseridRequest workrecordGetbyuseridRequest){
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.GET_WORK_RECORD_USER_ID_);
|
||||
OapiWorkrecordGetbyuseridRequest req = new OapiWorkrecordGetbyuseridRequest();
|
||||
|
@ -245,7 +240,7 @@ public class WorkRecodeServiceImpl extends BaseService implements WorkRecodeServ
|
|||
* @return
|
||||
*/
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.WORK_RECORD_UPDATE,dingTalkUrl=BaseConstantUrl.WORK_RECORD_UPDATE)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.WORK_RECORD_UPDATE,dingTalkUrl=BaseConstantUrl.WORK_RECORD_UPDATE)
|
||||
public Boolean update(String userId,String recordId){
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.WORK_RECORD_UPDATE);
|
||||
OapiWorkrecordUpdateRequest req = new OapiWorkrecordUpdateRequest();
|
||||
|
@ -266,55 +261,6 @@ public class WorkRecodeServiceImpl extends BaseService implements WorkRecodeServ
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.ASYNCSEND_V2,dingTalkUrl=BaseConstantUrl.ASYNCSEND_V2,syncLogTpye=SyncLogType.SYNC_SYS)
|
||||
public Long sendCommonMessage(SysSendMessageDTO sysSendMessageDTO) {
|
||||
SysMessageTemplate sysMessageTemplate= sysMessageTemplateService.getSysMessageTemplateByCode(sysSendMessageDTO.getTemplateByCode());
|
||||
DingTalkClient client = new DefaultDingTalkClient(BaseConstantUrl.ASYNCSEND_V2);
|
||||
OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request();
|
||||
|
||||
request.setAgentId(Long.parseLong(isysConfigService.selectConfigByKey(Constants.AGENT_ID)));
|
||||
|
||||
String userIdList = StringUtils.join(sysSendMessageDTO.getReceiverSet(), ",");
|
||||
request.setUseridList(userIdList);
|
||||
request.setToAllUser(sysSendMessageDTO.getToAllUser());
|
||||
|
||||
OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg();
|
||||
|
||||
if(sysSendMessageDTO.getDingTalkMessageType().equals(DingTalkMessageType.LINK)){
|
||||
msg.setMsgtype(DingTalkMessageType.LINK.getInfo());
|
||||
msg.setLink(new OapiMessageCorpconversationAsyncsendV2Request.Link());
|
||||
msg.getLink().setTitle(sysMessageTemplate.getTemplateName());
|
||||
String content= PatternUtils.builderTemplateBody(sysSendMessageDTO.getParamMap(), sysMessageTemplate.getTemplateBody());
|
||||
msg.getLink().setText(content);
|
||||
msg.getLink().setMessageUrl(sysSendMessageDTO.getFilePath());
|
||||
msg.getLink().setPicUrl(sysSendMessageDTO.getFilePath());
|
||||
}
|
||||
|
||||
|
||||
if(sysSendMessageDTO.getDingTalkMessageType().equals(DingTalkMessageType.TEXT)){
|
||||
msg.setMsgtype(DingTalkMessageType.TEXT.getInfo());
|
||||
msg.setText(new OapiMessageCorpconversationAsyncsendV2Request.Text());
|
||||
String content= PatternUtils.builderTemplateBody(sysSendMessageDTO.getParamMap(), sysMessageTemplate.getTemplateBody());
|
||||
msg.getText().setContent(content);
|
||||
|
||||
}
|
||||
|
||||
request.setMsg(msg);
|
||||
OapiMessageCorpconversationAsyncsendV2Response rsp = null;
|
||||
try {
|
||||
rsp = client.execute(request, getDingTalkToken());
|
||||
if(rsp.getErrcode()==0){
|
||||
return rsp.getTaskId();
|
||||
}else {
|
||||
throw new SyncDataException(JSON.toJSONString(request),rsp.getErrmsg());
|
||||
}
|
||||
|
||||
} catch (ApiException e) {
|
||||
log.error("钉钉workRecordAddRequest异常:{}",e.getErrMsg());
|
||||
throw new SyncDataException(JSON.toJSONString(request),e.getErrMsg());
|
||||
}
|
||||
}
|
||||
|
||||
public Client createTodoClient(){
|
||||
Config config = new Config();
|
||||
|
|
|
@ -6,6 +6,7 @@ import com.dingtalk.api.response.OapiProcessinstanceGetResponse;
|
|||
import com.snow.common.annotation.SyncLog;
|
||||
import com.snow.common.enums.DingFlowTaskType;
|
||||
import com.snow.common.enums.DingTalkListenerType;
|
||||
import com.snow.common.enums.DingTalkLogType;
|
||||
import com.snow.common.enums.SyncLogType;
|
||||
import com.snow.common.utils.StringUtils;
|
||||
import com.snow.common.utils.spring.SpringUtils;
|
||||
|
@ -48,7 +49,6 @@ public class SyncFlowService implements ISyncSysInfo {
|
|||
private SysDingHiTaskServiceImpl sysDingHiTaskService=SpringUtils.getBean(SysDingHiTaskServiceImpl.class);
|
||||
|
||||
@Override
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.BPMS_INSTANCE_CHANGE,syncLogTpye = SyncLogType.SYNC_SYS)
|
||||
public JSONObject SyncSysInfo(DingTalkListenerType dingTalkListenerType, JSONObject jsonObject) {
|
||||
|
||||
Integer code = dingTalkListenerType.getCode();
|
||||
|
|
|
@ -5,6 +5,7 @@ import com.dingtalk.api.response.OapiV2DepartmentGetResponse;
|
|||
import com.snow.common.annotation.SyncLog;
|
||||
import com.snow.common.constant.Constants;
|
||||
import com.snow.common.enums.DingTalkListenerType;
|
||||
import com.snow.common.enums.DingTalkLogType;
|
||||
import com.snow.common.enums.SyncLogType;
|
||||
import com.snow.common.exception.SyncDataException;
|
||||
import com.snow.common.utils.StringUtils;
|
||||
|
@ -58,7 +59,7 @@ public class SyncSysDepartmentService implements ISyncSysInfo {
|
|||
* 根据订订新增部门数据
|
||||
* @param jsonObject
|
||||
*/
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.DEPARTMENT_CREATE,syncLogTpye = SyncLogType.SYNC_SYS)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.DEPARTMENT_CREATE,syncLogTpye = SyncLogType.SYNC_SYS)
|
||||
public void insertDepartment(JSONObject jsonObject){
|
||||
try {
|
||||
List<Long> deptId = jsonObject.getJSONArray("DeptId").toJavaList(Long.class);
|
||||
|
@ -90,7 +91,7 @@ public class SyncSysDepartmentService implements ISyncSysInfo {
|
|||
/**
|
||||
* 根据订订修改部门数据
|
||||
*/
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.DEPARTMENT_UPDATE,syncLogTpye = SyncLogType.SYNC_SYS)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.DEPARTMENT_UPDATE,syncLogTpye = SyncLogType.SYNC_SYS)
|
||||
public void updateDepartment(JSONObject jsonObject){
|
||||
try {
|
||||
List<Long> deptId = jsonObject.getJSONArray("DeptId").toJavaList(Long.class);
|
||||
|
@ -117,7 +118,7 @@ public class SyncSysDepartmentService implements ISyncSysInfo {
|
|||
/**
|
||||
* 根据订订删除部门数据
|
||||
*/
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.DEPARTMENT_DELETED,syncLogTpye = SyncLogType.SYNC_SYS)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.DEPARTMENT_DELETED,syncLogTpye = SyncLogType.SYNC_SYS)
|
||||
public void deleteDepartment(JSONObject jsonObject){
|
||||
try {
|
||||
List<Long> deptId = jsonObject.getJSONArray("DeptId").toJavaList(Long.class);
|
||||
|
|
|
@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
|
|||
import com.dingtalk.api.response.OapiV2UserGetResponse;
|
||||
import com.snow.common.annotation.SyncLog;
|
||||
import com.snow.common.enums.DingTalkListenerType;
|
||||
import com.snow.common.enums.DingTalkLogType;
|
||||
import com.snow.common.enums.SyncLogType;
|
||||
import com.snow.common.utils.spring.SpringUtils;
|
||||
import com.snow.dingtalk.service.UserService;
|
||||
|
@ -50,7 +51,7 @@ public class SyncSysUserService implements ISyncSysInfo {
|
|||
return null;
|
||||
}
|
||||
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.USER_CREATE,syncLogTpye = SyncLogType.SYNC_SYS)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.USER_CREATE,syncLogTpye = SyncLogType.SYNC_SYS)
|
||||
private void insertUser(JSONObject jsonObject){
|
||||
List<String> userIdList = jsonObject.getJSONArray("UserId").toJavaList(String.class);
|
||||
for(String userId:userIdList){
|
||||
|
@ -67,7 +68,7 @@ public class SyncSysUserService implements ISyncSysInfo {
|
|||
|
||||
}
|
||||
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.USER_UPDATE,syncLogTpye = SyncLogType.SYNC_SYS)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.USER_UPDATE,syncLogTpye = SyncLogType.SYNC_SYS)
|
||||
private void updateUser(JSONObject jsonObject){
|
||||
List<String> userIdList = jsonObject.getJSONArray("UserId").toJavaList(String.class);
|
||||
for(String userId:userIdList){
|
||||
|
@ -79,7 +80,7 @@ public class SyncSysUserService implements ISyncSysInfo {
|
|||
}
|
||||
}
|
||||
|
||||
@SyncLog(dingTalkListenerType = DingTalkListenerType.USER_DELETE,syncLogTpye = SyncLogType.SYNC_SYS)
|
||||
@SyncLog(dingTalkLogType = DingTalkLogType.USER_DELETE,syncLogTpye = SyncLogType.SYNC_SYS)
|
||||
private void deleteUser(JSONObject jsonObject){
|
||||
List<String> userIdList = jsonObject.getJSONArray("UserId").toJavaList(String.class);
|
||||
for(String userId:userIdList){
|
||||
|
|
|
@ -6,9 +6,11 @@ import cn.hutool.core.thread.ExecutorBuilder;
|
|||
import com.alibaba.fastjson.JSON;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.snow.common.constant.CacheConstants;
|
||||
import com.snow.common.constant.MessageConstants;
|
||||
import com.snow.common.enums.DingTalkListenerType;
|
||||
import com.snow.common.enums.DingTalkMessageType;
|
||||
import com.snow.common.utils.CacheUtils;
|
||||
import com.snow.dingtalk.model.request.WorkrecordAddRequest;
|
||||
import com.snow.flowable.common.SpringContextUtil;
|
||||
import com.snow.flowable.common.enums.FlowDefEnum;
|
||||
|
@ -16,7 +18,7 @@ import com.snow.flowable.listener.AbstractEventListener;
|
|||
import com.snow.flowable.service.FlowableService;
|
||||
import com.snow.flowable.service.impl.FlowableUserServiceImpl;
|
||||
import com.snow.framework.web.domain.common.SysSendMessageDTO;
|
||||
import com.snow.framework.web.service.MailService;
|
||||
import com.snow.framework.web.service.MailMessageService;
|
||||
import com.snow.framework.web.service.NewsTriggerService;
|
||||
import com.snow.system.domain.SysUser;
|
||||
import com.snow.system.event.SyncEvent;
|
||||
|
@ -162,7 +164,7 @@ public class SendMessageEventLister extends AbstractEventListener {
|
|||
String userId = String.valueOf(t.getUserId());
|
||||
if (!StringUtils.isEmpty(userId)) {
|
||||
WorkrecordAddRequest workrecordAddRequest = initWorkRecordAddRequest(userId, event);
|
||||
SyncEvent syncEventGroup = new SyncEvent(workrecordAddRequest, DingTalkListenerType.WORK_RECODE_CREATE);
|
||||
SyncEvent<WorkrecordAddRequest> syncEventGroup = new SyncEvent(workrecordAddRequest, DingTalkListenerType.WORK_RECODE_CREATE);
|
||||
applicationContext.publishEvent(syncEventGroup);
|
||||
}
|
||||
});
|
||||
|
@ -179,7 +181,7 @@ public class SendMessageEventLister extends AbstractEventListener {
|
|||
* @param event
|
||||
*/
|
||||
public void sendProcessStartedEmailMessage(FlowableProcessStartedEvent event) {
|
||||
MailService mailService = (MailService) SpringContextUtil.getBean(MailService.class);
|
||||
MailMessageService mailService = (MailMessageService) SpringContextUtil.getBean(MailMessageService.class);
|
||||
ThreadPoolExecutor executor = ExecutorBuilder.create().setCorePoolSize(5)
|
||||
.setMaxPoolSize(10)
|
||||
.setWorkQueue(new LinkedBlockingQueue<>(100))
|
||||
|
@ -213,7 +215,7 @@ public class SendMessageEventLister extends AbstractEventListener {
|
|||
public void sendTaskCreateEmailMessage(FlowableEngineEntityEvent event) {
|
||||
|
||||
FlowableService flowableService = (FlowableService) SpringContextUtil.getBean(FlowableService.class);
|
||||
MailService mailService = (MailService) SpringContextUtil.getBean(MailService.class);
|
||||
MailMessageService mailService = (MailMessageService) SpringContextUtil.getBean(MailMessageService.class);
|
||||
ProcessInstance processInstance = flowableService.getProcessInstanceById(event.getProcessInstanceId());
|
||||
ProcessDefinition processDefinition = getProcessDefinition(event.getProcessDefinitionId());
|
||||
//根据任务ID获取任务获选人
|
||||
|
@ -233,7 +235,7 @@ public class SendMessageEventLister extends AbstractEventListener {
|
|||
map.put("toUser", t.getUserName());
|
||||
map.put("startUser", getUserInfo(processInstance.getStartUserId()).getUserName());
|
||||
map.put("processInstance", processDefinition.getName());
|
||||
map.put("url", "http://localhost/flow/findTasksByUserId");
|
||||
map.put("url", CacheUtils.getSysConfig(CacheConstants.SYS_DOMAIN,"http://localhost")+"/flow/findTasksByUserId");
|
||||
map.put("datetime", DateUtil.formatDateTime(new Date()));
|
||||
SysSendMessageDTO sysSendMessageDTO = SysSendMessageDTO.builder().templateByCode(MessageConstants.TASK_CREATED_CODE)
|
||||
.receiver(t.getEmail())
|
||||
|
@ -269,7 +271,7 @@ public class SendMessageEventLister extends AbstractEventListener {
|
|||
map.put("toUser", getUserInfo(processInstance.getStartUserId()).getUserName());
|
||||
map.put("starttime", DateUtil.formatDateTime(processInstance.getStartTime()));
|
||||
map.put("processInstance", processInstance.getProcessDefinitionName());
|
||||
map.put("url", "http://localhost/flow/getMyHistoricProcessInstance");
|
||||
map.put("url", CacheUtils.getSysConfig(CacheConstants.SYS_DOMAIN,"http://localhost")+"/flow/getMyHistoricProcessInstance");
|
||||
map.put("datetime", DateUtil.formatDateTime(new Date()));
|
||||
|
||||
SysSendMessageDTO sysSendMessageDTO = SysSendMessageDTO.builder().templateByCode(MessageConstants.PROCESS_STARTED_CODE)
|
||||
|
@ -290,7 +292,7 @@ public class SendMessageEventLister extends AbstractEventListener {
|
|||
* @param event
|
||||
*/
|
||||
public void sendProcessCompletedEmailMessage(FlowableEngineEntityEvent event) {
|
||||
MailService mailService = (MailService) SpringContextUtil.getBean(MailService.class);
|
||||
MailMessageService mailService = (MailMessageService) SpringContextUtil.getBean(MailMessageService.class);
|
||||
ThreadPoolExecutor executor = ExecutorBuilder.create().setCorePoolSize(5)
|
||||
.setMaxPoolSize(10)
|
||||
.setWorkQueue(new LinkedBlockingQueue<>(100))
|
||||
|
@ -350,7 +352,7 @@ public class SendMessageEventLister extends AbstractEventListener {
|
|||
map.put("processInstance", hisProcessInstance.getProcessDefinitionName());
|
||||
String spendTime = DateUtil.formatBetween(hisProcessInstance.getStartTime(), new Date(), BetweenFormater.Level.SECOND);
|
||||
map.put("time", spendTime);
|
||||
map.put("url", "http://localhost/flow/getMyHistoricProcessInstance");
|
||||
map.put("url", CacheUtils.getSysConfig(CacheConstants.SYS_DOMAIN,"http://localhost")+"/flow/getMyHistoricProcessInstance");
|
||||
map.put("datetime", DateUtil.formatDateTime(new Date()));
|
||||
return map;
|
||||
}
|
||||
|
|
|
@ -48,9 +48,9 @@ public class CustomerStartListener extends AbstractExecutionListener<SysOaCustom
|
|||
}else {
|
||||
SysDept sysDept = sysDeptService.selectDeptById(sysUser.getDeptId());
|
||||
Long parentId = sysDept.getParentId();
|
||||
SysUser sysUser1=new SysUser();
|
||||
sysUser1.setDeptId(parentId);
|
||||
List<SysUser> sysUsers = sysUserService.selectUserList(sysUser1);
|
||||
SysUser newSysUser=new SysUser();
|
||||
newSysUser.setDeptId(parentId);
|
||||
List<SysUser> sysUsers = sysUserService.selectUserList(newSysUser);
|
||||
if(CollectionUtils.isEmpty(sysUsers)){
|
||||
setVariable("customerManager",1);
|
||||
}else {
|
||||
|
|
|
@ -34,7 +34,6 @@ public class JsonStringArrayTypeHandler extends BaseTypeHandler<String[]> {
|
|||
*/
|
||||
@Override
|
||||
public void setNonNullParameter(PreparedStatement preparedStatement, int i, String[] parameter, JdbcType jdbcType) throws SQLException {
|
||||
log.info("存入数据库的数组数据:{}",toJson(parameter));
|
||||
preparedStatement.setString(i,toJson(parameter));
|
||||
}
|
||||
|
||||
|
@ -46,13 +45,11 @@ public class JsonStringArrayTypeHandler extends BaseTypeHandler<String[]> {
|
|||
|
||||
@Override
|
||||
public String[] getNullableResult(ResultSet resultSet, int columnIndex) throws SQLException {
|
||||
log.info("读取数据库的数据columnIndex:{}",resultSet.getString(columnIndex));
|
||||
return this.toObject(resultSet.getString(columnIndex));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getNullableResult(CallableStatement callableStatement, int columnIndex) throws SQLException {
|
||||
log.info("读取数据库的数据callableStatement:{}",callableStatement.getString(columnIndex));
|
||||
return this.toObject(callableStatement.getString(columnIndex));
|
||||
}
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ public class FreemarkUtils {
|
|||
template.process(model, stringWriter);
|
||||
return stringWriter.toString();
|
||||
} catch (Exception e) {
|
||||
log.info("构建模板消息错误",e);
|
||||
log.info("@@构建模板消息错误",e);
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +1,11 @@
|
|||
package com.snow.framework.web.service;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.snow.common.utils.PatternUtils;
|
||||
import com.snow.common.utils.StringUtils;
|
||||
import com.snow.framework.util.FreemarkUtils;
|
||||
import com.snow.framework.web.domain.common.SysSendEmailDTO;
|
||||
import com.snow.framework.web.domain.common.SysSendMessageDTO;
|
||||
import com.snow.system.domain.SysMessageTemplate;
|
||||
import com.snow.system.domain.SysOaEmail;
|
||||
import com.snow.system.service.ISysMessageTemplateService;
|
||||
import com.snow.system.service.impl.SysOaEmailServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
@ -34,7 +32,7 @@ import java.util.Set;
|
|||
**/
|
||||
@Component
|
||||
@Slf4j
|
||||
public class MailService {
|
||||
public class MailMessageService {
|
||||
|
||||
@Resource
|
||||
private JavaMailSender mailSender;
|
|
@ -44,6 +44,7 @@ public class SysUser extends BaseEntity
|
|||
|
||||
/** 用户名称 */
|
||||
@Excel(name = "用户名称")
|
||||
@Sensitive(type = SensitiveTypeEnum.CHINESE_NAME)
|
||||
private String userName;
|
||||
|
||||
/** 用户类型 */
|
||||
|
|
|
@ -101,3 +101,6 @@ ALTER TABLE `finance_alipay_flow`
|
|||
|
||||
INSERT INTO `sys_dict_type`(`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (134, '账单真实收支类型', 'finance_real_sz_type', '0', 'admin', NOW(), '', NULL, '账单真实收支类型');
|
||||
INSERT INTO `sys_dict_type`(`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (135, '财务用途', 'real_finance_type', '0', 'admin', NOW(), '', NULL, '财务用途');
|
||||
|
||||
|
||||
INSERT INTO `sys_config`(`config_name`, `config_key`, `config_value`, `config_type`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( '系统网址', 'sys.website.domain', 'http://dingflow.xyz:9527', 'Y', 'admin',NOW(), '', NULL, '系统网址');
|
Loading…
Reference in New Issue