Просмотр исходного кода

群发消息增加华为WeLink的类型

fancy 5 лет назад
Родитель
Сommit
f1ffcf9679

+ 1 - 2
o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/WeLinkConsumeQueue.java

@@ -34,8 +34,7 @@ public class WeLinkConsumeQueue extends AbstractQueue<Message> {
 				WeLinkMessage m = new WeLinkMessage();
 				List<String> list = new ArrayList<>();
 				logger.info("person :" + message.getPerson());
-				//todo 这里 Person.getWeLinkId() 获取不到 改用unique 不知道为啥获取不到
-				String unique = business.organization().person().getObject(message.getPerson()).getUnique();
+				String unique = business.organization().person().getObject(message.getPerson()).getWeLinkId();
 				if (StringUtils.isEmpty(unique)) {
 					logger.error(new ExceptionWeLinkMessage("-1", "没有找到对应welink用户id"));
 					return;

+ 68 - 1
o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/jaxrs/mass/ActionCreate.java

@@ -1,7 +1,13 @@
 package com.x.message.assemble.communicate.jaxrs.mass;
 
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
+import com.x.base.core.project.bean.NameValuePair;
+import com.x.base.core.project.config.WeLink;
+import com.x.base.core.project.message.WeLinkMessage;
+import com.x.message.assemble.communicate.WeLinkConsumeQueue;
 import org.apache.commons.lang3.StringUtils;
 
 import com.google.gson.JsonElement;
@@ -48,7 +54,7 @@ class ActionCreate extends BaseAction {
 				throw new ExceptionEmptyBody();
 			}
 			if ((!Config.qiyeweixin().getEnable()) && (!Config.dingding().getEnable())
-					&& (!Config.zhengwuDingding().getEnable())) {
+					&& (!Config.zhengwuDingding().getEnable()) && (!Config.weLink().getEnable())) {
 				throw new ExceptionDisable();
 			}
 			Mass mass = Wi.copier.copy(wi);
@@ -70,6 +76,9 @@ class ActionCreate extends BaseAction {
 			} else if (Config.zhengwuDingding().getEnable()) {
 				this.zhengwuDingding(business, mass.getBody(), list);
 				mass.setType(Mass.TYPE_ZHENGWUDINGDING);
+			} else if (Config.weLink().getEnable() && Config.weLink().getMessageEnable()) {
+				this.welink(business, mass.getBody(), list);
+				mass.setType(Mass.TYPE_WELINK);
 			}
 			emc.beginTransaction(Mass.class);
 			emc.persist(mass, CheckPersistType.all);
@@ -136,6 +145,64 @@ class ActionCreate extends BaseAction {
 		}
 	}
 
+	private void welink(Business business, String body, List<List<String>> list) throws Exception {
+		for (List<String> os : list) {
+			List<String> ids = ListTools.extractProperty(business.organization().person().listObject(os),
+					Person.weLinkId_FIELDNAME, String.class, true, true);
+			WeLinkMessage m = new WeLinkMessage();
+			m.setToUserList(ids);
+			m.setMsgRange("0");
+			m.setMsgTitle("消息");
+			m.setMsgContent(body);
+			Date now = new Date();
+			m.setCreateTime(now.getTime()+"");
+			logger.info("welink send body: " + m.toString());
+
+			String address = Config.weLink().getOapiAddress() + "/messages/v3/send";
+			logger.info("welink send url: " + address);
+			List<NameValuePair> 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())) {
+				throw new ExceptionWeLinkMessage(resp.getCode(), resp.getMessage());
+			}
+		}
+
+
+	}
+
+
+	public static class WeLinkMessageResp {
+
+		private String code;
+		private String message;
+		private List<String> 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<String> getFailedUserId() {
+			return failedUserId;
+		}
+
+		public void setFailedUserId(List<String> failedUserId) {
+			this.failedUserId = failedUserId;
+		}
+	}
+
 	public static class ZhengwuDingdingMessageResp {
 
 		private Integer retCode;

+ 2 - 0
o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/jaxrs/mass/ActionEnableType.java

@@ -33,6 +33,8 @@ class ActionEnableType extends BaseAction {
 				wo.setValue(Mass.TYPE_DINGDING);
 			} else if (Config.zhengwuDingding().getEnable()) {
 				wo.setValue(Mass.TYPE_ZHENGWUDINGDING);
+			} else if (Config.weLink().getEnable() && Config.weLink().getMessageEnable()) {
+				wo.setValue(Mass.TYPE_WELINK);
 			} else {
 				wo.setValue("");
 			}

+ 1 - 1
o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/jaxrs/mass/ExceptionDisable.java

@@ -7,6 +7,6 @@ class ExceptionDisable extends PromptException {
 	private static final long serialVersionUID = 4132300948670472899L;
 
 	ExceptionDisable() {
-		super("企业微信,钉钉,政务钉钉都没有启用.");
+		super("华为WeLink, 企业微信, 钉钉, 政务钉钉都没有启用.");
 	}
 }

+ 13 - 0
o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/jaxrs/mass/ExceptionWeLinkMessage.java

@@ -0,0 +1,13 @@
+package com.x.message.assemble.communicate.jaxrs.mass;
+
+import com.x.base.core.project.exception.PromptException;
+
+class ExceptionWeLinkMessage extends PromptException {
+
+
+	private static final long serialVersionUID = 2459165718535980205L;
+
+	ExceptionWeLinkMessage(String retCode, String retMessage) {
+		super("发送华为WeLink消息失败,错误代码:{},错误消息:{}.", retCode, retMessage);
+	}
+}

+ 1 - 0
o2server/x_message_core_entity/src/main/java/com/x/message/core/entity/Mass.java

@@ -65,6 +65,7 @@ public class Mass extends SliceJpaObject {
 	public static final String TYPE_QIYEWEIXIN = "qiyeweixin";
 	public static final String TYPE_DINGDING = "dingding";
 	public static final String TYPE_ZHENGWUDINGDING = "zhengwuDingding";
+	public static final String TYPE_WELINK = "welink";
 
 	public static final String creatorPerson_FIELDNAME = "creatorPerson";
 	@FieldDescribe("创建人,可能为空,如果由系统创建。")

+ 1 - 0
o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/person/BaseAction.java

@@ -68,6 +68,7 @@ class BaseAction extends StandardJaxrsAction {
 		t.setQiyeweixinId(person.getQiyeweixinId());
 		t.setDingdingId(person.getDingdingId());
 		t.setZhengwuDingdingId(person.getZhengwuDingdingId());
+		t.setWeLinkId(person.getWeLinkId());
 		return t;
 
 	}