新增脱敏

This commit is contained in:
jinqiming 2021-11-12 16:39:48 +08:00
parent 4cae415b9b
commit 0b90dc95a3
33 changed files with 436 additions and 239 deletions

View File

@ -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));
}

View File

@ -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();
/**

View File

@ -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";
}

View File

@ -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")
;

View File

@ -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;
}
}

View File

@ -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;

View File

@ -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缓存
*

View File

@ -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);

View File

@ -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());

View File

@ -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";
/**
* 创建公告

View File

@ -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);
}
}

View File

@ -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);
}
}
}

View File

@ -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);
}

View File

@ -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;
}
}

View File

@ -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);
}

View File

@ -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();

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -204,10 +204,6 @@ public class DingOfficialFlowServiceImpl extends BaseService implements DingOffi
}
/*@Override
public void addProcessInstanceComment() {
}*/
@Override
public OapiProcessinstanceGetResponse.ProcessInstanceTopVo getProcessInstanceDetail(String processInstanceId) {

View File

@ -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();

View File

@ -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());
}
}
}

View File

@ -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 {

View File

@ -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();

View File

@ -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();

View File

@ -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);

View File

@ -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){

View File

@ -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;
}

View File

@ -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 {

View File

@ -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));
}

View File

@ -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);
}
}

View File

@ -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;

View File

@ -44,6 +44,7 @@ public class SysUser extends BaseEntity
/** 用户名称 */
@Excel(name = "用户名称")
@Sensitive(type = SensitiveTypeEnum.CHINESE_NAME)
private String userName;
/** 用户类型 */

View File

@ -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, '系统网址');