diff --git a/o2server/configSample/welink.json b/o2server/configSample/welink.json index 3e659e30cc556d400beb971e1c80f5fc90f59a67..0d0bba2eaae67de3725955e29df016ea7d18caba 100644 --- a/o2server/configSample/welink.json +++ b/o2server/configSample/welink.json @@ -4,5 +4,17 @@ "clientSecret": "", "syncCron": "10 0/10 * * * ?", "forceSyncCron": "10 45 8,12 * * ?", - "oapiAddress": "https://open.welink.huaweicloud.com/api" + "oapiAddress": "https://open.welink.huaweicloud.com/api", + "messageEnable": false, + "workUrl": "", + "messageRedirectPortal": "", + "###enable": "是否启用.###", + "###syncCron": "拉入同步cron,默认每10分钟同步一次.###", + "###forceSyncCron": "强制拉入同步cron,默认在每天的8点和12点强制进行同步.###", + "###oapiAddress": "api服务器地址###", + "###clientId": "华为WeLink轻应用的client_id###", + "###clientSecret": "华为WeLink轻应用的client_secret###", + "###messageEnable": "推送消息到华为WeLink###", + "###workUrl": "华为WeLink消息打开工作的url地址,如:http://dev.o2oa.net/x_desktop/###", + "###messageRedirectPortal": "华为WeLink消息处理完成后跳转到特定的门户页面的Id###" } \ No newline at end of file diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Messages.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Messages.java index 653367d7d116e80231b72b73c7b752f26112ddfc..e79dd5f0c93f22fd7783b4186415ad855b171ad6 100644 --- a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Messages.java +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Messages.java @@ -28,51 +28,51 @@ public class Messages extends ConcurrentSkipListMap { o.put(MessageConnector.TYPE_ATTACHMENT_SHARE, new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS, MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING, - MessageConnector.CONSUME_QIYEWEIXIN)); + MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK)); o.put(MessageConnector.TYPE_ATTACHMENT_EDITOR, new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS, MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING, - MessageConnector.CONSUME_QIYEWEIXIN)); + MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK)); o.put(MessageConnector.TYPE_ATTACHMENT_SHARECANCEL, new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS, MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING, - MessageConnector.CONSUME_QIYEWEIXIN)); + MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK)); o.put(MessageConnector.TYPE_ATTACHMENT_EDITORCANCEL, new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS, MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING, - MessageConnector.CONSUME_QIYEWEIXIN)); + MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK)); o.put(MessageConnector.TYPE_ATTACHMENT_EDITORMODIFY, new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS, MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING, - MessageConnector.CONSUME_QIYEWEIXIN)); + MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK)); /* 文件通知结束 */ /* 会议通知 */ o.put(MessageConnector.TYPE_MEETING_INVITE, new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS, MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING, - MessageConnector.CONSUME_QIYEWEIXIN)); + MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK)); o.put(MessageConnector.TYPE_MEETING_DELETE, new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS, MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING, - MessageConnector.CONSUME_QIYEWEIXIN)); + MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK)); /* 会议通知结束 */ /* 待办已办通知 */ o.put(MessageConnector.TYPE_TASK_CREATE, new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS, MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING, - MessageConnector.CONSUME_QIYEWEIXIN)); + MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK)); /* 待办提醒通知 */ o.put(MessageConnector.TYPE_TASK_PRESS, new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS, MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING, - MessageConnector.CONSUME_QIYEWEIXIN)); + MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK)); o.put(MessageConnector.TYPE_TASK_DELETE, new Message()); @@ -85,7 +85,7 @@ public class Messages extends ConcurrentSkipListMap { o.put(MessageConnector.TYPE_READ_CREATE, new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS, MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING, - MessageConnector.CONSUME_QIYEWEIXIN)); + MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK)); o.put(MessageConnector.TYPE_READ_DELETE, new Message()); @@ -98,7 +98,7 @@ public class Messages extends ConcurrentSkipListMap { o.put(MessageConnector.TYPE_CALENDAR_ALARM, new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS, MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING, - MessageConnector.CONSUME_QIYEWEIXIN)); + MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK)); /* 文档发布消息通知 */ // o.put(MessageConnector.TYPE_CMS_PUBLISH, diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/WeLink.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/WeLink.java index be1fae72b257ad0917ba4a1be1ecc9c404c6fed6..711e28be27b3bb5e5a4968e6edf2fc646e8ae8a8 100644 --- a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/WeLink.java +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/WeLink.java @@ -34,6 +34,15 @@ public class WeLink extends ConfigObject { @FieldDescribe("WeLink api服务器地址") private String oapiAddress; + @FieldDescribe("是否启用消息推送") + private Boolean messageEnable; + + @FieldDescribe("WeLink消息打开工作的url地址,如:http://dev.o2oa.net/x_desktop/") + private String workUrl = ""; + + @FieldDescribe("WeLink消息处理完成后跳转到特定的门户页面的Id") + private String messageRedirectPortal = ""; + public static WeLink defaultInstance() { @@ -46,6 +55,9 @@ public class WeLink extends ConfigObject { public static final String default_syncCron = "10 0/10 * * * ?"; public static final String default_forceSyncCron = "10 45 8,12 * * ?"; public static final String default_oapiAddress = "https://open.welink.huaweicloud.com/api"; + public static final Boolean default_messageEnable = false; + public static final String default_workUrl = ""; + public static final String default_messageRedirectPortal = ""; public WeLink() { @@ -55,6 +67,9 @@ public class WeLink extends ConfigObject { this.syncCron = default_syncCron; this.forceSyncCron = default_forceSyncCron; this.oapiAddress = default_oapiAddress; + this.messageEnable = default_messageEnable; + this.workUrl = default_workUrl; + this.messageRedirectPortal = default_messageRedirectPortal; } public static String WeLink_Auth_Head_Key = "x-wlk-Authorization"; @@ -198,4 +213,28 @@ public class WeLink extends ConfigObject { public void setOapiAddress(String oapiAddress) { this.oapiAddress = oapiAddress; } + + public Boolean getMessageEnable() { + return BooleanUtils.isTrue(this.messageEnable); + } + + public void setMessageEnable(Boolean messageEnable) { + this.messageEnable = messageEnable; + } + + public String getWorkUrl() { + return StringUtils.isEmpty(this.workUrl) ? default_workUrl : this.workUrl; + } + + public void setWorkUrl(String workUrl) { + this.workUrl = workUrl; + } + + public String getMessageRedirectPortal() { + return StringUtils.isEmpty(this.messageRedirectPortal) ? default_messageRedirectPortal : this.messageRedirectPortal; + } + + public void setMessageRedirectPortal(String messageRedirectPortal) { + this.messageRedirectPortal = messageRedirectPortal; + } } diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/message/MessageConnector.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/message/MessageConnector.java index 5e6ccdf4900b2f2cf724bf27b91fc5e0a98c34c7..0eb0c8249846cb1f9a4445dcd3ca0a526b7fc7f6 100644 --- a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/message/MessageConnector.java +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/message/MessageConnector.java @@ -129,6 +129,8 @@ public class MessageConnector { public static final String CONSUME_DINGDING = "dingding"; + public static final String CONSUME_WELINK = "welink"; + public static final String CONSUME_ZHENGWUDINGDING = "zhengwuDingding"; public static final String CONSUME_QIYEWEIXIN = "qiyeweixin"; diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/message/WeLinkMessage.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/message/WeLinkMessage.java new file mode 100644 index 0000000000000000000000000000000000000000..99099c9b2765a0e18933028b97682e52177e5adf --- /dev/null +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/message/WeLinkMessage.java @@ -0,0 +1,96 @@ +package com.x.base.core.project.message; + +import com.x.base.core.project.gson.GsonPropertyObject; + +import java.util.List; + +/** + * Created by fancyLou on 2020-07-29. + * Copyright © 2020 O2. All rights reserved. + */ +public class WeLinkMessage extends GsonPropertyObject { + //{ + // "msgRange": 0,0:按用户推送 必填 + // "toUserList": ["john@welink", "john@1234"], 用户列表 必填 + // "msgTitle": "{"EN": "hello world", "CN": "你好"}", //标题 必填 只有中文就直接写入标题字符串就行不需要json + // "msgContent": "{"CN": "欢迎使用", "EN":"Welcome"}", //消息内容 必填 只有中文就直接写入标题字符串就行不需要json + // "urlType": "html", //这两个参数是消息超链接用的 但是目前只支持小程序 不支持轻应用 + // "urlPath": "h5://demo.com", + // "msgOwner": "流程平台", 消息所有者 必填 + // "createTime": "1487289600000" 创建时间 + //} + + + private String msgRange; + private List toUserList; + private String msgTitle; + private String msgContent; + private String urlType; + private String urlPath; + private String msgOwner; + private String createTime; + + public String getMsgRange() { + return msgRange; + } + + public void setMsgRange(String msgRange) { + this.msgRange = msgRange; + } + + public List getToUserList() { + return toUserList; + } + + public void setToUserList(List toUserList) { + this.toUserList = toUserList; + } + + public String getMsgTitle() { + return msgTitle; + } + + public void setMsgTitle(String msgTitle) { + this.msgTitle = msgTitle; + } + + public String getMsgContent() { + return msgContent; + } + + public void setMsgContent(String msgContent) { + this.msgContent = msgContent; + } + + public String getUrlType() { + return urlType; + } + + public void setUrlType(String urlType) { + this.urlType = urlType; + } + + public String getUrlPath() { + return urlPath; + } + + public void setUrlPath(String urlPath) { + this.urlPath = urlPath; + } + + public String getMsgOwner() { + return msgOwner; + } + + public void setMsgOwner(String msgOwner) { + this.msgOwner = msgOwner; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } +} diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/organization/Person.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/organization/Person.java index b360bdfd157148fb1ee82fe8b90800d034f5ecfb..fc71c26ff7b98ec6817eb67ee934b853078e043e 100644 --- a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/organization/Person.java +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/organization/Person.java @@ -48,6 +48,16 @@ public class Person extends GsonPropertyObject { private String dingdingId; @FieldDescribe("政务钉钉Id") private String zhengwuDingdingId; + @FieldDescribe("华为WeLink id") + private String weLinkId; + + public String getWeLinkId() { + return weLinkId; + } + + public void setWeLinkId(String weLinkId) { + this.weLinkId = weLinkId; + } public String getName() { return name; diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/organization/Unit.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/organization/Unit.java index 1f51d5bd2e6e66df22ff81c781fb2ca371bd3fb6..95abc0ab5a3cfd300a4eb08eb17eb8c17808b196 100644 --- a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/organization/Unit.java +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/organization/Unit.java @@ -33,6 +33,16 @@ public class Unit extends GsonPropertyObject { private String dingdingId; @FieldDescribe("政务钉钉Id") private String zhengwuDingdingId; + @FieldDescribe("华为WeLink Id") + private String weLinkId; + + public String getWeLinkId() { + return weLinkId; + } + + public void setWeLinkId(String weLinkId) { + this.weLinkId = weLinkId; + } public String getName() { return name; diff --git a/o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/ExceptionWeLinkMessage.java b/o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/ExceptionWeLinkMessage.java new file mode 100644 index 0000000000000000000000000000000000000000..8199dd3bbe7172ea02cd20cdfa8c174ab93899f1 --- /dev/null +++ b/o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/ExceptionWeLinkMessage.java @@ -0,0 +1,12 @@ +package com.x.message.assemble.communicate; + +import com.x.base.core.project.exception.PromptException; + +class ExceptionWeLinkMessage extends PromptException { + + private static final long serialVersionUID = 4132300948670472899L; + + ExceptionWeLinkMessage(String retCode, String retMessage) { + super("发送华为WeLink消息失败,错误代码:{},错误消息:{}.", retCode, retMessage); + } +} diff --git a/o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/ThisApplication.java b/o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/ThisApplication.java index d0b7f5149c56506de7b5a838e890457082839c30..e42452dad09bdd64e98fc7518638326bff8ba918 100644 --- a/o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/ThisApplication.java +++ b/o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/ThisApplication.java @@ -24,6 +24,8 @@ public class ThisApplication { public static DingdingConsumeQueue dingdingConsumeQueue = new DingdingConsumeQueue(); + public static WeLinkConsumeQueue weLinkConsumeQueue = new WeLinkConsumeQueue(); + public static PmsInnerConsumeQueue pmsInnerConsumeQueue = new PmsInnerConsumeQueue(); public static Context context() { @@ -59,6 +61,9 @@ public class ThisApplication { if (BooleanUtils.isTrue(Config.pushConfig().getEnable())) { pmsInnerConsumeQueue.start(); } + if (Config.weLink().getEnable() && Config.weLink().getMessageEnable()) { + weLinkConsumeQueue.start(); + } MessageConnector.start(context()); @@ -76,6 +81,7 @@ public class ThisApplication { zhengwuDingdingConsumeQueue.stop(); dingdingConsumeQueue.stop(); pmsInnerConsumeQueue.stop(); + weLinkConsumeQueue.stop(); MessageConnector.stop(); } catch (Exception e) { e.printStackTrace(); diff --git a/o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/WeLinkConsumeQueue.java b/o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/WeLinkConsumeQueue.java new file mode 100644 index 0000000000000000000000000000000000000000..011f73013fc3a12c9a12ca521941be539c7bb6c4 --- /dev/null +++ b/o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/WeLinkConsumeQueue.java @@ -0,0 +1,231 @@ +package com.x.message.assemble.communicate; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.x.base.core.container.EntityManagerContainer; +import com.x.base.core.container.factory.EntityManagerContainerFactory; +import com.x.base.core.project.bean.NameValuePair; +import com.x.base.core.project.config.Config; +import com.x.base.core.project.config.WeLink; +import com.x.base.core.project.connection.HttpConnection; +import com.x.base.core.project.logger.Logger; +import com.x.base.core.project.logger.LoggerFactory; +import com.x.base.core.project.message.MessageConnector; +import com.x.base.core.project.message.WeLinkMessage; +import com.x.base.core.project.queue.AbstractQueue; +import com.x.base.core.project.tools.DefaultCharset; +import com.x.message.core.entity.Message; +import org.apache.commons.lang3.StringUtils; + +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class WeLinkConsumeQueue extends AbstractQueue { + + private static Logger logger = LoggerFactory.getLogger(WeLinkConsumeQueue.class); + + protected void execute(Message message) throws Exception { + + if (Config.weLink().getEnable() && Config.weLink().getMessageEnable()) { + try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { + Business business = new Business(emc); + WeLinkMessage m = new WeLinkMessage(); + List list = new ArrayList<>(); + logger.info("person :" + message.getPerson()); + //todo 这里 Person.getWeLinkId() 获取不到 改用unique 不知道为啥获取不到 + String unique = business.organization().person().getObject(message.getPerson()).getUnique(); + if (StringUtils.isEmpty(unique)) { + logger.error(new ExceptionWeLinkMessage("-1", "没有找到对应welink用户id")); + return; + } + list.add(unique); + m.setToUserList(list); + m.setMsgRange("0"); + //处理消息标题和内容 + if (message.getTitle().contains(":")) { + int i = message.getTitle().indexOf(":"); + m.setMsgTitle(message.getTitle().substring(0, i)); + m.setMsgContent(message.getTitle().substring(i+1)); + }else { + m.setMsgTitle(message.getTitle()); + m.setMsgContent(message.getTitle()); + } + m.setMsgOwner(appOwnerByType(message.getType())); + + Date now = new Date(); + m.setCreateTime(now.getTime()+""); + //是否添加超链接 + if (needTransferLink(message.getType())) { + String workUrl = getDingdingOpenWorkUrl(message.getBody()); + if (workUrl != null && !"".equals(workUrl)) { + m.setUrlType("html"); + m.setUrlPath(workUrl); + } + } + logger.info("welink send body: " + m.toString()); + + String address = Config.weLink().getOapiAddress() + "/messages/v3/send"; + logger.info("welink send url: " + address); + List heads = new ArrayList<>(); + heads.add(new NameValuePair(WeLink.WeLink_Auth_Head_Key, Config.weLink().accessToken())); + WeLinkMessageResp resp = HttpConnection.postAsObject(address, heads, m.toString(), WeLinkMessageResp.class); + if ("0".equals(resp.getCode())) { + ExceptionWeLinkMessage e = new ExceptionWeLinkMessage(resp.getCode(), resp.getMessage()); + logger.error(e); + } else { + Message messageEntityObject = emc.find(message.getId(), Message.class); + if (null != messageEntityObject) { + emc.beginTransaction(Message.class); + message.setConsumed(true); + emc.commit(); + } + } + } + } + } + + + /** + * 生成单点登录和打开工作的地址 + * @param messageBody + * @return + */ + private String getDingdingOpenWorkUrl(String messageBody) { + try { + String work = getWorkIdFromBody(messageBody); + String o2oaUrl = Config.weLink().getWorkUrl(); + if (work == null || "".equals(work) || o2oaUrl == null || "".equals(o2oaUrl)) { + return null; + } + + String workUrl = "workmobilewithaction.html?workid=" + work; + String messageRedirectPortal = Config.weLink().getMessageRedirectPortal(); + if (messageRedirectPortal != null && !"".equals(messageRedirectPortal)) { + String portal = "portalmobile.html?id="+messageRedirectPortal; + portal = URLEncoder.encode(portal, DefaultCharset.name); + workUrl += "&redirectlink=" + portal; + } + workUrl = URLEncoder.encode(workUrl, DefaultCharset.name); + logger.info("o2oa workUrl:"+workUrl); + o2oaUrl = o2oaUrl + "welinksso.html?redirect=" + workUrl; + logger.info("o2oa 地址:"+o2oaUrl); + return o2oaUrl; + }catch (Exception e) { + logger.error(e); + } + + return ""; + } + + /** + * 获取workid + * @param messageBody + * @return + */ + private String getWorkIdFromBody(String messageBody) { + try { + JsonObject object =new JsonParser().parse(messageBody).getAsJsonObject(); + return object.get("work").getAsString(); + } catch (Exception e) { + logger.error(e); + } + return ""; + } + + /** + * 是否需要把钉钉消息转成markdown格式消息 + * 根据是否配置了钉钉工作链接、是否是工作消息(目前只支持工作消息) + * @param messageType 消息类型 判断是否是工作消息 + * @return + */ + private boolean needTransferLink(String messageType) { + try { + String workUrl = Config.weLink().getWorkUrl(); + if (workUrl != null && !"".equals(workUrl) && workMessageTypeList().contains(messageType)) { + return true; + } + } catch (Exception e) { + logger.error(e); + } + return false; + } + + private String appOwnerByType(String messageType) { + if (workMessageTypeList().contains(messageType)) { + return "工作消息"; + }else { + if (messageType.startsWith("meeting_")) { + return "会议消息"; + }else if (messageType.startsWith("attachment_")) { + return "文件消息"; + }else if (messageType.startsWith("calendar_")) { + return "日历消息"; + }else if (messageType.startsWith("cms_")) { + return "信息中心消息"; + }else if (messageType.startsWith("bbs_")) { + return "论坛消息"; + }else { + return "消息"; + } + } + } + + private List workMessageTypeList() { + List list = new ArrayList<>(); + list.add(MessageConnector.TYPE_WORK_TO_WORKCOMPLETED); + list.add(MessageConnector.TYPE_WORK_CREATE); + list.add(MessageConnector.TYPE_WORK_DELETE); + list.add(MessageConnector.TYPE_WORKCOMPLETED_CREATE); + list.add(MessageConnector.TYPE_WORKCOMPLETED_DELETE); + list.add(MessageConnector.TYPE_TASK_TO_TASKCOMPLETED); + list.add(MessageConnector.TYPE_TASK_CREATE); + list.add(MessageConnector.TYPE_TASK_DELETE); + list.add(MessageConnector.TYPE_TASK_URGE); + list.add(MessageConnector.TYPE_TASK_EXPIRE); + list.add(MessageConnector.TYPE_TASK_PRESS); + list.add(MessageConnector.TYPE_TASKCOMPLETED_CREATE); + list.add(MessageConnector.TYPE_TASKCOMPLETED_DELETE); + list.add(MessageConnector.TYPE_READ_TO_READCOMPLETED); + list.add(MessageConnector.TYPE_READ_CREATE); + list.add(MessageConnector.TYPE_READ_DELETE); + list.add(MessageConnector.TYPE_READCOMPLETED_CREATE); + list.add(MessageConnector.TYPE_READCOMPLETED_DELETE); + list.add(MessageConnector.TYPE_REVIEW_CREATE); + list.add(MessageConnector.TYPE_REVIEW_DELETE); + + return list; + } + + public static class WeLinkMessageResp { + + private String code; + private String message; + private List failedUserId; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public List getFailedUserId() { + return failedUserId; + } + + public void setFailedUserId(List failedUserId) { + this.failedUserId = failedUserId; + } + } +} diff --git a/o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/jaxrs/connector/ActionCreate.java b/o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/jaxrs/connector/ActionCreate.java index 038984f125eca9e9d7c8e44668af8ba36a52366a..01031038d94020b044fa503bc0a288f08cae66f1 100644 --- a/o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/jaxrs/connector/ActionCreate.java +++ b/o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/jaxrs/connector/ActionCreate.java @@ -109,6 +109,9 @@ class ActionCreate extends BaseAction { case MessageConnector.CONSUME_CALENDAR: message = this.calendarMessage(effectivePerson, business, cpwi, instant); break; + case MessageConnector.CONSUME_WELINK: + message = this.weLinkMessage(effectivePerson, business, cpwi, instant); + break; default: message = this.defaultMessage(effectivePerson, business, cpwi, consumer, instant); break; @@ -150,6 +153,11 @@ class ActionCreate extends BaseAction { ThisApplication.dingdingConsumeQueue.send(message); } break; + case MessageConnector.CONSUME_WELINK: + if (Config.weLink().getEnable() && Config.weLink().getMessageEnable()) { + ThisApplication.weLinkConsumeQueue.send(message); + } + break; case MessageConnector.CONSUME_ZHENGWUDINGDING: if (Config.zhengwuDingding().getEnable() && Config.zhengwuDingding().getMessageEnable()) { ThisApplication.zhengwuDingdingConsumeQueue.send(message); @@ -234,6 +242,18 @@ class ActionCreate extends BaseAction { return message; } + private Message weLinkMessage(EffectivePerson effectivePerson, Business business, Wi wi, Instant instant) { + Message message = new Message(); + message.setBody(Objects.toString(wi.getBody())); + message.setType(wi.getType()); + message.setPerson(wi.getPerson()); + message.setTitle(wi.getTitle()); + message.setConsumer(MessageConnector.CONSUME_WELINK); + message.setConsumed(false); + message.setInstant(instant.getId()); + return message; + } + private Message zhegnwudingdingMessage(EffectivePerson effectivePerson, Business business, Wi wi, Instant instant) { Message message = new Message(); message.setBody(Objects.toString(wi.getBody()));