فهرست منبع

Welink 消息提示功能完成

fancy 5 سال پیش
والد
کامیت
d145869f1c

+ 26 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/WeLink.java

@@ -37,6 +37,12 @@ public class WeLink extends ConfigObject {
     @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() {
@@ -50,6 +56,8 @@ public class WeLink extends ConfigObject {
     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() {
@@ -60,6 +68,8 @@ public class WeLink extends ConfigObject {
         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";
@@ -211,4 +221,20 @@ public class WeLink extends ConfigObject {
     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;
+    }
 }

+ 50 - 26
o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/WeLinkConsumeQueue.java

@@ -10,13 +10,12 @@ 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.DingdingMessage;
 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.time.DateUtils;
+import org.apache.commons.lang3.StringUtils;
 
 import java.net.URLEncoder;
 import java.util.ArrayList;
@@ -36,31 +35,36 @@ public class WeLinkConsumeQueue extends AbstractQueue<Message> {
 				List<String> list = new ArrayList<>();
 				logger.info("person :" + message.getPerson());
 				//todo 这里 Person.getWeLinkId() 获取不到 改用unique 不知道为啥获取不到
-				list.add(business.organization().person().getObject(message.getPerson()).getUnique());
+				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");
-				m.setMsgTitle(message.getTitle());
-				m.setMsgContent(message.getTitle());
-				m.setMsgOwner(message.getType());
-				m.setUrlType("html");
-				m.setUrlPath("http://www.o2oa.net");
+				//处理消息标题和内容
+				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());
-//
-//
-//				if (needTransferLink(message.getType())) {
-//					String workUrl = getDingdingOpenWorkUrl(message.getBody());
-//					if (workUrl != null && !"".equals(workUrl)) {
-//						m.getMsg().setMsgtype("markdown");
-//						m.getMsg().getMarkdown().setTitle(message.getTitle());
-//						m.getMsg().getMarkdown().setText("["+message.getTitle()+"]("+workUrl+")");
-//					}else {
-//						m.getMsg().getText().setContent(message.getTitle());
-//					}
-//				}else {
-//					m.getMsg().getText().setContent(message.getTitle());
-//				}
 
 				String address = Config.weLink().getOapiAddress() + "/messages/v3/send";
 				logger.info("welink send url: " + address);
@@ -91,13 +95,13 @@ public class WeLinkConsumeQueue extends AbstractQueue<Message> {
 	private String getDingdingOpenWorkUrl(String messageBody) {
 		try {
 			String work = getWorkIdFromBody(messageBody);
-			String o2oaUrl = Config.dingding().getWorkUrl();
+			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.dingding().getMessageRedirectPortal();
+			String messageRedirectPortal = Config.weLink().getMessageRedirectPortal();
 			if (messageRedirectPortal != null && !"".equals(messageRedirectPortal)) {
 				String portal = "portalmobile.html?id="+messageRedirectPortal;
 				portal = URLEncoder.encode(portal, DefaultCharset.name);
@@ -105,7 +109,7 @@ public class WeLinkConsumeQueue extends AbstractQueue<Message> {
 			}
 			workUrl = URLEncoder.encode(workUrl, DefaultCharset.name);
 			logger.info("o2oa workUrl:"+workUrl);
-			o2oaUrl = o2oaUrl + "ddsso.html?redirect=" + workUrl;
+			o2oaUrl = o2oaUrl + "welinksso.html?redirect=" + workUrl;
 			logger.info("o2oa 地址:"+o2oaUrl);
 			return o2oaUrl;
 		}catch (Exception e) {
@@ -138,7 +142,7 @@ public class WeLinkConsumeQueue extends AbstractQueue<Message> {
 	 */
 	private boolean needTransferLink(String messageType) {
 		try {
-			String workUrl = Config.dingding().getWorkUrl();
+			String workUrl = Config.weLink().getWorkUrl();
 			if (workUrl != null && !"".equals(workUrl) && workMessageTypeList().contains(messageType)) {
 				return true;
 			}
@@ -148,6 +152,26 @@ public class WeLinkConsumeQueue extends AbstractQueue<Message> {
 		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<String> workMessageTypeList() {
 		List<String> list = new ArrayList<>();
 		list.add(MessageConnector.TYPE_WORK_TO_WORKCOMPLETED);